From: "egor.homakov (egor homakov)" Date: 2012-05-30T20:24:45+09:00 Subject: [ruby-core:45322] [ruby-trunk - Feature #6513] Make method_missing to lookup in constants too Issue #6513 has been updated by egor.homakov (egor homakov). @sorah it's probably the best possible example - I met it a while ago in nokogiri and was confused to see "def XML". dirty.Nokogiri.XML.new("").class - neat @matz every "new" thing confuses until user learns how it works now. I've been using dot syntax for a while and now :: looks very verbose to me. I aliased method_missing with const_get and happy with that but ... it's slower. ok let's close it :'( ---------------------------------------- Feature #6513: Make method_missing to lookup in constants too https://bugs.ruby-lang.org/issues/6513#change-26903 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/