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/