From: "banister (john mair)" Date: 2013-02-13T02:40:37+09:00 Subject: [ruby-core:52160] [ruby-trunk - Feature #7836][Open] Need a way to get Method and UnboundMethod objects to methods overridden by prepended modules Issue #7836 has been reported by banister (john mair). ---------------------------------------- Feature #7836: Need a way to get Method and UnboundMethod objects to methods overridden by prepended modules https://bugs.ruby-lang.org/issues/7836 Author: banister (john mair) Status: Open Priority: Normal Assignee: Category: Target version: See the following code: module P def hello puts "from P" super end end class A def hello puts 'from A' end prepend P end A.instance_method(:hello).source_location == P.instance_method(:hello).source_location #=> true Discussion ---------- Since A.instance_method(:hello) effectively returns P.instance_method(:hello) it is impossible to get an UnboundMethod object to the original A#hello method. Tools like [Pry](http://pryrepl.org) need to access UnboundMethod objects to every active method in the system for debugging purposes. Possible solution -------------- Simply allow instance_method() to take a second boolean parameter, indicating whether methods injected by prepended modules are to be included, it would default to true: example: A.instance_method(:hello) #=> same as P#hello A.instance_method(:hello, false) #=> return strictly A#hello -- http://bugs.ruby-lang.org/