こんにちは、たいし(プロフィールはこちら)です!
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を使って、デバッグする方法についてまとめてみました。開発を進めるにあたって、必ずエラーは発生してしまいます。しかし今回の内容をうまく使うことで、エラー解消のヒントを探ることができるようになるかと思います。
\エンジニアになりたい初心者向けにプログラミング学習法を紹介!/