Pry("ぷらぁい" と発音します)はirbをもっと便利にしたものでRubyistならぜひ使うべきなgemです。しかもインストールはたったこれだけと非常に簡単です。
# pry-docは無くてもまぁいいですが、いろいろ調べられるので入れとくと良いでしょう。
Pryを使うとどういうことが出来るのかについてはこちらの動画をご覧ください。
#280 Pry with Rails - RailsCasts
さて、この動画の中でも説明されていますがbinding.pryと書くことで任意の場所にブレイクポイントを設置することができます。ブレイクポイントを設定しておけば、処理を実行した際にそこで止まって自動的にPryコンソールが立ち上がるためデバッグがしやすいというわけです。
例えばこの位置(7行目)にbinding.pryを仕込んでおけば、word_countメソッドが呼ばれて7行目に処理が来たタイミングで処理が止まりPryコンソールが立ち上がります。この状態ではその時点でのコンテキストで変数に自由にアクセスできるため、例えばwordsやcontentの値を見ることが可能です(定数でもインスタンス変数でもローカル変数でもアクセス可能)。そして調査が終わったらexitコマンドを実行すれば再び処理が動き出すのです。そして時は動き出す!!
ただ、これだけだとbinding.pryを仕込んだ場所でしか値を調べられません。もう1行処理が進んだらどうなるのかとかそういうことを調べたいこともあるでしょう。(´・ω・`)
そういった場合には nixme/pry-nav というgemをインストールしてください。このgemを入れることでcontinue, step, nextなどのコマンドが使えるようになりステップ実行ができるようになるので便利です。ぜひPryを使いこなして効率良いデバッグを行ってください〜!
【参考ページ】
Rubyistよ、irbを捨ててPryを使おう - TIM Labs
Rubyのデバッグに役立つ便利なPryの拡張まとめ | ましましブログ
# pry-docは無くてもまぁいいですが、いろいろ調べられるので入れとくと良いでしょう。
gem install pry pry-doc
Pryを使うとどういうことが出来るのかについてはこちらの動画をご覧ください。
#280 Pry with Rails - RailsCasts
さて、この動画の中でも説明されていますがbinding.pryと書くことで任意の場所にブレイクポイントを設置することができます。ブレイクポイントを設定しておけば、処理を実行した際にそこで止まって自動的にPryコンソールが立ち上がるためデバッグがしやすいというわけです。
2: attr_accessible :name, :content, :published_at 3: has_many :comments 4: 5: def word_count 6: words = content.scan(/\w+/) => 7: binding.pry 8: words.size 9: end 10: end
例えばこの位置(7行目)にbinding.pryを仕込んでおけば、word_countメソッドが呼ばれて7行目に処理が来たタイミングで処理が止まりPryコンソールが立ち上がります。この状態ではその時点でのコンテキストで変数に自由にアクセスできるため、例えばwordsやcontentの値を見ることが可能です(定数でもインスタンス変数でもローカル変数でもアクセス可能)。そして調査が終わったらexitコマンドを実行すれば再び処理が動き出すのです。そして時は動き出す!!
ただ、これだけだとbinding.pryを仕込んだ場所でしか値を調べられません。もう1行処理が進んだらどうなるのかとかそういうことを調べたいこともあるでしょう。(´・ω・`)
そういった場合には nixme/pry-nav というgemをインストールしてください。このgemを入れることでcontinue, step, nextなどのコマンドが使えるようになりステップ実行ができるようになるので便利です。ぜひPryを使いこなして効率良いデバッグを行ってください〜!
【参考ページ】
Rubyistよ、irbを捨ててPryを使おう - TIM Labs
Rubyのデバッグに役立つ便利なPryの拡張まとめ | ましましブログ