当我启动rails应用程序时,我在config / initializers /中运行了几个守护进程,但我需要一种方法来检测应用程序何时关闭,并停止守护进程。
我可以做任何钩子/地方吗?
答案 0 :(得分:2)
据我所知,目前还没有正式的方法可以在Rails框架中展开应用程序。您可以考虑为基本的Ruby at_exit语言工具安装一个或多个处理程序。但是,这只会处理应用程序的有序关闭。
更通用的策略是使用服务器监控框架来捕获应用程序的有序和意外退出情况。我非常怀疑如果您的rails实例托管在Passenger内并且相关的Apache或Nginx服务器由于某种原因而崩溃,那么at_exit
处理程序将会被调用,尽管我实际上没有对此进行过测试。类似的观察可能适用于任何意外退出的应用程序容器。
您可以考虑使用God或Monit或Nagios(取决于您的要求有多复杂),以实现处理应用程序关闭和为每个集合执行正确操作的一般策略情况。这些框架也可以监视这些守护进程。