Rails アプリを起動するときに config/initializers/ でいくつかのデーモンを実行しますが、アプリがいつシャットダウンするかを検出してデーモンを停止する方法が必要です。
これを行うことができるフック/場所はありますか?
Rails アプリを起動するときに config/initializers/ でいくつかのデーモンを実行しますが、アプリがいつシャットダウンするかを検出してデーモンを停止する方法が必要です。
これを行うことができるフック/場所はありますか?
私の知る限り、Rails フレームワーク内でアプリケーションをアンワインドする正式な方法はありません。基本的な Ruby at_exit言語機能用に 1 つ以上のハンドラーをインストールすることを検討できます。ただし、これはアプリケーションの順序付きシャットダウンのみを処理します。
より一般的な戦略は、アプリケーションの順序付けられた予期しない終了ケースをキャッチするサーバー監視フレームワークを使用することです。at_exit
Rails インスタンスがPassenger内でホストされていて、関連する Apache または Nginx サーバーが何らかの理由でクラッシュした場合、ハンドラーが呼び出されるとは思えませんが、実際にはテストしていません。同様の観察結果は、予期せず終了するアプリケーション コンテナーにも当てはまる可能性があります。
アプリケーションのシャットダウンを処理し、一連の状況ごとに正しいことを行うための一般的な戦略を実装するために、God、Monit、またはNagiosのようなものを (要件がどれほど洗練されているかに応じて) 検討することができます。これらのフレームワークは、これらのデーモンも監視できます。