28.Rails|binding.pry

これまで余り使ってこなかったbinding.pryを使いこなせるようにしていきたいので、整理。

使い方①

例えば今の開発環境では、処理を止めたい箇所にbinding.pryと記述すれば、
Dcokerを立ち上げているConsole上で、その処理が止められた位置の前後で定義されている変数の中身などを確認できる。

使い方としては、エラーが発生していると思われる前の箇所にbinding.pryと記述するだけ。

使い方②

またbinding.pryを操作して、前後の処理をより詳細に確認したいなら。

Railsでは事前準備としてpry-byebugというGemが必要となるのでインストールし、
require 'pry'で呼び出す。

更にDockerを立ち上げた状態で、下記を実行してpry consoleを立ち上げる。

docker attach [コンテナ名]
  • サンプルコード
    6:         a = 1
    7:         b = 2
    8:         c = 3
    9:         binding.pry
 => 10:         sample = a * b * c
    11:        p sample
  • コマンド実行例
[1] pry(#~略~)> next
    6:         a = 1
    7:         b = 2
    8:         c = 3
    9:         binding.pry
    10:        sample = a * b * c
 => 11:         p sample
  • 変数名を指定して、中身を確認
[2] pry(#~略~)> sample
=> 6
よく使うコマンド
  • 現在のメソッド内で一行処理を進める
next
  • 次のメソッド内部に入る
step
  • pry(処理の中断状態)を終了し、プログラムの続きを実行
continue
  • 現在のメソッドを抜ける
finish
コマンド一覧(help)
Byebug
  backtrace          Display the current stack.
  break              Set or edit a breakpoint.
  continue           Continue program execution and end the pry session.
  finish             Execute until current stack frame returns.
  next               Execute the next line within the current stack frame.
  step               Step execution into the next line or method.

Bindingとは

そもそもBindingメソッドは、Kernel(OS上の中核処理を担うソフトウェア)上に定義されている。

Rubyではそれを組み込んで使用している。

docs.ruby-lang.org