Я выполняю несколько демонов в config/initializers/, когда я запускаю свое приложение для направляющих, но мне нужен способ обнаружить, когда приложение закрывается, и остановите демонов.
Есть ли какие-либо рычаги / места, где я могу сделать это?
Насколько мне известно, формального способа развернуть приложение в рамках Rails не существует. Вы можете рассмотреть возможность установки одного или нескольких обработчиков для базового средства языка Ruby at_exit . Однако это касается только упорядоченного завершения работы приложения.
Более общая стратегия заключалась бы в использовании инфраструктуры мониторинга сервера, которая выявляла бы упорядоченные и неожиданные случаи выхода для вашего приложения. Я очень сомневаюсь, что обработчики at_exit
будут вызываться, если ваш экземпляр rails был размещен внутри Passenger и связанный сервер Apache или Nginx по какой-то причине вылетел из строя, хотя я на самом деле не тестировал это. Подобные наблюдения, вероятно, применимы к любому контейнеру приложения, который неожиданно завершит работу.
Вы можете рассмотреть что-то вроде God или Monit или Nagios (в зависимости от того, насколько сложны ваши требования) для реализации общей стратегии обработки завершения работы приложения и выполнения то, что нужно для каждого стечения обстоятельств. Эти фреймворки также могут отслеживать этих демонов.