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

Tom*_*Tom 11 ruby deployment capistrano

在我的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"
Run Code Online (Sandbox Code Playgroud)

我想从命名空间内执行一个普通的capistrano任务.例如,如果已经建立了一定数量的版本文件夹,我想自动触发正常的清理任务:

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

不幸的是,调用deploy:cleanup在我的命名空间内不起作用.我该怎么deploy:cleanup办?

Tom*_*Tom 16

啊哈,正确的语法是使用a .,而不是a :.即deploy.cleanup,没有deploy:cleanup.

这有效:

task :mycleanup do;
  if releases.length > 50
    logger.info "Too many releases, runing deploy:cleanup."
    deploy.cleanup
  end
end;
Run Code Online (Sandbox Code Playgroud)