This appears to be expected behaviour. If so, why? Is it possible to dynamically update the definition of A::C so it would act as if it were originally defined within module A?
CONST = "outer" module A CONST = "inner" # This is A::CONST end module A class B def B.get_const CONST end end class C end end
puts A::B.get_const #inner
puts A::C.get_const #outer