你invoke
不想execute
。我自己的代码的一小段摘录展示了如何传递变量:
namespace :clients do
task :create, [:client] => ["clients:creation:checks"] do |t, args|
Rake::Task["clients:creation:git"].invoke(client, password)
Rake::Task["server:virtualhost:create"].invoke(client)
Rake::Task["server:virtualhost:enable"].invoke(client)
Rake::Task["server:reload"].invoke
Rake::Task["db:roles:create"].invoke(client, password)
Rake::Task["db:create"].invoke(client, client)
Rake::Task["db:migrate"].invoke(client)
end
end
或者,您可以使任务依赖于另一个任务,就像我在上面所做的那样,:create
取决于clients:creation:checks
.
澄清一下,命名空间用于对任务进行分组,因此您必须像我上面所说的那样在命名空间中实际定义任务。您不能简单地从命名空间中调用任务。
所以你上面的代码应该是:
desc 'This rebuilds development db'
task :rebuild_dev do
Rake::Task["db:drop"].invoke
Rake::Task["db:create"].invoke
Rake::Task["db:migrate"].invoke
Rake::Task["db:load"].invoke
end