2011-08-11 67 views
11

在我Capistrano的食譜,我有不同的任務命名空間:如何從不同的命名空間觸發Capistrano任務:deploy?

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

這些定製的任務是在我的食譜頂部通過這樣的線觸發:

after "deploy", "mystuff:mycleanup" 

我想執行一個正常的capistrano任務來自我的名字空間。例如,我想自動觸發正常的清除任務,如果發佈文件夾一定數量的已經建立了:

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

不幸的是調用deploy:cleanup不會從我的命名空間內工作。我如何執行deploy:cleanup

回答

16

啊哈,正確的語法是使用.而不是:。即deploy.cleanup,沒有deploy:cleanup

這工作:

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