Я только что просмотрел 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
на глобальную переменную
$a = "hello"
require 'irb'
ARGV.clear # otherwise all script parameters get passed to IRB
IRB.start
то я могу получить к нему доступ
irb(main):001:0> $a
=> 1
Есть ли способ обойти это, чтобы получить доступ к локальным переменным и переменным экземпляра в текущем классе?