我在 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/