Rails - rescue_fromについて
はじめに
本記事では「パーフェクト Ruby on Rails」で学んだ内容と別途気になって調べた内容や知識も含めアウトプットしています。
書籍に記載されている内容を順序立ててまとめるというよりは、整理しておきたい周辺の知識と深ぼった内容を雑多に書いています。
rescue_from
rescue_fromとは
rescue_from
はRailsのAction Controllerにおいて、例外が発生したときにその例外に対する処理を定義するためのメソッドです。
application_controller.rbなどでエラーハンドリングを定義しておくことで処理例外が発生したときにその処理を呼び出すことが出来ます。
resucue_fromを用いたエラーハンドリングの仕方
rescue_from
メソッドを使用する場合は、例外の種類と対応する処理を定義する必要があります。rescue_from
メソッドは、コントローラーで定義する必要があり、特定の例外が発生した場合に呼び出されるメソッドを指定することができます。
application_controller.rb
下記の例では、ActiveRecord::RecordNotFound
例外が発生した場合にnot_found
メソッドを呼び出すようにrescue_from
メソッドを使用しています。
# app/controllers/application_controller.rb class ApplicationController < ActionController::Base protect_from_forgery with: :exception rescue_from ActiveRecord::RecordNotFound, with: :not_found private def not_found render "errors/not_found", status: :not_found, layout: "application" end end
上記の場合、not_found
メソッドがエラー画面を表示するように実装されています。
app/views/layouts/errors.html.erb
errors/not_found.html.erb
をレンダリング、HTTPステータスコードを 404
に設定し、 application.html.erb
をエラー画面のレイアウトとして使用します。
<div class="container"> <div class="row justify-content-center"> <div class="col-md-6 text-center"> <h1>404 Error: Page Not Found</h1> <p>ページが見つかりません。</p> <a href="/" class="btn btn-primary">Return to Home</a> </div> </div> </div>
rescue_from
はAction Controllerで例外ハンドリングを行う上で重要な機能の一つであり、ハンドリングされていない例外が発生した場合には500エラーが発生するため、適切なエラーページを表示するためにも必要です。
参考
続く…
コメント
本記事の内容は以上になります!
書籍の続きのアウトプットも随時更新したいと思います。
プログラミングスクールのご紹介 (卒業生より)
お世話になったプログラミングスクールであるRUNTEQです♪
こちらのリンクを経由すると1万円引きになります。
RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。
もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。