From: Gavin Kistner Date: 2006-11-01T01:40:42+09:00 Subject: Class inheriting from class within the namespace Tree structures are interesting. Often the root of the tree is used as a handle for the tree itself. However, the tree often has additional methods beyond that of the root node. I couldn't figure out how to do this simply via inheritance due to chicken-and-egg problems with namespacing: class Tree < Tree::Node class Node end end #=> chicken-and-egg.rb:1: uninitialized constant Tree (NameError) I came up with two alternative techniques to achieve the same goal. I'm not wild about the way either are handled by RDoc (though the first is substantially better): # Technique 1: Using modules class Tree module NodeStuff #...all the meat here... end include NodeStuff class Node include NodeStuff end end # Technique 2: Conjur the chicken first, and kill it later class TmpTreeNode # ...all the meat here... end class Tree < TmpTreeNode Node = TmpTreeNode end Object.class_eval{ remove_const( :TmpTreeNode ) } Ideally, IMO, Ruby would let me do this: # No "Tree" module or class has yet been defined; # it is a pure namespace at this point class Tree::Node # ...all the meat here... end # Now Tree is a class class Tree < Tree::Node end I don't have any question, and it's not important enough to me to make an RCR for the above. I just thought I'd share these thoughts with the world.