我在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
但即使这似乎也不起作用(所有三个任务都在每个服务器上运行)。
我一直在打开和关闭这几天,我的搜索没有运气。想法?
答案 0 :(得分:3)
我已经解决了这个问题,但它并不漂亮。我发现的是你需要使用'primary =>是'基于每个任务。查看代码,似乎capistrano生成在任务运行之前将运行任务的服务器列表。