我想确保在我的 Rails 3 应用程序初始化或加载时,某些进程(如 Sunspot Solr 搜索和延迟作业)正在运行。
我有点菜鸟,据我所知,我可以编写自定义初始化程序或使用像 God 或 Monit 这样的进程监控框架。
有人可以建议在这里采取的最佳路径吗?
我想确保在我的 Rails 3 应用程序初始化或加载时,某些进程(如 Sunspot Solr 搜索和延迟作业)正在运行。
我有点菜鸟,据我所知,我可以编写自定义初始化程序或使用像 God 或 Monit 这样的进程监控框架。
有人可以建议在这里采取的最佳路径吗?
您可以编写一个检查的初始化程序,例如
raise ProcessNotRunning::MyProcess if `ps aux | grep 'processname' | grep -v grep | wc -l`.strip.zero?
初始化方法的问题在于,即使您所有需要的进程在启动时都在运行,也不能保证它们在您的应用程序运行的接下来几周或几个月内继续运行。
使用监控框架 - God 和 Monit 都是很好的解决方案 - 您可以确定即使您的某个进程死亡,它也会自动重新启动。此外,您还可以在发生这种情况时收到通知,以便在问题开始发生时尽早收到通知。
简而言之:与任何自制解决方案相比,监控框架很可能是更好的解决方案。
如果您正在运行 Rails 应用程序,God 是一个非常好的选择。如果您不熟悉,Railscasts 有一个很好的截屏视频可以帮助您入门: