PR

pry-byebugとは?Ruby on Railsでのデバッグ方法を徹底解説!

pry-byebugを使ってデバッグする方法ヘッダーエンジニアコラム
記事内に広告が含まれています。
スポンサーリンク

こんにちは、たいし(プロフィールはこちら)です!

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

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

Ruby on Railsのエラーはこの方法で倒せる!

スポンサーリンク

「pry-byebug」とは

「pry-byebug」はgemの一つで、導入することで記述した箇所のプログラムの処理を止めて、その時点での状態を確認することができます。例えば処理を止めた時点で、変数にどんなものが入っているのかを確認することができます。処理を止めた時点で細かく動作確認ができるため、なぜエラーが発生しているのかを特定しやすくなります。また、プログラムを一行ずつ実行させるステップ処理なども可能です。

スポンサーリンク

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

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

ターミナルで「=>」部分で処理が止まります。この状態で、変数・メソッド・モデルの内容を確認できます。ここで上記のように、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を使って、デバッグする方法についてまとめてみました。開発を進めるにあたって、必ずエラーは発生してしまいます。しかし今回の内容をうまく使うことで、エラー解消のヒントを探ることができるようになるかと思います。

\エンジニアになりたい初心者向けにプログラミング学習法を紹介!/

プログラミング初心者でも安心!エンジニアへの第一歩を踏み出すための3STEP学習法
プログラミングに興味のある未経験の方は必見!この記事では、プログラミング未経験からエンジニアとなる方法を紹介しています。実は方法を間違わなければ、誰でもエンジニアとなることは可能です。この記事を読むことで、プログラミング学習の準備からエンジニアになるための学習3STEPがわかります。
スポンサーリンク
エンジニアコラム
Taishiをフォローする
スポンサーリンク
I’LL BE:未経験からのエンジニア転職