苹果的Automator(OS 10.7)不是读书的Ruby 1.9.3?(Mac Automato

2019-09-01 19:00发布

我在我试图使用Automator运行,而不是通过命令行的.rb文件的一些Ruby代码。 下面是代码的样本(文件名是“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

当我使用命令行命令“红宝石/Desktop/filelines_revise/filelines_revise.rb”运行这段代码和代码运行正常。 它发现原来的.txt文件,读取每一行,改变了文件的代码使然,然后创建与修改后的行的新文件。

当我尝试投入的Automator这无论是作为工作流或应用程序,我把运行shell脚本我的流程,使用/斌/庆典,合格输入:以标准输入,然后命令“红宝石/桌面/ filelines_revise / filelines_revise。 RB”。 当我去运行该脚本,我得到一个错误阅读:

桌面/ filelines_revise / filelines_revise.rb:18语法错误,意外,预计DMOZ目录 ''

第18行是第二.gsub“.gsub(/ ES /”,东侧‘)’在上面的代码中列出。

Automator的是不是用我的Ruby 1.9.3作为命令行所做的是这可能吗? 也许我应该会对此有所不同? 提前致谢。

Answer 1:

你的Ruby版本是如何确定的? 我敢打赌,Automator的什么都不知道呢。 这可能是在运行内置的Ruby 1.8.7。 您可以方便地查看通过检查RUBY_VERSION在脚本的过程。

那么问题是,对于双clickables(类似的Automator)的shell环境是不一样的,作为终端的shell环境(使用你.bash_profile )。

BBEdit中有同样的问题,直到10.5版本,顺便说一句。 它需要一个特别的努力,为双点击应用拿起终端shell环境,和大多数应用程序不要做这样的努力。

编辑:我在Automator的检查了一下,发现如果你运行你运行Shell脚本动作字面上输入shell脚本,你必须选择弹出来/usr/bin/ruby 。 但当然,我的红宝石是不是在Ruby /usr/bin/ruby/usr/bin/ruby是1.8.7; 这是我希望使用红宝石。 而你不能提供一个家当线!

所以我设置了弹出窗口/bin/bash/跑这个脚本:

/usr/bin/env ruby /Users/matt/Desktop/test.rb

其中test.rb写着:

puts RUBY_VERSION

运行中的Automator,我还是得到了“1.8.7”。 我也试过它为应用程序和服务; 同样的结果。 所以我不认为你可以永远得到的Automator使用任何东西,但内置的Ruby 1.8.7,而无需直接指向你想要的红宝石; 它不会把它捡起来从shell终端的方式做。



文章来源: Mac Automator (OS 10.7) not reading Ruby 1.9.3?