Class variables

I must have a fundamental misunderstanding of Ruby. I am hoping someone
here can help. This is the essence of what I am doing. I am doing this
inside Ruby On Rails so it may be that Rails is doing something I don't
know about. But here is what I am doing:

class SubClass1 < ParentClass
  @@var = "hello1"
end

class SubClass2 < ParentClass
  @@var = "hello2"
end

class SubClass3 < ParentClass
  @@var = "hello3"
end

class ParentClass
  def foo
    puts @@var
  end
end

i = SubClass1.new
i.foo()

The call to foo and the puts will print out what appears to be a random
value. Sometimes it is "hello1" but other times it is not. It is
always one of the strings, especially when going through Rails and
interacting with the web server, it seems random which string will print
out.

What am I missing here? This seems pretty obvious and straight forward.

Thank you for your help,
pedz

···

--
Posted via http://www.ruby-forum.com/.

Please search the mailing list archives, and/or read the (free) online
books about it. You will find many, many discussions over how class
variables work when inheritance is involved (hint: they're shared),
and many, many suggestions that in most cases you really want class
instance variables (which are not shared between parent/subclasses).

···

On Sep 21, 6:32 pm, Perry Smith <p...@easesoftware.com> wrote:

I must have a fundamental misunderstanding of Ruby. I am hoping someone
here can help. This is the essence of what I am doing. I am doing this
inside Ruby On Rails so it may be that Rails is doing something I don't
know about. But here is what I am doing: