LoginSignup
1
1

More than 1 year has passed since last update.

binding.pryを使えるようになりたい!

Last updated at Posted at 2021-08-01

はじめに

本記事は、「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アクションでミスが発生しているということですね。

終わり

学習段階で、ここまでの理解です。
正直申し上げると、理解が浅く、使いこなせるレベルまで到達していないことが、
今回投稿してみてわかりました。

明日、メンターへさらに理解をするために、
質問し、理解を深めます。
さらに深く説明できるようになれば、また投稿したいと思います。

それでは、引き続きがんばりましょう!!

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