namespace :deploy do
task :staging do deploy('develop', 'heroku-staging', 'STAGING') end task :production do deploy('master', 'heroku', 'PRODUCTION') end def deploy(branch_name, remote_name, deployment_name) puts "" puts "===========================================================================" puts "= =" puts "= DEPLOY'EM - A SIMPLE HEROKU DEPLOYMENT TOOL =" puts "= =" puts "===========================================================================" puts "" puts "" puts "You are deploying #{branch_name} branch to the #{deployment_name} server..." puts "Note: This is based on a git remote named '#{remote_name}'" puts "" sure = false if deployment_name == 'PRODUCTION' puts "You are deploying to #{deployment_name}. Are you sure? [y/n]" sure = STDIN.gets.strip == 'y' else sure = true end if sure `git push #{remote_name} #{branch_name}:master` puts "" puts "Would you like to run migrations? [y/n]" puts "" puts "" if STDIN.gets.strip == 'y' puts "...running database migrations..." output = `heroku run rake db:migrate -r #{remote_name}` puts output puts "...database migrations complete..." else puts "...database migrations not run..." end puts "...Complete." else puts "...deploy aborted." end puts "" end
end