所以这是一个简单的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次执行呢?
我是如何错误地尝试它不起作用。
答案 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
的答案