Yanonoblog!

こつこつと

Rails - rescue_fromについて

はじめに

本記事では「パーフェクト Ruby on Rails」で学んだ内容と別途気になって調べた内容や知識も含めアウトプットしています。

書籍に記載されている内容を順序立ててまとめるというよりは、整理しておきたい周辺の知識と深ぼった内容を雑多に書いています。

rescue_from

rescue_fromとは

rescue_fromRailsの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です♪

https://runteq.jp/r/ohtFwbjW

こちらのリンクを経由すると1万円引きになります。

RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。

もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。

https://twitter.com/outputky