From: Ken Ballou Date: 2009-05-14T08:24:41+09:00 Subject: Bug report involving class variables (Slight rant: I tried to submit this bug report through the tracker system at redmine.ruby-lang.org. After trying twice to get a username and password [since the first attempt would not recognize the username and password even after I clicked the "confirm" link], I was finally able to log in. When I tried to submit a new issue report, the form complained that the "mailing-list" field could not be blank, even though there were no choices in the drop-down box and I could not type in the text area. I gave up.) OK, on to the bug report. Since I didn't really understand the example of class variables on pages 337-8 of "Programming Ruby 1.9", I decided to try the code. I found that the output was different for Ruby 1.9.0 and Ruby 1.9.1p129, and neither agreed with the book. This seems like it may be a defect in Ruby 1.9. Version information: 1.9.0: ruby -v reports "ruby 1.9.0 (2006-06-08) [x86_64-linux]" 1.9.1: ruby -v reports "ruby 1.9.1p129 (2009-05-12 revision 23412) [i686-linux]" Here is the code I used for this test: ##### begin classvars.rb class Holder @@var = 99 def Holder.var=(val) @@var = val end def Holder.read_var @@var end def var @@var end end @@var = "top level variable" a = Holder.new puts "a.var: #{a.var}" Holder.var = 123 puts "a.var: #{a.var}" def a.get_var @@var end puts "a.get_var: #{a.get_var}" puts "@@var: #{@@var}" puts "Holder.read_var: #{Holder.read_var}" ##### end classvars.rb Here is the output: Ruby 1.9.0: a.var: 99 a.var: 123 a.get_var: top level variable @@var: top level variable Holder.read_var: 123 Ruby 1.9.1p129: a.var: top level variable a.var: 123 a.get_var: 123 @@var: 123 Holder.read_var: 123 (I'm not entirely sure I understand why the first call to a.var should return the string "top level variable" but the second should return the Fixnum 123 as the book claims, but that's not part of the bug report.) Perhaps someone who has more luck than I do with the issue tracker system can enter this report? Thank you, and I vaguely apologize for the rant. I'm just feeling beaten up by the issue tracker system. - Ken