Ruby Capistrano:使用角色创建任务无效
我尝试创建具有不同角色的任务:Ruby Capistrano:使用角色创建任务无效,ruby,capistrano,Ruby,Capistrano,我尝试创建具有不同角色的任务: namespace :foo do task :mytasks, :roles => [:a, :b,] do task_a task_b end task :task_a, :roles => :a do run 'echo A' end task :task_b, :roles => :b do run 'echo B' end end 当我执行“mytasks”时,结果如下: $
namespace :foo do
task :mytasks, :roles => [:a, :b,] do
task_a
task_b
end
task :task_a, :roles => :a do
run 'echo A'
end
task :task_b, :roles => :b do
run 'echo B'
end
end
当我执行“mytasks”时,结果如下:
$ cap -n ROLES=b foo:mytasks
* 2013-03-01 16:59:14 executing `foo:mytasks'
* executing "echo A"
* executing "echo B"
所有任务都会被执行,为什么?旨在将给定的服务器(或多个服务器)与特定功能关联起来,例如说“machine-a”是web服务器,“machine-b”是数据库服务器,这很有用,因为某些任务只需要在某些机器上执行
因此,在运行Capistrano时,角色并不是有条件地选择要在哪台机器上运行任务的方式,它们只是选择应该在哪台机器上运行哪些任务
然而,还有一个叫做Capistrano的功能,这可能就是你想要的。它允许您根据要部署到的“阶段”指定不同的服务器集(甚至将它们与不同的角色关联)。因此,您可以有a和b阶段,每个阶段都有单独的服务器集,您可以使用以下方式部署这些服务器:
cap a foo:mytasks
cap b foo:mytasks