2016-02-21 27 views
0

我有一個生產服務器,其中有兩個實例app1和app2,我使用capistrano來部署我的應用程序,即:cap app1 deploy,cap app2 deploy。僅在一個生產實例上運行發條(rails capistrano)

我現在正在配置發條來安排我的延期工作。但是會發生兩次作業,因爲在部署應用程序之後,時鐘作業進程將在app1和app2上運行。

我該如何強制capistrano只在app2上運行發條過程?

感謝您的提示。 米羅斯拉夫

SOLUTION

添加以下設置到deploy.rb:

set :clockwork_role, :clock 

,然後配置僅其中一個實例使用角色:時鐘,即:

server 'URL', user: 'deploy', roles: %w{app db web clock} 

回答

1

在你的情況下,你可以在一種情況下設置一些配置變量爲true,在第二種情況下設置爲false,並檢查它在設置發條時。

但是要提一提,您正在爲一個階段的不同服務器使用不同的「階段」(通常是「分段」,「生產」,「qa」,「特徵」等)。 Capistrano有'角色'(應用程序,數據庫,後臺作業等)每個可以有幾個服務器。

也請提及您正在使用哪個capistrano版本 - 從2到3有很大變化

+0

感謝您的評論faron。我的生產服務器上有一個負載平衡器,它根據服務器容量將用戶指向app1或app2。 app2比app1更強大。我也使用capistrano v3。 – Miroslav

+0

@Miroslav使用布爾配置變量爲您提供建議的解決方案嗎? – faron

+0

是的。我必須將set:clockwork_role,:clock添加到我的deploy.rb文件中,然後僅配置其中一個實例以使用role:clock。謝謝你在那裏指導我。 – Miroslav

相關問題