Reputation: 6574
i am using mina for deploying my application. I specify the env(staging/production) where i want to deploy the app.
mina deploy on=staging --verbose
i have saved the app env in deploy.rb as
app_env = ENV['on'] || 'staging'
i have a rake task that takes production database backup. As of now, i run that rake task explicitly on my console as
bundle exec rake deploy:backup_prod_db --trace
I want to run that task on every production deployment. How do i do it?
Upvotes: 3
Views: 2511
Reputation: 8240
The mina have special syntax for this. From mina console help page:
Server tasks:
...
mina rails[arguments] # Execute a Rails command in the current deploy
mina rake[arguments] # Execute a Rake command in the current deploy
mina run[command] # Runs a command in the server
...
So from command line:
$ mina 'rake[deploy:backup_db]'
Or define task in mina deploy config file (config/deploy.rb
):
task :backup_db do
invoke :'rake[deploy:backup_db]'
end
Upvotes: 4
Reputation: 6574
got it working. the changes are
...
app_env = ENV['on'] || 'staging'
...
desc "Deploys the current version to the server."
task :deploy => :environment do
deploy do
# Put things that will set up an empty directory into a fully set-up
# instance of your project.
invoke 'production_backup' if app_env == 'production'
invoke :'git:clone'
invoke :'deploy:link_shared_paths'
invoke :'bundle:install'
invoke :'rails:assets_precompile'
to :launch do
invoke 'application:restart'
end
end
end
task :production_backup do
queue "cd #{deploy_to}/current ; bundle exec rake deploy:backup_db"
end
Upvotes: 2