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