From: Brian Ford Date: 2012-03-02T03:58:52+09:00 Subject: [ruby-core:43036] [ruby-trunk - Bug #6078] The name of a module nested in an anonymous module depends on how it was created Issue #6078 has been updated by Brian Ford. There is a case not given above where it may make sense to give the class/module a name based on #inspect output of the containing class. This case is when the containing class is a singleton class: $ irb 1.9.3p125 :001 > obj = Object.new => # 1.9.3p125 :002 > class << obj 1.9.3p125 :003?> class B 1.9.3p125 :004?> end 1.9.3p125 :005?> end => nil 1.9.3p125 :006 > obj.singleton_class.name => nil 1.9.3p125 :007 > obj.singleton_class.const_get(:B).name => "#::B" 1.9.3p125 :008 > However, note that the singleton class itself has no name, so giving the nested class/module a name like "#::B" seems wrong. Thanks, Brian ---------------------------------------- Bug #6078: The name of a module nested in an anonymous module depends on how it was created https://bugs.ruby-lang.org/issues/6078 Author: Brian Ford Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin10.8.0] If a module is nested under an anonymous module, the nested modules name will depend on how the module is created. See below: $ irb 1.9.3p125 :001 > m = Module.new => # 1.9.3p125 :002 > n = Module.new => # 1.9.3p125 :003 > m::N = n => # 1.9.3p125 :004 > m.name => nil 1.9.3p125 :005 > n.name => nil 1.9.3p125 :006 > m.constants => [:N] 1.9.3p125 :007 > module m::O 1.9.3p125 :008?> end => nil 1.9.3p125 :009 > m.constants => [:N, :O] 1.9.3p125 :010 > m::N.name => nil 1.9.3p125 :011 > m::O.name => "#::O" 1.9.3p125 :012 > m.const_get(:N).name => nil 1.9.3p125 :013 > m.const_get(:O).name => "#::O" 1.9.3p125 :014 > M = m => M 1.9.3p125 :015 > m::N.name => "M::N" 1.9.3p125 :016 > m::O.name => "#::O" Thanks, Brian -- http://bugs.ruby-lang.org/