あなたはしたく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