2009-10-08 17 views
12

我想在運行deploy:migrate任務之前停止一些進程。我知道我可以通過複製現有代碼並在任務的開始和結束處添加停止/開始步驟來重新定義deploy:migrate任務。你如何給capistrano任務添加一些步驟?

我想知道是否有辦法避免從我的任務版本中的默認部署:遷移任務中複製代碼。有沒有辦法在定義一個同名的新任務時引用現有的deploy:migrate任務?

回答

21

而不是重新定義deploy:migrate,你應該爲它定義一個之前或之後的鉤子。首先,創建一個具有東西,你需要做一個新的任務:

before "deploy:migrate", :custom_name 
after "deploy:migrate", :custom_name 
+0

謝謝,這正是我所需要的 – Readonly 2009-10-12 21:42:10

0

task :custom_name do 
    # whatever you need to do 
end 

然後設置這個新的任務將通過執行下列操作之一之前或deploy:migrate任務後運行

對於我的要求,我重寫deploy.rb中的現有任務

namespace :deploy do 
    # to Override deploy:migrate task 
    task :precompile, :roles => :app, :except => { :no_release => true } do 
    run "your modified commands" 
    end 
    # to override deploy:assets:precompile task 
    namespace :assets do 
    task :precompile, :roles => :app, :except => { :no_release => true } do 
     run "your modified commands" 
    end 
    end 
end 
相關問題