【发布时间】:2023-04-02 18:56:01
【问题描述】:
我在 .rb 文件中有一些 Ruby 代码,我尝试使用 Automator 而非命令行来运行这些代码。这是代码示例(文件名为“filelines_revise.rb”):
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
当我使用命令行命令“ruby /Desktop/filelines_revise/filelines_revise.rb”运行此代码时,代码运行良好。它找到原始的 .txt 文件,读取每一行,按照代码的指示更改文件,然后使用修改后的行创建一个新文件。
当我尝试将其作为工作流或应用程序放入 Automator 时,我将运行 Shell 脚本放入我的流程中,使用 /bin/bash 和 Pass 输入:到 stdin,然后命令“ruby /Desktop/filelines_revise /filelines_revise.rb”。当我去运行脚本时,我得到一个错误读数:
Desktop/filelines_revise/filelines_revise.rb:18 语法错误,意外 '.',期待 Kend
第 18 行是上面代码中列出的第二个 .gsub ".gsub(/ES/, ", east side")"。
Automator 是否有可能没有像命令行那样使用我的 Ruby 1.9.3?也许我应该以不同的方式解决这个问题?提前致谢。
【问题讨论】:
-
"第 18 行是上面代码中列出的第二个 .gsub
.gsub(/ ES /, ", east side")" 是的,如果您关闭它(将其与第一个 gsub 放在同一行),是否可以解决问题? -
@matt 它在我运行服务而不是应用程序时修复它。一旦我这样做,它告诉我找不到文件。我将使用一项服务,但会保持打开状态,因为我希望有一天有一个应用程序。
标签: ruby-1.9.3 automator