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

时间:2011-08-11 06:08:12

标签: 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"

我想从命名空间内执行普通的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

1 个答案:

答案 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;