我有一个rake任务,需要在多个数据库中插入一个值。

我想将此值从命令行或另一个rake任务传递到rake任务中。

我怎样才能做到这一点?

最佳答案

选项和依赖项必须在数组内部:

namespace :thing do
  desc "it does a thing"
  task :work, [:option, :foo, :bar] do |task, args|
    puts "work", args
  end

  task :another, [:option, :foo, :bar] do |task, args|
    puts "another #{args}"
    Rake::Task["thing:work"].invoke(args[:option], args[:foo], args[:bar])
    # or splat the args
    # Rake::Task["thing:work"].invoke(*args)
  end

end
然后
rake thing:work[1,2,3]
=> work: {:option=>"1", :foo=>"2", :bar=>"3"}

rake thing:another[1,2,3]
=> another {:option=>"1", :foo=>"2", :bar=>"3"}
=> work: {:option=>"1", :foo=>"2", :bar=>"3"}

RAILS注意:
  task :work, [:option, :foo, :bar] => [:environment] do |task, args|
    puts "work", args
  end

10-07 16:33
查看更多