как запустить пользовательскую задачу rake из сценария развертывания mina

я использую мину для развертывания моего приложения. Я указываю env (staging/production), где я хочу развернуть приложение.

mina deploy on=staging --verbose

я сохранил приложение env в deploy.rb как

app_env = ENV['on'] || 'staging'

у меня есть задача rake, которая выполняет резервное копирование производственной базы данных. На данный момент я запускаю эту задачу rake явно на своей консоли как

bundle exec rake deploy:backup_prod_db --trace

Я хочу запускать эту задачу при каждом производственном развертывании. Как мне это сделать?


person prasad.surase    schedule 10.12.2013    source источник


Ответы (2)


Мины имеют для этого специальный синтаксис. Со страницы справки консоли mina:

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
  ...

Итак, из командной строки:

$ mina 'rake[deploy:backup_db]'

Или определите задачу в конфигурационном файле mina Deploy (config/deploy.rb):

task :backup_db do
  invoke :'rake[deploy:backup_db]'
end
person oklas    schedule 16.12.2016

получил это работает. изменения

...
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
person prasad.surase    schedule 11.12.2013