如何将参数传递给使用Rake :: Task调用的rake任务

时间:2012-02-24 17:52:52

标签: ruby-on-rails

这是我的佣金任务

task :lab => :enviroment do 
  Rake::Task["db:rollback"].invoke('STEP=5')
end

这不是我想要的。我想要的是

rake db:rollback STEP=5

我在ruby 1.9.2上使用Rails 3.2.1。

在命令行中我想执行

rake lab

真实情况要复杂得多,但这就是问题。

3 个答案:

答案 0 :(得分:4)

task :lab => :enviroment do 
  ENV['STEP'] ||= 5
  Rake::Task["db:rollback"].invoke
end

答案 1 :(得分:0)

通过在rake命令中指定键/值对,可以将选项传递给rake:

rake options:show opt1=value1

然后,这些命令行选项会自动设置为可在rake任务中访问的环境变量:

namespace :options do

  desc "Show how to read in command line options"
  task :show do
    p "option1 is #{ENV['opt1']}"
  end

end

答案 2 :(得分:-1)

将此作为环境变量传递可能是您最好的选择。尝试:

task :lab => :enviroment do 
  Rake::Task["db:rollback"].invoke(ENV['STEP'])
end

rake db:rollback STEP=5