选项和依赖项需要位于数组内部:
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"}
注意:变量
task
是任务对象,除非您了解/关心Rake内部 struct ,否则没有多大帮助.
RAILS NOTE:
如果从Rails运行任务,最好通过添加
=> [:environment]
来预加载环境,这是设置dependent个任务的一种方式.
task :work, [:option, :foo, :bar] => [:environment] do |task, args|
puts "work", args
end