O'Reilly logo

Professional Ruby on Rails™ by Noel Rappin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

14.2. Introspection Tools

Metaprogramming and introspection are fairly tightly integrated. When you're writing metaprogramming code, you will usually need to call methods or get the value of variables whose names are only determined when the code is run. Ruby contains a rich set of methods to allow access to the internal state of its objects. Most of this functionality is in the classes Class, Module, and Object.

The following tables provide a quick guide to the most commonly used methods. The eval family of methods is not included in this section, and some methods will be explained in more detail later in this chapter. The Module class, in particular, has some less commonly used introspection methods involving access control levels that are not listed here.

The first table describes the introspective methods of the Class class.

MethodDescription
inherited(subclass)Automatically called when a subclass of the class is defined.
SuperclassReturns the superclass of the class. If the class is Object, this returns nil.

The following table describes the introspective methods of the Module class.

MethodDescription
self.constantsReturns an array of all constants currently defined. This contains not just system-level constants, but also the classes and modules available. The names are returned as strings.
self.nestingReturns an array of all the nested modules currently in scope, innermost to outermost.
alias_method(new_name, old_name)Defines new_name as a copy of the definition of old_name

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required