日別アーカイブ: 2022年4月2日

Better Errorsの使い方(エラーが起きた時見るもの Docker環境下)

Better Errorsとは?

Railsの場合、better_errors gemを使うと便利で高機能なエラー画面が表示されます。

Better Errorsの導入方法

Gemfileに以下を記述します↓

group :development do
  gem 'better_errors'      ←追加
  gem 'binding_of_caller'  ←追加
end

docker-compose buildでコンテナをビルド

docker-compose build

/config/environments/development.rbに以下を追加します↓

if Rails.env.development?
  BetterErrors::Middleware.allow_ip! "0.0.0.0/0"
end

docker-compose up などでコンテナを起動すると↓

いつもならこのような表示が

このようになる!

左のペインで処理の流れがわかりやすくなる

右にある情報で、デバッグの手がかりを探す事もできます。

その他デバッグに関しての心得

  • 開発環境であれば画面にエラーの発生箇所が表示されます。
  • 本番環境であればログを読みます。ログにもエラーの発生箇所が表示されます。
  • エラー画面やログを見て、エラーが起きたファイルと行番号を確認します。

実際にエラーが起きたのは自分が書いたコードではなく、gemやフレームワークのコードであることも多いです。Railsのエラー画面であれば Full trace リンクをクリックすると、gemやフレームワークのスタックトレース(バックトレース)が表示されます。

スタックトレースは下から上にメソッドが呼び出された順番が表示されます。スタックトレースを読むことで、エラーが発生するまでにどのファイルのどの行が呼ばれてきたのかを確認できます。