我有一个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