プログラミング初心者歓迎!「エラーが出ました。どうすればいいですか?」から卒業するための基本と極意(ブログと動画まとめ)
開発環境のエラーが出ている画面の赤く塗ってくれているところが多分エラーのところ
スタックトレース(バックトレース)とは?
「エラーが発生するまでに、どんな処理を、どの順番で呼び出したか表現したもの」
テスト環境や本番環境だとこんな風には出ない!どうするか?rails sの方のlogを見る。
Full traceには自分の書いたコードだけでなくgemやフレームワークを含めての一連の動きを追える。下から上が呼び出された順。エラーは自分のコード以外で起こっていることもある。
エラーメッセージとエラータイプを「ちゃんと」読もう
場所
app/controllers/books_controller.rb:67:in `set_book'
67line @book = Book.find(params:id) どんな?
ActiveRecord::RecordNotFound in BooksController#show
Couldn't find Book with 'id'=1
ターミナルのログでユーザーの動きを追いかける。
最後の方に、ActionController::RoutingError (No route matches GET "/book/1"): そもそも画面が変わらないので /books/1をリクエストしてみたことによるエラー画面。
プログラムの実行順序やデータの中身を正確に把握しましょう。デバッグ
問題の起こるコードの直前に入れる。
puts
byebug(終わり方quit)
RubyMineの機能 (関連するgemがインストールできなかった)
better_errorsも
やみくもにデバックしない。仮説・検証・絞り込む
「質問する」もデバックの選択肢の一つ