セットアップ
$ gem install byebug
ブレークポイントの設定
止めたい箇所に「byebug」を記載
RSpec.describe MonthlyReport, type: :model do describe 'Validations' do subject { build(:monthly_report) } byebug it { is_expected.to be_valid } it { is_expected.to validate_presence_of(:user_id) } it { is_expected.to validate_presence_of(:month) } ・ ・ end
以下のようにbuybugコンソールが立ち上がり、停止する。
[20, 29] in /Users/hoge/work/ruby_study/rails_projects/sample/spec/models/sample_spec.rb 20: describe 'Validations' do 21: subject { build(:monthly_report) } 22: 23: byebug 24: => 25: it { is_expected.to be_valid } 26: it { is_expected.to validate_presence_of(:user_id) } 27: it { is_expected.to validate_presence_of(:month) }
ソース表示コマンド
前の10行を表示
(byebug) l-
現在の位置を再び表示
(byebug) list=
変数の検査
変数と値のリストを表示するのに便利なvarメソッド
(byebug) var local self = RSpec::ExampleGroups::MonthlyReport::Validations (byebug) var instance @children = [] @examples = [#<RSpec::Core::Example: ... @hooks = #<RSpec::Core::Hooks::HookCollections:... @metadata = {:execution_result=>#<RSpec::Core::Example::ExecutionResult:... (byebug) var const Concerning = Module::Concerning DelegationError = Module::DelegationError RUBY_RESERVED_WORDS = #<Set:... VERSION = 1.1.0
変数をウォッチ
displayにウォッチしたい変数を設定する。
(byebug) display @articles 1: @articles = nil
スタック内で移動するたびに、そのときの変数と値のリストが出力されます。変数の表示を止めるには、undisplayn (n は変数番号) を実行します。
上の例では変数番号は 1 になっている。
(byebug) undisplay1
ステップ実行
step nやnext nと入力することで、nステップずつ進めることも可能
ブレークポイント
設定方法
- break line: 現在のソースファイルの line で示した行にブレークポイントを設定
- break file:line [if expression]: fileのline行目にブレークポイントを設定。 expression が与えられた場合、デバッガを起動するにはこの式が true と評価される必要があります。
ブレークポイントリストの参照方法
(byebug) info breakpoints
削除方法
(byebug) delete 1 (byebug) info breakpoints No breakpoints.
番号を指定しない場合、現在有効なブレークポイントをすべて削除します。