I've seen from this (http://stackoverflow.com/questions/1890709/combining-many-rake-tasks-into-one-rake-task) that you can combine rake tasks like this:
desc 'This rebuilds development db'
task :rebuild_dev => ["db:drop", "db:create", "db:migrate", "db:load"]
However when I try doing that to my local app to combine relatively simple rake tasks, each only running shell commands, it seems that it only executes whatever is the first in the array ['heroku:push', 'heroku:migrate', 'heroku:restart']
.
Here's the code:
desc 'Push to heroku production, db:migrate, and restart app'
task :deploy_production => ['heroku:push', 'heroku:migrate', 'heroku:restart']
namespace :heroku do
task :push do
puts 'Deploying app to Heroku...'
exec 'git push heroku master'
end
task :migrate do
puts 'Running database migrations ...'
exec 'heroku run rake db:migrate'
end
task :restart do
puts 'Restarting app servers ...'
exec 'heroku restart'
end
end
and by the way, in case you need it, here's the version of rake:
$ gem list | grep rake
rake (0.9.2.2)