2013-12-10 1 views
2

내 응용 프로그램을 배포하는 데 mina를 사용하고 있습니다. 내가 env (준비/생산) 어디 애플 리케이션을 배포하려는 지정합니다.mina 배포 스크립트에서 사용자 정의 rake 작업을 실행하는 방법

mina deploy on=staging --verbose 

은 내가 프로덕션 데이터베이스 백업을 취하는 레이크 작업을

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

로 deploy.rb에서 응용 프로그램 ENV를 저장했습니다. 지금 내 갈퀴 작업을 내 콘솔에서 실행합니다.

bundle exec rake deploy:backup_prod_db --trace 

모든 작업 환경에서이 작업을 실행하고 싶습니다. 어떻게해야합니까?

답변

1

입니다. 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]' 

또는 배포 미나에서 작업을 정의하는 설정 파일 (config/deploy.rb) :

task :backup_db do 
    invoke :'rake[deploy:backup_db]' 
end 
미나 콘솔 도움말 페이지에서
0

변경 사항은

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