Skip to Content
Ruby on Rails® for Microsoft Developers
book

Ruby on Rails® for Microsoft Developers

by Antonio Cangiano
April 2009
Intermediate to advanced content levelIntermediate to advanced
479 pages
12h 55m
English
Wrox
Content preview from Ruby on Rails® for Microsoft Developers

4.8. Method Name Resolution

Instance methods, singleton methods (including class methods), objects, classes, eigenclasses, modules that act as mixins, super, method_missing... How does a receiver know where to find a method? The Ruby interpreter uses a specific algorithm to look up methods. Consider the following method invocation:

[1,2,3].method1

Assume that we haven't defined method1 anywhere for that array.

Ruby will follow each step until it finds a matching method:

  1. Look into the eigenclass of that particular instance. Is method1 defined in there?

  2. Is there an instance method method1 defined by the Array class?

  3. Does the mixin Enumerable, included in the class Array, have a method1?

  4. Does the superclass of Array (that is, Object) include a method1?

  5. Does the mixin Kernel, included by the superclass Object, include method1?

  6. Starting from the eigenclass, and through all the classes and modules in the order presented here (eigenclass, Array, Enumerable, Object, Kernel), is method_missing defined? Yes, the first method_missing is defined by the Kernel mixin and can therefore be invoked. method_missing will raise a NoMethodError error.

If you were to run [1,2,3].length, the method name resolution algorithm would stop at the second step.

You can see the ancestor of a class, including its mixins, through the ancestors method. For example String.ancestors returns [String, Enumerable, Comparable, Object, Kernel].

Class method lookup works in almost the same manner, which is not surprising ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Ruby on Rails™ 3 Tutorial: Learn Rails™ by Example

Ruby on Rails™ 3 Tutorial: Learn Rails™ by Example

Michael Hartl

Publisher Resources

ISBN: 9780470374955Purchase book