Railsのエラー画面をリッチにするgem『better_errors』を使ってみたので、導入方法を紹介します。
使用バージョン
- Ruby 2.6.3
- Rails 6.0.0
- better_errors 2.5.1(現行の最新版)
- binding_of_caller 0.8.0(現行の最新版)
インストールする
Gemfileにbetter_errors'
とbinding_of_caller'
を追記してbundle install
。
開発用なので、development環境のみにインストールします。
# Gemfile group :development do gem 'better_errors', '>= 2.5.1' gem 'binding_of_caller', '>= 0.8.0' end
エラーを発生させてみる
存在しないメソッドを呼ぶことで、意図的にエラーを発生させてみます。ちなみに、Routing Error
ではbetter_errors
は動作せず、従来のエラー画面が表示されます。
# pages_controller.rb class PagesController < ApplicationController def index local = 100 @instance = 'hoge' sample end def sample undefined end end
pages/index
にアクセスすると、better_errors
のエラー画面が表示されました!
左半分に表示されたスタックトレースを選択すると、その時点での変数の状態などが右側に表示されます。
index
が呼ばれたタイミングでは、ローカル変数local
やインスタンス変数@instance
が参照できています。
エラーが発生したタイミングはsample
内なので、ローカル変数は定義されていないことがわかります。インスタンス変数@instance
は変わらず参照できていることが分かります。
導入はbundle install
するだけでめちゃくちゃ簡単なので、とりあえず入れておくとデバッグが捗るかもしれません!