From: nobu@... Date: 2015-11-04T13:43:45+00:00 Subject: [ruby-core:71336] [Ruby trunk - Bug #11655] [Rejected] Can't refine Object.const_missing Issue #11655 has been updated by Nobuyoshi Nakada. Status changed from Open to Rejected It's a spec. Refinements targets only explicit invocations. ---------------------------------------- Bug #11655: Can't refine Object.const_missing https://bugs.ruby-lang.org/issues/11655#change-54708 * Author: D.E. Akers * Status: Rejected * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0dev (2015-11-04 trunk 52451) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- ```ruby TracePoint.new(:c_call) { |tp| if tp.method_id == :const_missing puts "top-level const_missing is #{tp.self}'s" end }.enable { Foo rescue 1 } # => top-level const_missing is Object's module M refine Object.singleton_class do def const_missing c 'Explicit invocation works.' end def new 'Can refine other singleton methods.' end end end using M puts Object.const_missing :Foo # => Explicit invocation works. Foo rescue p $! # => # def Object.const_missing c 'So does direct definition.' end puts Foo # => So does direct definition. puts Object.new # => Can refine other singleton methods. ``` Is it a bug? -- https://bugs.ruby-lang.org/