У меня есть код Ruby в файле .rb, который я пытаюсь запустить с помощью Automator в отличие от командной строки. Вот пример кода (имя файла «filelines_revise.rb»):Mac Automator (OS 10.7) не читает Ruby 1.9.3?
lines = IO.readlines('filelines_before_CAP.txt').map do |line|
array = line.split.each { |i| i.capitalize! }
if array.include?("Ws")
array.delete("Ws")
array[-1,0] = "Ws"
end
if array.include?("Es")
array.delete("Es")
array[-1,0] = "Es"
end
array_2 = array.join(" ")
array_2.gsub(/ Ws /, ", west side")
.gsub(/ ES /, ", east side")
end
File.open('filelines_after_CAP.txt', 'w') do |file|
file.puts lines
end
Когда я запускаю этот код, используя команду командной строки «рубин /Desktop/filelines_revise/filelines_revise.rb» и код работает нормально , Он находит исходный .txt-файл, читает каждую строку, меняет файл по мере того, как код диктует, а затем создает новый файл с пересмотренными строками.
Когда я пытаюсь поместить это в Automator как рабочий процесс или приложение, я поместил Run Shell Script в свой поток, используя/bin/bash с входом Pass: to stdin, затем команду «ruby/Desktop/filelines_revise/filelines_revise.rb». Когда я иду, чтобы запустить сценарий, я получаю ошибка чтения:
Desktop/filelines_revise/filelines_revise.rb: '' 18 синтаксическая ошибка, неожиданный, ожидая Kend
линия 18 является вторым .gsub».gsub (/ ES /, ", восточная сторона") ", перечисленные в коде выше.
Возможно ли, что Automator не использует мой Ruby 1.9.3 в командной строке? Может быть, мне следовало бы поступить иначе? Заранее спасибо.
«Строка 18 - это второй .gsub' .gsub (/ ES /, «, восточная сторона») ', указанный в приведенном выше коде« Да, и если вы закроете это (поместите его в одну строку с первой gsub) это исправляет? – matt
@matt он исправляет это, когда я запускаю Сервис, но не приложение. Как только я это сделал, он сказал, что не может найти файл. Я собираюсь с Сервисом, но остаюсь открытым, поскольку однажды у меня будет приложение. – jmitchell1009