エラーの時にはデバッグツールを使ってバグを発見したり、処理を止めて動作を確認したりします。
私はpry-rails
を利用しているのでその使い方をまとめます。
pry-rails
Railsにおけるデバッグ用のGemです。
私の主な使い方はコントローラー内で記述し、その処理を止めることでどんなデータが渡っているかなどを調べるのに使っています。
テストコードを書く際などにもエラー文を調べるために利用したりします。
準備
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
と入力するとエラーメッセージを出力してくれます。
以上です。