Search code examples
ruby-on-railsrubypadrino

Run two ruby scripts from rake task


So this is a simple 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

The first script outputs the result in STDOUT to be further read by the so called 'reducer'. In the terminal, I am able to run those two scripts like:

ruby first_script.rb param1 param2 | ruby second_script.rb

So the second script can read from STDOUT like

res = ARGF

But how can I line up the 2 executions inside that rake task?

How I wrongfully tried it's not working.


Solution

  • It might be easier to require the ruby class directly into your rake task, but if you want to run a script from a rake task you can run any shell code in Ruby using backticks, like this:

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