From: "matz (Yukihiro Matsumoto)" Date: 2012-05-30T09:36:37+09:00 Subject: [ruby-core:45314] [ruby-trunk - Feature #6513] Make method_missing to lookup in constants too Issue #6513 has been updated by matz (Yukihiro Matsumoto). I am negative, since it gives more chance to confuse users, e.g. mere constant definition can differentiate the meaning of the code. ---------------------------------------- Feature #6513: Make method_missing to lookup in constants too https://bugs.ruby-lang.org/issues/6513#change-26898 Author: egor.homakov (egor homakov) Status: Feedback Priority: Normal Assignee: Category: Target version: =begin First letter of constant is always a capital letter(in Ruby). if you define method: def Hi 1 end You're not able to use it w/o (): Hi it looks up for constant and raises error. only: Hi() or send(:Hi) None of code style guides teaches to use capital letters in methods' names. It's not convinient and bad practise. At the same time we use constants(it's modules/classes too) a lot. To access constant we use '(({::}))' The idea is to change the way how ruby looks up: (1) if first letter is capital - looking for constant. if not found - moving directly to step 2 (2) looking for local variable and method as we do it now This change will make syntax much more awesome & sexy: ActiveSupport::Autoload -> ActiveSupport.Autoload class Request < Rack::Request -> class Request < Rack.Request Currently I can give you a hence using this monkey patch: class Module alias method_missing const_get end module A module B class C end end end #A.B.C instead of A::B::C - awesome?! For me it is similar to changing hash syntax( => to sym: ''). I know, it is only 1 character less BUT it's 3 visible dots less too :) Thank you for considering this proposal. =end -- http://bugs.ruby-lang.org/