2010-07-17 30 views
1

我在config/initializers /中啓動了幾個守護進程,當我啓動我的rails應用程序時,但我需要一種方法來檢測應用程序何時關閉並停止守護進程。軌道初始值設定項(2.xx)相反?

有沒有可以做到這一點的鉤子/地方?

回答

2

據我所知,沒有正式的方式在Rails框架中展開應用程序。您可以考慮爲基本Ruby at_exit語言工具安裝一個或多個處理程序。但是,這隻會處理應用程序的有序關閉。

更一般的策略是使用服務器監視框架,它可以捕獲應用程序的有序和意外退出情況。我非常懷疑at_exit處理程序會被調用,如果你的rails實例被託管在Passenger內,並且相關的Apache或Nginx服務器由於某種原因而崩潰,雖然我沒有真正測試過它。類似的觀察可能適用於任何將意外退出的應用程序容器。

你可以考慮像GodMonitNagios(取決於多麼複雜的要求),用於實現移交應用程序關閉一個總體戰略,做正確的事情每一組的情況。這些框架也可以監視這些守護進程。

+0

感謝您的優秀答案bjg。 快速問題:Do God,Monit和Nagios都運行在JRuby環境中嗎? – rmk 2010-07-17 20:07:33

+0

因此,Monit和Nagios可以監視任何類型的進程,包括像Jetty/Tomcat/Glassfish這樣的java進程,或者您計劃部署JRuby應用程序的任何進程。就我所知,上帝(用Ruby編寫)並不在JRuby中運行。然而,沒有理由爲什麼上帝和被監控的應用程序需要必須運行相同的紅寶石(除非您因其他原因而受到限制)。 – bjg 2010-07-17 21:23:54

相關問題