Я только что прошел через PragProg Непрерывное тестирование с Ruby , где говорится о вызове IRB
в контексте текущего класса для проверки кода вручную.
Однако они цитируют, что если вы вызываете IRB.start
в классе, self является предопределенным и относится к объекту, в котором мы находились, когда был вызван start , что неверно в моем случае.
Даже для очень простого примера, такого как
a = "hello"
require 'irb'
ARGV.clear # otherwise all script parameters get passed to IRB
IRB.start
Когда я пытаюсь получить доступ к a
переменная, я получаю очевидную
NameError: undefined local variable or method `a' for main:Object
Она работает, только когда я изменяю
на глобальную переменную
$a = "hello"
require 'irb'
ARGV.clear # otherwise all script parameters get passed to IRB
IRB.start
, тогда я могу получить к ней доступ
irb(main):001:0> $a
=> 1
Есть ли способ обойти это для доступа к локальным и экземплярам переменные в текущем классе?