NameError on accessing ancestor constants when using Class.new?
- by PDG
To my current knowledge Ruby classes defined with Class.new should not differ from classes created with the class keyword. Then why do following classes B and C behave differently?
class A
TEST = 'A'
def test
TEST
end
end
class B < A
def test
TEST
end
end
C = Class.new(A) {
def test
TEST
end
}
puts 'A: ' + A.new.test # => "A: A"
puts 'B: ' + B.new.test # => "B: A"
puts 'C: ' + C.new.test # => uninitialized constant TEST (NameError)
Tested with ruby 1.9.3p327 and ruby 1.8.7p358.