Given this code:
class Mammal
@@class_name = "mammal"
def self.class_name
@@class_name
end
end
class Dog < Mammal
@@class_name = "dog"
def self.class_name
@@class_name
end
end
Dog.class_name
# => dog
Mammal.class_name
# => dog
Why is this a feature of ruby? Seems like class variables follow a different scope than instance variables do for instances. Is a class variable's scope shared across its entire inheritance chain? If so, why is that? They are separate classes and should have scoped class variables, no? What am I missing?