微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby – 如何在Capistrano中为不同的角色定义相同的任务?

我正在使用Capistrano来处理我的部署,我的设置有两个不同的角色:Web和:处理.他们都具有通常的部署任务,但是对于两种类型的服务器,重启任务需要不同.

所以我的第一次尝试是这样的:

task :restart,:roles => :web do
    run "... web related restart stuff ..."
end

task :restart,:roles => :processing do
    run "... processing related restart stuff ..."
end

哪个不起作用,因为第二个:restart(for:processing role)替换第一个:restart(对于:web角色),而web:restart不会发生.

快速浏览一下,看看是否可以根据服务器在运行任务时可能处于哪个角色(或角色)来编写条件代码,但是没有任何文档在那里.有任何想法吗?

解决方法

你应该使用命名空间:
namespace :web do
  desc "Restart web servers"
  task :restart,:roles => :web do
    # Restart Magic Here
  end
end

namespace :process do
  desc "Restart process servers"
  task :restart,:roles => :process do
    # Restart magic here
  end
end

# Optionally:
task :restart do
  web.restart
  process.restart
end

这就是你想要的,我想!

另外,要在命令行上使用这些,你可以使用

$cap <stage>           # (if using multistage)
$cap web:restart       # Restarts web servers
$cap process:restart   # Restarts process servers
$cap restart           # Restarts both process and web servers

(来源:我是Capistrano维护者.)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐