Some days ago I was defining a class, but forgot to use the leading @
for an instance variable. But it still works -- that variable was made
accessible by attr_accessor statement. So my question: 

Why gives the statement "puts a" no error message? In my opinion it
should give one, I forgot to use @. The "attr_accessor :a" was only
there to allow access from outside of that class, for instance
variables.

#!/usr/bin/ruby -w
class Test
  attr_accessor :a
  def initialize
    @a = 0
    @b = 1
  end
  def show_values
    puts a # should be @a, but seems to work
    puts b # gives an error, as expected
  end
end
t = Test.new
t.show_values

Output is:
ruby --version
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]

ruby test.rb 
0
test.rb:11:in `show_values': undefined local variable or method `b' for
#<Test:0x7f85f99c02f8 @b=1, @a=0> (NameError)
	from test.rb:16

Best regards,

Stefan Salewski