From: Anuj Dutta Date: 2011-05-28T23:05:53+09:00 Subject: [ruby-core:36529] [Ruby 1.9 - Bug #4795] Nested classes don't seem to resolve correctly when another class exists with the same name Issue #4795 has been updated by Anuj Dutta. The call to 'Baz' in method 'x' will look up the ancestor chain and find the Baz constant defined for Object(because of class Baz) and uses it. However, if you qualify the call to Baz like this: def x Foo::Bar::Baz.new.say end Then it will give the desired result. ---------------------------------------- Bug #4795: Nested classes don't seem to resolve correctly when another class exists with the same name http://redmine.ruby-lang.org/issues/4795 Author: John Feminella Status: Open Priority: Normal Assignee: Category: Target version: ruby -v: ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] # in /tmp/foo.rb module Foo end module Foo::Bar class Baz; end end class Baz def say "::Baz" end end class Foo::Bar::Baz def say "::Foo::Bar::Baz" end def x Baz.new.say end end # in irb: > load '/tmp/foo.rb' => true > Foo::Bar::Baz.new.x => "::Baz" # expected `"::Foo::Bar::Baz"` =begin This doesn't seem like the expected result. Have I misunderstood how constants work? =end -- http://redmine.ruby-lang.org