はじめに
Railsなどを中心に勉強中のエンジニア初心者が他の記事を参考にしたり、実際に実装してみたりして、アウトプットの一環としてまとめたものです。
間違っていることもあると思われるので、その際は指摘いただけると幸いです。
デバッグとは
デバッグ(debug)とはプログラムの不具合である「バグ(bug)」を取り除くこと。
コードにミスがある場合はエラーが発生し、処理が止まってしまうため、原因を突き止めるためにデバッグを行う。
指定した場所まで段階的に処理を走らせて、プログラムのどの箇所までが正常に実行されているかを確認したり、変数の中身を確認したりして、バグの原因を突き止める。
pry-rails
Railsではデバッグツールとしてpry-rails
がGemで提供されている。
デフォルトではインストールされていないため、Gemfileに追記してインストールする必要がある。
gem 'pry-rails'
binding.pryの基本
binding.pry
という文字列をコード内に記述すると、そこがブレイクポイントとなりRailsの処理を一時的に止めることができる。
コントローラ上でのbinding.pry
下記のように記載すると、create
アクションが呼び出された際、User.create(user_params)
のコードが実行された後、プログラムの実行が停止され、pry
が起動する。
def create
User.create(user_params)
binding.pry
redirect_to root_path
end
コマンド入力による確認
binding.pry
でプログラムを一時停止すると、コンソール上で[1] pry(#<UsersController>)>
と表示され、コマンドが入力できる状態になる。
ここで、変数の中身やパラメーターなどの確認をすることができる。
[1] pry(#<UsersController>)>
ビュー上でのbinding.pry
ビュー上でbinding.pry
を使用する際は、<% %>
も必要。
<% @user.each do |user| %>
<% binging.pry %>
<%= user.id %>
<%= user.name %>
<% end %>
pryで使えるコマンド
デバッグはirbでも実施できるが、pryだとirbと比べてより多くのことができる。
コマンド | 内容 |
---|---|
show-routes | 現在のルーティングを確認 |
show-models | 現在のモデルを確認 |
show-source | クラスやモジュール、メソッドの定義を確認 |
show-doc | クラスやモジュール、メソッドのドキュメントを確認 |
show-routes
現在のルーティングを確認することができるコマンド。
このコマンドはrailsのコンソールモード内でのみ使用できる。
pry
コマンドでpry
モードにした時には使えないので注意しましょう。
show-routes -grep モデル名 | 指定したモデルのルーティングのみ表示する |
---|---|
show-routes -grep アクション名 | 指定したアクションのルーティングのみ表示する |
show-models
現在のモデル全てを確認することができるコマンドです。
このコマンドもrailsのコンソールモード内でのみ使用できます。
pry
コマンドでpry
モードにした時には使えないので注意しましょう。
show-model モデルクラス名 | 指定したモデルのルーティングのみ表示する |
---|
pry-railsのGitHub
参考