ruby-on-rails - capistrano 中的主服务器

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

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

我已经断断续续地研究这个问题几天了,但我的搜索没有成功。想法?

最佳答案

我已经解决了这个问题,但效果并不好。我发现您需要在每个任务的基础上使用“primary => true”。查看代码,capistrano 似乎会在任务运行之前生成一个将运行该任务的服务器列表。

关于ruby-on-rails - capistrano 中的主服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/420700/

相关文章:

ruby - 反转原始数组

html - Ruby on Rails redirect_to 方法

ruby-on-rails - Rails 自定义记录顺序?

ruby-on-rails - 工厂女孩/Rails : Generator to create a factory for existing model?

ruby-on-rails - 限制mongoid中的版本属性

ruby-on-rails - 如何有条件地在 Rails 中包含路由参数?

ruby-on-rails - Rspec 和 'before_validation' 回调问题

ruby - 更改 Capistrano 策略

ruby-on-rails - 为什么我需要在应用服务器上而不是仅在 Web 服务器上预编译 Rails Assets ?

ruby - 如何从不同于 :deploy? 的命名空间触发 Capistrano 任务