Ruby: Finding where a method is defined

Updated . Posted . Visible to the public.

Dead simple: Get the method object and ask for its owner:

"foo".method(:upcase)
=> #<Method: String#upcase> 
"foo".method(:upcase).owner
=> String

Ruby 1.9 adds a method Method#source_location that returns file and line number where that method is defined.

class Example; def method() end end
=> nil
Example.new.method(:method).source_location
=> ["(irb)", 11] 

"foo".method(:upcase).source_location
=> nil # String#upcase is a native method that's defined in C

Rumor has it in Ruby 1.8 there is a gem ruby18_source_location that does something similar.


Also see

Dominik Schöler
Last edit
Felix Eschey
License
Source code in this card is licensed under the MIT License.
Posted by Dominik Schöler to makandra dev (2013-03-20 09:28)