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

前端之家收集整理的这篇文章主要介绍了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维护者.)

猜你在找的Ruby相关文章