From: George Ogata Date: 2006-03-10T09:38:42+09:00 Subject: Re: Ruby Namespaces / Modules mental@rydia.net writes: > Quoting eastcoastcoder@gmail.com: > >> If I'm in the middle of module A::B::C, and I want to reference a >> class from A::B or from A::B::D, do I need to >> do ::A::B::Classname (or ::A::B::D::Classname)? >> >> It seems a bit repititous to me. A module shouldn't need to know >> it's ancestors all the way up - just what it needs to use. >> Having to keep track couples modules to a tree and obstructs >> refactoring. >> >> So, what say the veteran Rubyists? > > Try it! > > module A > module B > class Foo > end > module D > class Bar > end > end > end > module C > p B::Foo > p B::D::Bar > end > end It's also worth pointing out that: class A::B::Foo p C end is different to: module A module B class Foo p C end end end The latter may reference A::B::C or A::C, whereas the former cannot.