2

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

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

我已经断断续续地工作了几天,但我的搜索没有运气。想法?

4

1 回答 1

3

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

于 2009-01-07T19:21:56.973 回答