如何以有效的方式将参数传递给Rake任务调用?

时间:2014-01-07 21:02:02

标签: ruby-on-rails-3 rake

我正在使用Seed Dump gem将一些种子数据转储到db/seeds.rb。除此之外,我需要在转储这三个表后运行一行任务。

我调用db:seed:dump的方式是:

zeus rake db:seed:dump MODELS=Standard,Category,Brand

所以我试图在lib/tasks/database.rake

中覆盖如下
namespace :db do  

  namespace :seed do
    task(:dump_setup => :environment) do
      Rake::Task["db:seed:dump"].invoke(:models => "Standard,Category,Brand")
      puts "did it."
    end
  end

end

我也尝试过:

namespace :db do  

  namespace :seed do
    task(:dump_setup => :environment) do
      Rake::Task["db:seed:dump"].invoke(:models => ['Standard','Category','Brand'])
      puts "did it."
    end
  end

end

我只是将“做到了”作为占位符,直到我开始工作。

该调用 正在运行。它从我的数据库中倾倒了数百兆字节。倾倒一切。

我上面所做的工作是基于我在这里找到的最受欢迎的答案。不确定它为什么会起作用。

1 个答案:

答案 0 :(得分:2)

zeus rake db:seed:dump MODELS=Standard,Category,Brand

MODELS是一个环境变量。在调用依赖任务之前,需要通过ENV设置环境变量:

ENV['MODELS'] = 'Standard,Category,Brand`