Ruby on Railsでアプリケーションを作成するうえで、必ずエラーに遭遇します。そのためエラーを解決する能力というものが、開発を行う上で必須の能力となります。
今回はこのエラーが発生した際に、どうすればエラーを解決できるかという方法についてご紹介します。最初はエラー画面が怖いものですが、エラー対応を身に着けることで飛躍的に成長できるので頑張りましょう!
「pry-byebug」の使い方
「pry-byebug」とは?については、下記リンクにて説明があります。気になる方は、こちらをご覧ください。それでは早速ですが、使い方について説明します。
「pry-byebug」のインストール
Gemfileのgroup :developmentの最後に、以下の追記をすることで使用できます。
group :development do
...
gem 'pry-byebug'
end
保存して、以下を実行してください。
bundle install
pry-byebugは、デバッグしたい箇所で「binding.pry」「<% binding.pry %>」を記述することで処理を止めることができます。rbファイルではbinding.pry、erbファイルでは<% binding.pry %>というように使い分けをします。コントローラーのrbファイルで使用するパターンとビューのerbファイルで使用するパターンの2パターンについて、例として今回紹介します。
コントローラーでデバッグ
仮に以下のようなコントローラーがあったとします。createアクション内のpost変数に、どのような値が入っているのかを確認したいとき、以下のようにbinding.pryを記述します。コントローラはrbファイルですので、binding.pryを追加を追加することになります。
class PostsController < ApplicationController
...
def create
post = Post.new(post_params)
binding.pry
post.save
redirect_to post_path(post.id)
end
...
end
注意点として、確認したい箇所の下に追記をしてください。追記した箇所で、アプリケーションの処理を止めて状態確認することができます。記述したら保存して、ターミナルでrailsサーバを立ち上げてアプリケーションで実際にを投稿してみてください。
[1] pry(#<PostsController>)> post
=> #<Post:~ id: nil, title: "タイトル", body: "ボディ", created_at: nil, updated_at: nil>
[2] pry(#<PostsController>)> post_params
=> <ActionController::Parameters {"title"=>"タイトル", "body"=>"ボディ"} permitted: true>
[3] pry(#<PostsController>)> Post
=> Blog(id: integer, title: string, body: text, created_at: datetime, updated_at: datetime)
[4] pry(#<PostsController>)>
binding.pryを追加したところで、処理が止まります。この状態で、変数・メソッド・モデルの内容を確認できます。ここで上記のpost・post_params・Postのように入力することで、各パラメータが出力されます。
[4] pry(#<PostsController>)> exit
確認し終えたら最後にexitと入力すると、デバッグから抜けてプログラムは再開されます。
ビューでデバッグ
ビューはerbファイルなので、以下のように<% binding.pry %>にする必要があります。
:
<% @posts.each do |post| %>
<% binding.pry %>
:
indexのビューをブラウザで開いて、ターミナルを見るとデバッグモードになっています。@postsやpostと入力すると、それぞれの受け渡されている値を確認することができます。
またpry-byebugのデバッグ中には、以下のようなコマンドが使えます。これらをうまく役立てて、開発を進めてみましょう。
- ステップインで先へ進める : stepまたは s
- ステップオーバーで先へ進める : nextまたは n
- 現在のスコープを抜ける : finishまたは f
- デバッグを終了して処理を再開する : continueまたは c
まとめ
pry-byebugを使って、デバッグする方法についてまとめてみました。開発を進めるにあたって、必ずエラーは発生してしまいます。しかし今回の内容をうまく使うことで、エラー解消のヒントを探ることができるようになるかと思います。
おまけ
\Follow me/
- X(旧Twitter):https://x.com/taishi_it_blog
- Instagram:https://www.instagram.com/taishi_will_be/
- YouTube:https://www.youtube.com/@Engineer_ILLBE
- TikTok:https://www.tiktok.com/@taishi_will_be
- note:https://note.com/taishi_wii_be/
最後にいいねお願いします