LoginSignup
1
0

More than 1 year has passed since last update.

🔰【初学者用】Railsエラー画面の見方とデバッグ

Posted at

はじめに

Ruby on Railsのアプリケーションのデバッグ方法を記載していきます!
Railsアプリケーションの開発中は、エラーが頻繁に起きますよね。でもエラーを解決していくことでRailsの仕組みの理解に繋がっていきます。
エラーは自身の成長をサポートする友達^^

エラー画面の見方

まずはエラー画面の見方から

  • 1行目にはエラーの概要
  • 2行目にはエラー発生の予測場所
  • 3行目にはエラー内容の詳細
  • 4行目にはコード内のエラー発生場所
    ざっくりこんな感じです。自身のエラー画面と比べてみると分かりやすいと思います!

デバッグ

デバッグとは、プログラムの誤りを見つけて、手直しすることです。
実際にデバッグ作業を行うにはpry-railsというGemを使用します!

実際にデバッグしてみましょう!

※投稿機能実装時、投稿する時にエラーが発生する場合を例とします。
まずはGemの確認から!以下のGemが導入されていることを確認してください

Gemfile
gem `pry-rails`

このpry-railsを導入することでbinding.pry(バインディングプライ)を使用することができるようになります。
binding.pryという記述をソースコードの中にすると、binding.pryが存在する箇所でRailsの処理を一時停止し、その状態でコンソールを起動できます。便利!!

app/controllers/posts_controller
 def create
    binding.pry
    Post.create(post_params)
 end

例えば、上記のようにbinding.pryを使用するとローカルサーバー内でSENDボタンをクリックすると(SENDボタンが投稿する役割を持っている場合。)処理が停止され、ターミナルでコンソールが起動されます。
ターミナルを確認するとこんな感じ、

ターミナル
Started POST "/posts" for ::1 at 2022-05-30 17:31:23 +0900
Processing by PostsController#create as HTML
  Parameters: {"authenticity_token"=>"7imvHaB3Z9fle2uEDeNY5mBJebreoWRs6Scs8zcEHuL5FHWhXS8eOpX8Db8i13SGuV1F8T9fTbgSCuBFkrOmDQ==", "post"=>{"image"=>"", "text"=>"aaa"}, "commit"=>"SEND"}
  User Load (0.8ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
  ↳ app/controllers/posts_controller.rb:50:in `move_to_index'

From: /Users/***/projects/post/app/controllers/posts_controller.rb @ line 14 PostsController#create:

    13: def create
 => 14:   binding.pry
    15:   Post.create(post_params)
    16: end

[1] pry(#<PostsController>)> 

[1] pry(#)> で入力待ちの状態になっています。
投稿時にformから送信したパラメーターを、paramsと入力して見てみましょう!

ターミナル
[1] pry(#<PostsController>)> params
=> <ActionController::Parameters {"authenticity_token"=>"7imvHaB3Z9fle2uEDeNY5mBJebreoWRs6Scs8zcEHuL5FHWhXS8eOpX8Db8i13SGuV1F8T9fTbgSCuBFkrOmDQ==", "post"=>{"image"=>"", "text"=>"aaa"}, "commit"=>"SEND", "controller"=>"posts", "action"=>"create"} permitted: false>
[2] pry(#<PostsController>)> 

このように、配列のような形で出力できます。
仮に、formで送信しても保存ができない場合があり、「formでパラメーターが送れていない可能性がある」と仮説を立てた場合に、このデバッグ方法で検証できます。
最後にexitと入力してコンソールを終了しておきましょう。

まとめ

簡単ではありましたが以上がエラー画面の見方とデバッグの一例になります。
上記でも述べましたが、エラーを解決していくことでRailsの仕組みの理解に繋がっていきます。
「エラーは自身の成長をサポートする友達^^」

ではまた。

※プログラミングを始めてまだ月日も浅い初学者が投稿しています。誤字脱字等ありましたら申し訳ないです。何か間違いがあればご指摘いただけると助かります。

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