从rake任务运行两个ruby脚本

时间:2016-09-20 10:52:27

标签: ruby-on-rails ruby padrino

所以这是一个简单的rake任务:

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次执行呢?

我是如何错误地尝试它不起作用。

2 个答案:

答案 0 :(得分:2)

将ruby类直接用于rake任务可能更容易,但如果你想从rake任务运行脚本,你可以使用反引号在Ruby中运行任何shell代码,如下所示:

`ruby first_script.rb param1 param2 | ruby second_script.rb`

答案 1 :(得分:1)

也许你应该使用反引号或%x语法。

另请参阅:Ruby, Difference between exec, system and %x() or Backticks

的答案