问题 如何从不同的命名空间触发Capistrano任务,而不是:deploy?


在我的capistrano配方中,我有一个具有不同任务的命名空间:

命名空间:mystuff
  任务:mysetup做; ... 结束;
  任务:mytask1做; ... 结束;
  任务:mytask2做; ... 结束;
  任务:mycleanup做; ... 结束;
结束

这些自定义任务是通过我的食谱顶部的这样的行触发的:

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


4344
2017-08-11 06:08


起源



答案:


啊哈,正确的语法是用一个 .不是 :。即 deploy.cleanup不,不 deploy:cleanup

这有效:

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

16
2017-08-11 06:12