运行 来自 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`