LoginSignup
1
0

More than 1 year has passed since last update.

pry

Railsではpryを使うことによって、プログラムを一時的に止めることができます。
一時的に止めることによって何が嬉しいのかというと、途中経過をみることができます。

大抵の場合、バックエンド側でデータを取得してクライアント側に渡すと思いますが、このデータがどこまで持ってこれているのかだったり、そのオブジェクトが思うような状態になっているのかの確認をクライアント側に来て初めてするのでは効率が悪いです。
プログラムを途中で止めることによって、その時点でのデータやオブジェクトの状態を確認することができます。

pry-railsをGemfileに追加し、bundle installします。
止めたい場所に、binding.pryを追加することによって一時的に止めることができます。

user.rb
    class User < ApplicationRecord
        def publish_post
            binding.pry
            user.posts.create(title: "hello", content: "world")
            bining.pry
        end
    end

userに紐づくpostが1つ作成されるようなpublish_postメソッドを定義して、実際に動かしてみます。

pry.rb
    pry(main)>  user = User.first
    pry(main)>  user.publish_post
    pry(main)> user.publish_post
    
    From: /app/app/models/user.rb:69 User#publish_post:
    
        68: def publish_post
     => 69:   binding.pry
        70:   self.posts.create(title: "hello", content: "world")
        71:   binding.pry
        72: end

↑ このような画面になり、この時点でのオブジェクトの状態などを確かめることができます。

pry.rb
    pry(#<User>)> self.posts
    => []

この時点ではuserに紐づくpostが作られていないことがわかります。
exitして次のbinding.pryまで飛びます。

pry.rb
    pry(#<User>)> exit
    From: /app/app/models/user.rb:71 User#publish_post:
    
        68: def publish_post
        69:   binding.pry
        70:   self.posts.create(title: "hello", content: "world")
     => 71:   binding.pry
        72: end

    pry(#<User>)> self.posts
    => [#<Post:0x00007f848c6e0358
      id: 8,
      title: "hello",
      content: "world",
      user_id: 1,
      created_at: Sun, 04 Dec 2022 10:54:52.767992000 UTC +00:00,
      updated_at: Sun, 04 Dec 2022 10:54:52.767992000 UTC +00:00>]

2つ目のbinding.pryではuserに紐づくpostが作成されているのが確認できます。
このように段階を踏みながらデータの状態を確認することができます。
pry-navを入れるとより便利になるかと思います。

log

ログを見ることでも、途中経過を確認できます。
Railsの開発環境のログはlog/development.logにたまっていきます。
そのファイルを直接見ても見にくいのでlessコマンドを使います。

    less log/development.log

スクリーンショット 2022-12-04 20.12.34.png
もっと見にくくなってしまいました。
-Rオブションをつけることによって、見やすくなります。

    less -R log/development.log

スクリーンショット 2022-12-04 20.13.51.png
Shift + gで最終行(最新のログ)まで飛ぶことができます。

/を使うことによりファイル内検索ができます。
例えば、/12-04とすると以下のように一致する部分の色が変化します。
スクリーンショット 2022-12-04 20.22.08.png

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