2009-10-08 6 views
12

Me gustaría detener algunos procesos antes de ejecutar la tarea deploy: migrate. Sé que puedo redefinir la tarea deploy: migrate copiando el código existente y agregando los pasos de detención/inicio al comienzo y al final de la tarea.¿Cómo agregas algunos pasos a una tarea capistrano?

Me pregunto si hay una manera de evitar copiar el código de la tarea predeterminada deploy: migrate en mi versión de la tarea. ¿Hay alguna forma de referirse a la implementación existente: migrar tarea al definir una nueva tarea del mismo nombre?

Respuesta

21

En lugar de redefinir deploy:migrate, debe definir un gancho antes o después para él. En primer lugar, crear una nueva tarea que hace las cosas que tiene que hacer:

task :custom_name do 
    # whatever you need to do 
end 

y después fijar esta nueva tarea se ejecute antes o después de la tarea deploy:migrate mediante uno de los siguientes:

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

Gracias, eso es exactamente lo que necesitaba – Readonly

0

Para mis requisitos, anulo la tarea existente en 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 
Cuestiones relacionadas