capistrano中的主服务器

时间:2009-01-07 15:20:28

标签: ruby-on-rails ruby capistrano

我在capistrano有一个任务,我只想在服务器被标记为主要服务器时运行一行。我可以在任务中引用变量或方法吗? '主?'或者“主要”似乎不起作用。

我也尝试了类似以下内容:

after "deploy", "task1"
after "deploy", "task2"
after "deploy", "task3"

task :task1, :roles => :app do
  *code*
end

task :task2, :roles => :app, :only => {:primary => true} do
  *code for just primary server*
end

task :task3, :roles => :app do
  *more code*
end

但即使这似乎也不起作用(所有三个任务都在每个服务器上运行)。

我一直在打开和关闭这几天,我的搜索没有运气。想法?

1 个答案:

答案 0 :(得分:3)

我已经解决了这个问题,但它并不漂亮。我发现的是你需要使用'primary =>是'基于每个任务。查看代码,似乎capistrano生成在任务运行之前将运行任务的服务器列表。