From: Austin Ziegler Date: 2003-09-11T05:57:13+09:00 Subject: Re: What *are* variables? Which are nil now? > raise "@b1 is nil" if @b1.nil > @b1.each { |bf| You mean @b1.nil? -- right? irb(main):004:0> class B irb(main):005:1> def foo irb(main):006:2> @b1 = [] irb(main):007:2> raise "@b1 is nil" if @b1.nil? irb(main):008:2> @b1 = nil irb(main):009:2> raise "@b1 is nil" if @b1.nil? irb(main):010:2> @b1.each { |e| print "." } irb(main):011:2> end irb(main):012:1> end => nil irb(main):013:0> B.new.foo RuntimeError: @b1 is nil from (irb):9:in `foo' from (irb):13 irb(main):014:0> Is there a chance that @b1 is becoming nil between your test and the each because the program is threaded? As far as I know, there's no way to know what variables (labels) are referring to what values (objects). -austin -- austin ziegler * austin@halostatue.ca * Toronto, ON, Canada software designer * pragmatic programmer * 2003.09.10 * 16.50.48