2011-08-11 17 views
11

En mi receta Capistrano, tengo un espacio de nombres con diferentes tareas:¿Cómo puedo desencadenar una tarea de Capistrano desde un espacio de nombres diferente de: implementar?

namespace :mystuff do 
    task :mysetup do; ... end; 
    task :mytask1 do; ... end; 
    task :mytask2 do; ... end; 
    task :mycleanup do; ... end; 
end

Estas tareas personalizadas se activan a través de líneas de este tipo en la parte superior de mi receta:

after "deploy", "mystuff:mycleanup" 

Quiero ejecutar una tarea capistrano normal desde dentro de mi espacio de nombres. Por ejemplo, quiero disparar automáticamente la tarea normal de la limpieza si un cierto número de carpetas de liberación han acumulado:

task :mycleanup do; 
    if releases.length > 50 
    logger.info "Too many releases, runing deploy:cleanup." 
    deploy:cleanup #***THIS DOESN'T WORK*** 
    end 
end; 

Desafortunadamente llamando deploy:cleanup no funciona desde dentro de mi espacio de nombres. ¿Cómo puedo ejecutar deploy:cleanup?

Respuesta

16

Aha, la sintaxis correcta es utilizar un ., no un :. es decir, deploy.cleanup, no deploy:cleanup.

Esto funciona:

task :mycleanup do; 
    if releases.length > 50 
    logger.info "Too many releases, runing deploy:cleanup." 
    deploy.cleanup 
    end 
end; 
Cuestiones relacionadas