1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Better ErrorsとBinding_of_callerを導入する(Rails+Docker環境)

Last updated at Posted at 2022-03-19

Better ErrorsとBinding_of_callerとは?

Railsのgemの一つでBetter_Errors gemを使うと便利で高機能なエラー画面が表示されます。

Binding_of_callerはブラウザ上でirbを使えるようになるgemです。

Better Errorsとbinding_of_callerの導入

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 などでコンテナを起動すると↓

いつもならこのような表示が(画像は一例です)

スクリーンショット 2022-03-19 14.33.59.png

このような表示になります!

スクリーンショット 2022-03-19 14.24.00.png

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

Application framesは自分が書いた部分が表示されます。

All framesリンクをクリックすると、gemやフレームワークのスタックトレース(バックトレース)が表示されます。

スタックトレースは下から上にメソッドが呼び出された順番が表示されます。

スタックトレースを読むことで、エラーが発生するまでにどのファイルのどの行が呼ばれてきたのかを確認できます。

右にある>>はirbの部分で、ここでコマンドすることで対話形式でデバッグの手がかりを探す事もできます。

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

開発環境であれば画面にエラーの発生箇所が表示されます。

本番環境であればログを読みます。ログにもエラーの発生箇所が表示されます。

エラー画面やログを見て、エラーが起きたファイルと行番号を確認します。

実際にエラーが起きたのは自分が書いたコードではなく、gemやフレームワークのコードであることも多いようです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?