From: "ko1 (Koichi Sasada)" Date: 2013-02-18T08:54:10+09:00 Subject: [ruby-core:52408] [ruby-trunk - Bug #7695] Constant Lookup - For goodness sake it should at least see itself! Issue #7695 has been updated by ko1 (Koichi Sasada). Assignee set to nobu (Nobuyoshi Nakada) ---------------------------------------- Bug #7695: Constant Lookup - For goodness sake it should at least see itself! https://bugs.ruby-lang.org/issues/7695#change-36460 Author: trans (Thomas Sawyer) Status: Open Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: core Target version: next minor ruby -v: ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux] =begin Example: >> module Foo; end >> module Foo::Bar >> p Bar >> end NameError: uninitialized constant Foo::Bar::Bar from (irb):3:in `' from (irb):2 from /opt/Ruby/1.9.3-p327/bin/irb:12:in `
' While I understand the technical details of constant lookup and why this happens, it just seems plan wrong on the face of it. Why wouldn't a module/class not at least see ((*itself*))!? For use case -- I was writing some code and I determined that a whole set of classes should be under a secondary namespace. It was convenient to go from `module Realms` to `class Realms::Library`, but alas, it broke the code, because none of the code inside could see `Library` anymore. So I had to go through all the files, use two lines instead on one, i.e. `module Realms` then `class Library`, indent every line another tab and finally add another `end` at the bottom of each file. A pain in the arse! While it might not technically be a "bug", I am going to go ahead and file it as one b/c to me it really seems like one. And if I didn't know exactly how constant lookup worked I would think it one too. =end -- http://bugs.ruby-lang.org/