rambulance Rails 4.2時代の簡単404/500エラー対応


最近作っているRailsアプリケーションで、404/500エラーの対応をしている時に知ったgem『yuki24/rambulance
の紹介です。

一言でいうと、ものすごく簡単にRailsのエラーハンドリングを行ってくれつつ、エラーページを構築できるgemです。


🗽 インストール手順

いつ戻おりGemfileに以下を追加。

# Error handling
gem 'rambulance'

そして次のコマンドを実行してインストールしてください。(パスは適宜変更)

bundle install --path vendor/bundle --jobs=4

🗻 環境設定

エラーページのviewや、設定ファイルを生成してくれます。

rails g rambulance:install
# generating templates:
# create app/views/errors/bad_request.html.haml
# create app/views/errors/forbidden.html.haml
# create app/views/errors/internal_server_error.html.haml
# create app/views/errors/not_found.html.haml
# create app/views/errors/unprocessable_entity.html.haml
# create app/views/errors/bad_request.json.jbuilder
# create app/views/errors/forbidden.json.jbuilder
# create app/views/errors/internal_server_error.json.jbuilder
# create app/views/errors/not_found.json.jbuilder
# create app/views/errors/unprocessable_entity.json.jbuilder
#
# generating initializer:
# create config/initializers/rambulance.rb

😼 エラーごとに表示するページを変更

エラーごとに表示するページを変更するには、config/initializers/rambulance.rbを適宜変更してください。
また、個人的にlayoutはnilにしておくほうがはまりにくいと思います!

# エラーページのハンドリング方法はこんな感じ
config.rescue_responses = {
# "ActiveRecord::RecordNotUnique" => :unprocessable_entity,
# "CanCan::AccessDenied" => :forbidden,
# "Pundit::NotAuthorizedError" => :forbidden,
# "YourCustomException" => :not_found
}
# エラーページのレイアウトはnilにしておくのがオススメ
config.layout_name = nil

🐝 開発環境での確認方法

config/environments/development.rbに以下を追記したら、開発環境でエラーが出た際にrambulanceのエラー画面が表示されます。

# --------------------------------
# Error Handling
# --------------------------------
config.consider_all_requests_local = false

🎂 エラー処理を独自実装したい場合

もしエラー処理を独自実装したい場合は次のコマンドでエラー処理用のひな型を生成してくれます。

rails g rambulance:exceptions_app
# create app/handlers/exceptions_app.rb

ちなみに、最初はエラー通知をAirbrakeで自分でコードを書いて通知させていたんですが、作者の@yuki24
から、Airbrakeのミドルウェアがやってくれるから、自作しなくていいという話を教えてもらいました。ありがたうございます!

まだ、使い始めて日が浅いので間違い等あればコメントよろしくお願いします!

🎳 変更来歴

(2015-01-31 11:55) 新規作成
(2015-02-01 11:30) Airbrakeの自作通知ハンドラを削除

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)