From: Stefan Salewski Date: 2010-10-07T07:11:58+09:00 Subject: Missing @ for instace variable in class, but no error message 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 # (NameError) from test.rb:16 Best regards, Stefan Salewski