2009-01-07 50 views
2

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

但是,即使這似乎並沒有工作(所有三個任務讓每一個服務器上運行)。

我一直在做這個開啓和關閉幾天,我沒有運氣與我的搜索。思考?

回答

3

我已經解決了這個問題,但並不漂亮。我發現的事情是,你需要在每個任務的基礎上使用'primary => true'。查看代碼,看起來capistrano會生成任務運行之前運行任務的服務器列表。