middlewareで発生する例外とはアプリケーションで発生する例外を捕捉し、適切な処理をするのは一般的なことだと思います。middlewareで発生する例外はどうでしょうか?例えばMySQLを使っていてデータベースサーバに接続できない場合、ActiveRecord::ConnectionAdapters::ConnectionManagementというmiddlewareからMysql2::Errorが発生します。middlewareすると10番目に出てきます。MyApp::Application.routesウェブサーバはこの上にあり、自分のアプリケーションは一番下です。例外はrescueしなければ上へ上がって行きます。やってもアプリケーションではrescueできません。ハンドリングすればいいでしょうか?ActionDispatch::ShowExceptionsを使う?スタックを見ると上から6番目にActionDispatch::ShowExceptionsというのがあります。ソースを見ると、例外のクラス名をステータスコードにマップしていることがわかります。:insufficient_storage表示したいページをpublic/507.htmlとして置いておけば済みます。Storageも有りうるので、適切な措置とは言えません。middlewareで発生した例外はActionDispatch::Rescueというmiddlewareで捕捉できます。ActionDispatch::ShowExceptionsと違い、ActionDispatch::Rescueは例外クラスに対してハンドリングするRackアプリケーションを指定できます。failure.」と表示できます。Error)で十分でしょう。ポイントは、レスポンスボディとして任意の内容を返せることです。任意の内容を返せるということは、ユーザに適切なメッセージを見せたり、JavaScriptのフロントエンドにJSONなどで適切なステータスを返したりできるということです。上のrescue_fromはActionDispatch::Rescue#rescue_fromで、コントローラのマクロ風rescue_fromとは別物です。}はapplication.rbに書くにはちょっと生々しい印象です。コードらしい場所へ移動するにはどうしたらいいでしょうか。ActionDispatch::Rescue#rescue_fromの第2引数はRackアプリケーションですから、Rackアプリケーションとして振舞うクラスを指定してやれば済みます。ActionController::Metalを継承すればそういうクラスを簡単に作れます。endendapplication.rbには下のようになります。