debugのやり方(Better Errors)

自分用にエラーが出たときの対応の仕方をメモしておく。

1:エラーをGemで見やすくする

Better_errorsの使い方(Docker)からBetter Errorsを導入

2:どこでエラーが起きたか調べる

エラーログの左側を見てどこでエラーが起きたか調べてみる

Application Frames: 自分が書いたコード

All Frames:                   ライブラリなど全部あわせたもの

またはdocker-compose up などでエラーログを見る

web_1 | Started GET "/its/27%2F28%2F29/edit" for 172.19.0.1 at 2020-09-09 06:53:43 +0000 web_1 | Cannot render console from 172.19.0.1! Allowed networks: 172.18.0.1, 127.0.0.0/127.255.255.255, ::1 web_1 | (2.0ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 web_1 | (0.5ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC web_1 | Processing by ItsController#edit as HTML web_1 | Parameters: {"id"=>"27/28/29"} web_1 | It Load (0.7ms) SELECT `its`.* FROM `its` WHERE `its`.`id` = 27 ORDER BY `its`.`created_at` DESC LIMIT 1 web_1 | CACHE It Load (0.0ms) SELECT `its`.* FROM `its` WHERE `its`.`id` = 27 ORDER BY `its`.`created_at` DESC LIMIT 1 web_1 | Rendering its/edit.html.erb within layouts/application web_1 | Rendered its/_form.html.erb (35.9ms) web_1 | Rendered its/edit.html.erb within layouts/application (74.7ms) web_1 | Completed 500 Internal Server Error in 275ms (ActiveRecord: 2.7ms) web_1 | ActionView::Template::Error - undefined method `collection' for #<It:0x000055718cd5d1f0>: web_1 | app/views/its/_form.html.erb:2:in `view template' web_1 | app/views/its/edit.html.erb:3:in `_app_views_its_edit_html_erb__1765342506097455731_70330460854860' web_1 |  web_1 | Started POST "/__better_errors/dfe6a931fb2ec233/variables" for 172.19.0.1 at 2020-09-09 06:53:44 +0000 web_1 | Cannot render console from 172.19.0.1! Allowed networks: 172.18.0.1, 127.0.0.0/127.255.255.255, ::1

3:エラーメッセージを見る

undefined method `collection’ for #<It:0x000055718cd5d1f0>

日本語に訳して意味を調べる↓

未定義のメソッド `collection’ for #<It:0x000055718cd5d1f0

未定義のメソッド `collection’ for #<It:0x000055718cd5d1f0

エラーのタイプも見る

ActionView::Template::Error

ActionView::Template::Errorを検索して公式のAPIドキュメントを見る

これもまた日本語に訳して意味を調べる。

それでもわからないときはエラーログを見る。

4:pry-byebugを使う

pry-byebugの使い方から導入する。

docker-compose up -dでコンテナを起動する

docker-compose up -d

docker psでNAMESを確認

docker ps

docker attach lifehack_web_1

bindig.pryを挿入して

showアクションが行われるページにアクセスするかリロードする。

このような画面になっていれば成功している。

変数やメソッドの戻り値などを調べる

helpでコマンドなども見ることができる

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です