Как запустить IRB.start в контексте текущего класса

Я только что прошел через 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

Есть ли способ обойти это для доступа к локальным и экземплярам переменные в текущем классе?

27
задан Jakub Arnold 15 November 2010 в 23:29
поделиться