Constant Lookup - For goodness sake it should at least see itself!
|ruby -v:||ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]||Backport:|
module Foo; end
NameError: uninitialized constant Foo::Bar::Bar
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.