运行 来自 rake 任务的两个 ruby 脚本
Run two ruby scripts from rake task
所以这是一个简单的抽取任务:
task :map_reduce do
puts 'Running map reduce scripts...'
ruby "#{PADRINO_ROOT}/map_reduce/raw_visits_map.rb '03-08-2016' 90" && ruby "#{PADRINO_ROOT}/map_reduce/raw_visits_reducer.rb"
end
第一个脚本在 STDOUT 中输出结果,以供所谓的 'reducer' 进一步读取。
在终端中,我可以 运行 这两个脚本,例如:
ruby first_script.rb param1 param2 | ruby second_script.rb
所以第二个脚本可以像
一样从 STDOUT 读取
res = ARGF
但是我怎样才能在 rake 任务中排列 2 个执行?
我怎么错误地尝试了它不起作用。
也许您应该使用反引号或 %x
语法。
另请参阅以下问题的答案:Ruby, Difference between exec, system and %x() or Backticks
直接将 ruby class 请求到您的 rake 任务中可能更容易,但是如果您想 运行 来自 rake 任务的脚本,您可以 运行 Ruby 中使用反引号的任何 shell 代码,如下所示:
`ruby first_script.rb param1 param2 | ruby second_script.rb`
所以这是一个简单的抽取任务:
task :map_reduce do
puts 'Running map reduce scripts...'
ruby "#{PADRINO_ROOT}/map_reduce/raw_visits_map.rb '03-08-2016' 90" && ruby "#{PADRINO_ROOT}/map_reduce/raw_visits_reducer.rb"
end
第一个脚本在 STDOUT 中输出结果,以供所谓的 'reducer' 进一步读取。 在终端中,我可以 运行 这两个脚本,例如:
ruby first_script.rb param1 param2 | ruby second_script.rb
所以第二个脚本可以像
一样从 STDOUT 读取res = ARGF
但是我怎样才能在 rake 任务中排列 2 个执行?
我怎么错误地尝试了它不起作用。
也许您应该使用反引号或 %x
语法。
另请参阅以下问题的答案:Ruby, Difference between exec, system and %x() or Backticks
直接将 ruby class 请求到您的 rake 任务中可能更容易,但是如果您想 运行 来自 rake 任务的脚本,您可以 运行 Ruby 中使用反引号的任何 shell 代码,如下所示:
`ruby first_script.rb param1 param2 | ruby second_script.rb`