0
0

pry-byebugを使ってRuby on Railsでのデバッグ

Last updated at Posted at 2024-05-31

Ruby on Railsでアプリケーションを作成するうえで、必ずエラーに遭遇します。そのためエラーを解決する能力というものが、開発を行う上で必須の能力となります。

今回はこのエラーが発生した際に、どうすればエラーを解決できるかという方法についてご紹介します。最初はエラー画面が怖いものですが、エラー対応を身に着けることで飛躍的に成長できるので頑張りましょう!

「pry-byebug」の使い方

「pry-byebug」とは?については、下記リンクにて説明があります。気になる方は、こちらをご覧ください。それでは早速ですが、使い方について説明します。

>> 「pry-byebug」とは?

「pry-byebug」のインストール

Gemfileのgroup :developmentの最後に、以下の追記をすることで使用できます。

Gemfile
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を追加を追加することになります。

posts_controller.rb
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 %>にする必要があります。

index.html.erb
:

<% @posts.each do |post| %>
<% binding.pry %>

:

indexのビューをブラウザで開いて、ターミナルを見るとデバッグモードになっています。@postsやpostと入力すると、それぞれの受け渡されている値を確認することができます。

またpry-byebugのデバッグ中には、以下のようなコマンドが使えます。これらをうまく役立てて、開発を進めてみましょう。

  • ステップインで先へ進める : stepまたは s
  • ステップオーバーで先へ進める : nextまたは n
  • 現在のスコープを抜ける : finishまたは f
  • デバッグを終了して処理を再開する : continueまたは c

まとめ

pry-byebugを使って、デバッグする方法についてまとめてみました。開発を進めるにあたって、必ずエラーは発生してしまいます。しかし今回の内容をうまく使うことで、エラー解消のヒントを探ることができるようになるかと思います。

おまけ

\Follow me/


最後にいいねお願いします:thumbsup:

0
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
0
0