はじめに
本記事は、「binding.pry」を今後活用できるようにするため、
現時点で学習したことをアウトプットします。
インストール
pry-rails
というGemをインストールする必要があります。
Gemfileに以下のコードを記述します。
gem 'pry-rails'
その後、ターミナルにてbundle install
します。
「binding.pry」に限らず、Gemをインストールする際には、bundle install
します。
エラーが発生した場合、原因がどのコードにあるのかを「binding.pry」を使って確認することができます。
コードで「binding.pry」という文字列をコード内に記述すると、
そこで、処理が止まります。
その後からの処理の結果を手動で確認することができます。
例文
class OrdersController < ApplicationController
def index
@order = Order.new
end
def create
@order = Order.new(order_params)
binding.pry
if @order.valid?
@order.save
return redirect_to root_path
else
render 'index'
end
end
private
def order_params
params.require(:order).permit(:price)
end
end
今回は、Ordersコントローラーのcreateアクションにエラーはないのかを確認するために、
9行目で、「binding.pry」を発動しています。
ここで「rails s」サーバーを起動させ、
指定した行為を実行すると、
ターミナル上で、
[1] pry(#<OrdersController>)>
と表示されます。
その後からの処置がどうなるのかを試したい時に、
その後の処理を記述することで、結果を確認することができます。
10行目で、
if @order.valid?
という記載があるので、
[1] pry(#<OrdersController>)> @order.valid?
と記述します。
すると、
[1] pry(#<OrdersController>)> @order.valid?
=> false
コード全体を記述していないため、わかりづらいですが、
結果は、「エラー」となりました。
*「valid?」は、エラーがある時は「false」、ない時は「true」となります。
コントローラーのcreateアクションでミスが発生しているということですね。
終わり
学習段階で、ここまでの理解です。
正直申し上げると、理解が浅く、使いこなせるレベルまで到達していないことが、
今回投稿してみてわかりました。
明日、メンターへさらに理解をするために、
質問し、理解を深めます。
さらに深く説明できるようになれば、また投稿したいと思います。
それでは、引き続きがんばりましょう!!