I see the following behavior in both MRI 2.0 and jruby 1.7.16.1:
irb(main):001:0> a
NameError: undefined local variable or method `a' for main:Object
from (irb):1
from /usr/bin/irb:12:in `<main>'
irb(main):002:0> a = 2 unless true
=> nil
irb(main):003:0> a
=> nil
irb(main):004:0>
I expected a
to remain undefined because =
has higher precedence than unless
. What am I missing?