如何将环境变量传递给从另一个Rake任务调用的Rake任务?

时间:2014-02-03 18:48:22

标签: ruby-on-rails ruby rake

我从另一个Rake任务调用了三个Rake任务。第一个Rake任务要求在执行环境变量之前设置它。

以下工作,但这意味着我丢失了任务的所有输出,这是至关重要的:

namespace :deploy do

  task :staging => :environment do
    `EXAMPLE=something rake db:rebuild`
    Rake::Task["rake envs:push:staging"].invoke
    Rake::Task["rake app:push:staging"].invoke
  end

end

如何使用环境变量调用第一个任务并将其输出显示到终端?

2 个答案:

答案 0 :(得分:21)

ENV['EXAMPLE'] = 'something'
Rake::Task['db:rebuild'].invoke

答案 1 :(得分:3)

使用system代替后退:

system("EXAMPLE=something rake db:rebuild")