Vous pouvez toujours "en clair" de la cisr registre de variables locales, en invoquant un cisr shell interne est exécuté. Pensez à comment Bash coquilles de travail à l'égard de désexporter variables d'environnement. Puisque vous dessus décrite mode interactif, cette solution devrait travailler.
En matière de production de code, je ne veux pas annuler la définition des variables locales dans le cadre d'une solution - clé hachages serait probablement préférable pour ce type de scénario.
Voici ce que je veux dire:
$ irb
irb(main):001:0> a = "a"
=> "a"
irb(main):002:0> defined? a
=> "local-variable"
irb(main):003:0> irb # step into subshell with its own locals
irb#1(main):001:0> defined? a
=> nil
irb#1(main):002:0> a
NameError: undefined local variable or method `a' for main:Object
from /Users/dean/.irbrc:108:in `method_missing'
from (irb#1):2
irb#1(main):003:0> exit
=> #<IRB::Irb: @context=#<IRB::Context:0x1011b48b8>, @signal_status=:IN_EVAL, @scanner=#<RubyLex:0x1011b3df0>>
irb(main):004:0> a # now we're back and a exists again
=> "a"