【Ruby on Rails】デバッグツール(pry-rails)


エラーの時にはデバッグツールを使ってバグを発見したり、処理を止めて動作を確認したりします。
私はpry-railsを利用しているのでその使い方をまとめます。

pry-rails

Railsにおけるデバッグ用のGemです。
私の主な使い方はコントローラー内で記述し、その処理を止めることでどんなデータが渡っているかなどを調べるのに使っています。
テストコードを書く際などにもエラー文を調べるために利用したりします。

準備

Gemfileの一番下に

Gemfile
gem 'pry-rails'

と記述します。

ターミナルで該当のプロジェクトのディレクトリで以下のコマンドを実行します。

ターミナル
bundle install

以上でGemの導入とGemfileの更新ができました。

使い方

①送られているデータの確認方法

例えばcreateアクションでどのデータが送られているか確認したい場合、コントローラー内の処理を確認したいところにbinding.pryを記述します。

コントローラー
def create
    binding.pry
    Sample.create(sample_params)
end

記述できたらローカルのサーバーから実際にcreateアクションの動作を行ってみます。
(例えばformからの投稿など)

この状態でターミナルを見てみるとコンソールが起動していると思います。
下記のような入力街の状態です。

ターミナル
pry(#<SampleController>)>

ここにparamsと入力すると送られているデータが配列で確認できます。
うまく保存ができない時に試すと原因が分かることがあります。

②テストコードでの使い方

※テストコードの書き方の詳細は省きます。
以下のように異常系のテストコードを書く際にbinding.pryで処理を止め、エラーメッセージがどういうものか確認します。

context '新規登録がうまくいかない時' do
  it "名前(name)が空だと登録できない" do
    @user.name = ''
    @user.valid?
    binding.pry
  end
end

上記の記述をしてテストコードを実行するとターミナルでコンソールが起動するので

ターミナル
user.errors.full_messages

と入力するとエラーメッセージを出力してくれます。

以上です。