Sie möchten invoke
nicht execute
. Ein kleiner Auszug aus meinem eigenen Code zeigt, wie Variablen zu übergeben:
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
Alternativ können Sie die Aufgabe auf einer anderen Aufgabe abhängig machen, wie ich oben getan haben, mit :create
je nach clients:creation:checks
.
Nur um zu verdeutlichen, ein Namespace ist zum Gruppieren von Aufgaben, so dass Sie tatsächlich die Aufgaben innerhalb des Namespace wie ich oben definieren müssen. Sie können Tasks nicht einfach innerhalb eines Namespaces aufrufen.
so über den Code sollte sein:
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
Vielen Dank! Es wurde aufgerufen! – Amir
Warum 'invoke', kann ich' execute' verwenden, bedeutet 'execute (client)' –
@AMICMING - 'execute' wird nur die Aufgabe ausführen, während' invoke' alle Abhängigkeiten ausführt. Darüber hinaus wird die Aufgabe nur bei Bedarf ausgeführt. * Hinweis: Dies war der Fall vor 8 Jahren; Ich weiß ehrlich gesagt nicht, ob es sich seitdem geändert hat. * Http://chrisroos.co.uk/blog/2007-12-06-ruby-rake-invoke-vs-execute –