In this example, We have share how to run Rake tasks from within Rake tasks? You want invoke not execute. A little excerpt from my own code showing how to pass variables:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 |
Alternatively, you can make the task depend upon another task as I have done above with :create depending upon clients:creation:checks.
Just to clarify, a namespace is for grouping tasks, so you must actually define the tasks within the namespace as I have above. You can’t simply call tasks from within a namespace.
So your code above should be:
1 2 3 4 5 6 7 | 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 |
If you like this question & answer and want to contribute, then write your question & answer and email to freewebmentor[@]gmail.com. Your question and answer will appear on FreeWebMentor.com and help other developers.