byebugをつかうと、
ruby2.0系スクリプトを一行毎に実行したり
値を確認したり内部でirbを実行できたり(!)します
bash@ruby-code$ byebug byebugtest.rb [1, 10] in /Users/shironoryouta/src/ruby-code/byebugtest.rb => 1: def sample_func( a, b ) 2: a + b 3: end 4: 5: puts 'hello' 6: 7: sum = 0 8: 9: sum = sample_func(1, 8) 10: (byebug)
ここで入力が可能となるので、
まずは一行実行する"step"を放り込みます。
(byebug) step [1, 10] in /Users/shuzo/src/ruby-code/byebugtest.rb 1: def sample_func( a, b ) 2: a + b 3: end 4: => 5: puts 'hello' 6: 7: sum = 0 8: 9: sum = sample_func(1, 8) 10: (byebug)
やったぜ。
更にstepを続けていきます。
putsで表示された文字列が出てるのが確認いただるかと
(byebug) step
hello
[2, 11] in /Users/shuzo/src/ruby-code/byebugtest.rb
2: a + b
3: end
4:
5: puts 'hello'
6:
=> 7: sum = 0
8:
9: sum = sample_func(1, 8)
10:
11: sum -= 1
(byebug) displayは変数の値を確認するコマンドです。
(byebug) display sum
1: sum = nil
(byebug) step
1: sum = 0
[4, 13] in /Users/shuzo/src/ruby-code/byebugtest.rb
4:
5: puts 'hello'
6:
7: sum = 0
8:
=> 9: sum = sample_func(1, 8)
10:
11: sum -= 1
12:
13: puts 'bye'
(byebug) display sum
2: sum = 0
[1, 10] in /Users/shuzo/src/ruby-code/byebugtest.rb
1: def sample_func( a, b )
=> 2: a + b
3: end
4:
5: puts 'hello'
6:
7: sum = 0
8:
9: sum = sample_func(1, 8)
10:
(byebug) step
1: sum = 9
2: sum = 9
[4, 13] in /Users/shironoryouta/src/ruby-code/byebugtest.rb
4:
5: puts 'hello'
6:
7: sum = 0
8:
9: sum = sample_func(1, 8)
10:
=> 11: sum -= 1
12:
13: puts 'bye'
(byebug) display sum
3: sum = 9やめるにはexit
(byebug) exit Really quit? (y/n) y
なんと、内部でirbやpryを呼び出す事も可能です。
こりゃもうわかんねぇな
(byebug) irb irb(main):001:0>