在我的capistrano配方中,我有一个具有不同任务的命名空间:
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
?
答案 0 :(得分:16)
啊哈,正确的语法是使用.
,而不是:
。即deploy.cleanup
,没有deploy:cleanup
。
这有效:
task :mycleanup do;
if releases.length > 50
logger.info "Too many releases, runing deploy:cleanup."
deploy.cleanup
end
end;