📚

目に優しくて賢いエラーページを作る `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の方はプラスα

以上の理由から仮想環境で開発を行なっている方は、インターネットに接続されたホスト=本番環境と判断され、安全対策でデフォルトのエラー表示が出るようになっているようです。

そのためアクセス許可の設定が必要です。

config/environments/development.rb
BetterErrors::Middleware.allow_ip! "0.0.0.0/0"

インストール方法

Gemfileの一番下に追加します。

Gemfile内
group :development do
  gem "better_errors"
  gem "binding_of_caller"
end

毎度お馴染みバンドルインストールです。

ターミナル上
bundle install

参考にさせていただいた記事

https://github.com/BetterErrors/better_errors
https://qiita.com/kohki_takatama/items/1d2a9c15b2c37ca4b403
https://qiita.com/terufumi1122/items/a6f9a939dce25b2d9a3e

最後に

「何か新しい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