È sempre possibile "cancellare" il registro di irb delle variabili locali richiamando una subshell irb. Pensa a come funzionano le shell Bash rispetto alle variabili di ambiente non esportate. Dal momento che hai attivato la modalità interattiva, questa soluzione dovrebbe funzionare per questo.
Per quanto riguarda il codice di produzione, non vorrei indefinire le variabili locali come parte di una soluzione - gli hash con chiave probabilmente sarebbero migliori per quel tipo di scenario.
Ecco cosa intendo:
$ 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"
fonte
2010-07-08 05:13:07
hmm, seccante che non ci siano metodi del genere. Suppongo di poter rimanere attaccato alle variabili di istanza per ora. – Peter
Questi link non sembrano più essere nel posto giusto. – jcollum
@jcollum grazie. 'remove_instance_variable' e' remove_const' sono metodi privati quindi non sembrano più essere inclusi nella documentazione su ruby-doc.org. Ho aggiornato la risposta per utilizzare collegamenti equivalenti a apidock.com – mikej