2009-10-08 9 views
12

私はdeploy:migrateタスクを実行する前にいくつかのプロセスを停止したいと思います。私は、既存のコードをコピーし、タスクの始めと終わりに停止/開始ステップを追加することによって、deploy:migrateタスクを再定義できることを知っています。capistranoタスクにいくつかのステップを追加しますか?

私のバージョンのタスクでデフォルトのdeploy:migrateタスクからコードをコピーしないようにする方法があるのでしょうか。同じ名前の新しいタスクを定義するときに、既存のdeploy:migrateタスクを参照する方法はありますか?

答えて

21

deploy:migrateを再定義するのではなく、その前または後のフックを定義する必要があります。

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

ありがとう、それは私が必要としていたものです – Readonly

0
:以下のいずれかを実行して、前または deploy:migrateタスクの後に実行されるように

task :custom_name do 
    # whatever you need to do 
end 

をしてから、この新しいタスクを設定します。まず、スタッフあなたがする必要がない新しいタスクを作成します

私の要件では、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 
関連する問題