質問: Ruby初心者です。 いくつかのWebアプリケーションフレームワークでは、サーバー起動後(boot時)や停止前(Ctrl+Cを押された場合など)にユーザーのカスタム処理を書くフックポイントが用意されていると思いますが、 Ruby on Railsで同様のことがしたい場合のベストプラクティスはありますでしょうか? 以下のサイトなどを見るとできそうではありますが、あまり正式な方法ではないように思います。 複数サーバーでのスケールアウトが主流の世の中で、サーバーインスタンスの起動、停止にフックして処理すること自体、あまり必要性がないのかもしれませんが、参考までに質問です。
回答: コメントより 起動通知だけなら config/initializers配下でも良いと思いますが。 残念ながらconfig/finalizersのようなものがありません。 ベストプラクティスというのは、なかなか難しいものですが。 私の場合は、よくこういうrakeタスクを書きます。 ``` [lib/tasks/server.rake] namespace :server do desc '[auto-pilot] Server Start' task start: :environment do # ここにサーバー起動前処理 ` ここに サーバー起動コマンド ` end desc '[auto-pilot] Server Stop' task stop: :environment do # ここにサーバー終了前処理 ` ここに サーバー終了コマンド ` end end $ rake server start $ rake server stop ``` 一連のタスクの中でサーバー起動/終了だけ外部コマンド実行にする感じです。 rakeタスク化するのであれば「サーバー起動前処理」など1つ1つをタスク化して、単独でも呼べるようにしつつ一連実行のタスクを提供するというのが正しい気がします(私はstart/stopだけでサボりますが)。