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

On Sep 21, 6:32 pm, Perry S. [email protected] 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:

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).

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs