Problem with Module/Class name resolution

Hi,

consider the following:

module A
X = 1
end

p A::X # => 1

module B
include A
end

p B::X # => 1

module A
module Help
p X # => 1
end
end

module B
module Help
p X # => NameError: uninitialized constant B::Help::X
end
end

Why does referencing X from A, B, and A::Help work but not from
B::Help although A is included in B? Is there a work-around to make
this work?

Bye,
Thomas

To expand the knowledge on this weirdness:

irb(main):001:0> module A
irb(main):002:1> module H
irb(main):003:2> end
irb(main):004:1> end
=> nil
irb(main):005:0> module B
irb(main):006:1> include A
irb(main):007:1> end
=> B
irb(main):008:0> module B
irb(main):009:1> module H
irb(main):010:2> end
irb(main):011:1> end
=> nil
irb(main):012:0> A::H.object_id == B::H.object_id
=> false
irb(main):014:0> B::H
=> B::H # it exists

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