0
我已經構建了一些我需要在定義的:app
角色中運行的capistrano任務。這是我到目前爲止有:Capistrano任務在給定範圍內不能執行。
desc "Stop unicorn"
task :stop, :roles => :app do
logger.info "Stopping unicorn server(s).."
run "touch #{unicorn_pid}"
pid = capture("cat #{unicorn_pid}").to_i
run "kill -s QUIT #{pid}" if pid > 0
end
據我所知,這應該運行在:app
角色給出的服務器上給定的命令,對不對?但事實是,它正在運行:db
角色中的服務器上的命令。
任何人都可以對這個問題有所瞭解嗎?或者,有沒有辦法強制Capistrano堅持:roles
國旗?提前
//周華健
我調查了一點,事實證明,當它到達這個任務時,'服務器'數組包括*所有*服務器從所有角色(即合併'應用程序','網絡和數據庫)是這種預期的行爲? – 2012-02-06 10:58:46
還有更多。似乎捕獲命令在所有服務器上運行,然後在所有服務器上運行kill命令。這會導致kill命令試圖終止所有服務器上最後一個服務器的ID。對於這種情況,是否有最佳做法,在迭代服務器數組之前,我想在特定服務器上運行一系列命令? – 2012-02-06 11:56:14
你的環境角色設置如何? – phoet 2012-02-06 15:37:36