ご希望の場合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
ありがとうございます!それは呼び出されました! – Amir
なぜ 'invoke'を使うのですか' execute'は 'execute(client)'を意味します –
@AMICMING - 'execute'はタスクだけを実行し、' invoke'は依存関係を実行します。さらに、必要な場合にのみタスクを実行します。 *注:これは8年前のケースでした。私は正直なところそれが変わったのかどうかはわかりません。* http://chrisroos.co.uk/blog/2007-12-06-ruby-rake-invoke-vs-execute –