Read more

Ruby: Finding where a method is defined

Dominik Schöler
March 20, 2013Software engineer at makandra GmbH

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

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

Do you need DevOps-experts?

Your development team has a full backlog? No time for infrastructure architecture? Our DevOps team is ready to support you!

  • We build reliable cloud solutions with Infrastructure as code
  • We are experts in security, Linux and databases
  • We support your dev team to perform
Read more Show archive.org snapshot

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

Posted by Dominik Schöler to makandra dev (2013-03-20 10:28)