Убедитесь, что определенные процессы запущены при загрузке моего приложения Rails - PullRequest
4 голосов
/ 27 февраля 2011

Я хочу убедиться, что определенные процессы, такие как поиск Sunspot Solr и delayed_job, работают, когда мое приложение Rails 3 инициализируется или загружается.

Я в некотором роде новичок, и, насколько я могу судить, я мог бы написать собственный инициализатор или использовать среду мониторинга процессов, такую ​​как God или Monit.

Может кто-нибудь, пожалуйста, предложите оптимальный путь, чтобы выбрать здесь?

Ответы [ 3 ]

1 голос
/ 14 мая 2012

Вы могли бы написать инициализатор, который проверяет, что-то вроде

raise ProcessNotRunning::MyProcess if `ps aux | grep 'processname' | grep -v grep | wc -l`.strip.zero?
1 голос
/ 14 мая 2012

Проблема с подходом инициализатора состоит в том, что даже если все необходимые процессы выполняются при запуске, нет никакой гарантии, что они продолжат работать в течение следующих нескольких недель или месяцев, когда ваше приложение будет запущено.

Использование инфраструктуры мониторинга - и Бог, и Монит - хорошие решения - вы можете быть уверены, что даже если один из ваших процессов умрет, он будет перезапущен автоматически. Кроме того, вы можете получать уведомления, когда это происходит, поэтому вы получаете уведомление заранее, когда возникают проблемы.

В двух словах: система мониторинга, скорее всего, будет лучшим решением по сравнению с любым домашним решением.

1 голос
/ 27 февраля 2011

Если вы работаете с Rails-приложением, Бог - очень хороший вариант.Если вы незнакомы, у Railscasts есть хороший скринкаст для начала:

http://railscasts.com/episodes/130-monitoring-with-god

...