ruby-on-rails-3mina

how to run a custom rake task from mina deployment script


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?


Solution

  • 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