目に優しくて賢いエラーページを作る `better_errors` を使ってみた
better_errorsとは
突然ですが、Rails標準の赤と黒のエラーページに苦手意識がありませんか?
毒々しい色合いで目が疲れるし、まるで怒られているような気がして、精神衛生にもあまり良くないですよね……共感いただけるでしょうか。
それに問題が起きている箇所は教えてくれますが、浅瀬だけというか、エラーの概要は教えてくれるものの、深掘りして原因を追いたいときには情報が足りず、不親切だなと感じていました。
そんなエラーページを使いやすく、見やすく整えてくれるgemです。
機能紹介
「何がnil?」にヒントをくれるエラー画面
エラーメッセージの表示や問題がある場所の表示は標準と変わりませんが、
Hint: Something is nil when it probably shouldn't be.
とヒントが追加されます。
画面右側のLocal Variables(ローカル変数)の項目も追加され、一気に情報量が増えました。見た目もシンプルで値の確認がしやすいです。
ローカル変数とインスタンス変数の調査
>> がコンソールになっている
このgem入れる前まではbyebugを使って変数の中身を確認してバグ潰しを行なっていましたが、そのままブラウザ上で確認できるところが気に入ってます。
本番では絶対使わないで!使用注意点
導入時の心得
公式GitHubのWikiによると、
NOTE: It is critical you put better_errors only in the development section of your Gemfile.
Do NOT run better_errors in production, or on Internet-facing hosts.
訳)開発セクションにのみ記述することが重要です。
訳)本番環境やインターネットに接続されたホストでは better_errors を実行しないでください。
つまり開発環境でしか使えないようにするために、
gemfileにgroup :development doの記述が必要ということらしいです。
開発者にとっては便利な情報も、悪意ある第三者には攻撃のヒントとなってしまうため、「諸刃の剣」ってことでしょうか。
DockerとCloud9の方はプラスα
以上の理由から仮想環境で開発を行なっている方は、インターネットに接続されたホスト=本番環境と判断され、安全対策でデフォルトのエラー表示が出るようになっているようです。
そのためアクセス許可の設定が必要です。
BetterErrors::Middleware.allow_ip! "0.0.0.0/0"
インストール方法
Gemfileの一番下に追加します。
group :development do
gem "better_errors"
gem "binding_of_caller"
end
毎度お馴染みバンドルインストールです。
bundle install
参考にさせていただいた記事
最後に
「何か新しいgemを試してみたいな〜」と思っていたところ、Rails初心者におすすめと紹介されていたので、試してみました。
環境
- macOS sequoia 15.4.1
- zsh 5.9
shellの一つ、macのターミナルからzsh --versionで確認 - Rails 6.1.7.10
rails -vで確認 - ruby 3.1.2
ruby -vで確認 - VS Code 1.98.2
Discussion