К сожалению, Ruby на самом деле не имеет встроенного отладчика на основе точек останова в этом смысле.
Самое близкое, что вы можете сделать, это запустить промежуточную программу сеанса IRB, которая останавливает его и позволяет проверять текущее состояние программы, оценивая команды Ruby. Это доступно в Ruby 2.4 и выше как binding.irb
. (Для этого доступны документы для класса Binding .)
IRB не позволяет вам двигаться вперед, как Pry с Pry-Nav, но вы можете просто вставить выражения binding.irb
в любом количестве мест, где вам нужно, и exit
от IRB, чтобы "перейти" к следующему.
Возьмите эту простую программу. Я хочу проверить значение этих трех переменных, которые я назначил, поэтому я положил туда binding.irb
:
puts "=== Hello! ==="
a = 1
b = 2
c = 3
binding.irb
puts "=== Goodbye! ==="
После запуска этой программы Ruby выдаст запрос IRB после его оценки c = 3
, где вы можете запустить Ruby код для проверки значений и еще много чего (наберите exit
, чтобы оставить):
=== Hello! ===
From: test.rb @ line 7 :
2:
3: a = 1
4: b = 2
5: c = 3
6:
=> 7: binding.irb
8:
9: puts "=== Goodbye! ==="
irb(main):001:0> a
=> 1
irb(main):002:0> b
=> 2
irb(main):003:0> c
=> 3
irb(main):004:0> exit
=== Goodbye! ===