LoginSignup
1
0

More than 1 year has passed since last update.

【Ruby on Rails】Railsでのデバッグ

Posted at

はじめに

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(#&lt;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

参考

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