Hooks
Module
, Class
, and Object
implement several callback methods, or hooks. These methods are
not defined by default, but if you define them for a module, class, or
object, then they will be invoked when certain events occur. This gives
you an opportunity to extend Ruby’s behavior when classes are
subclassed, when modules are included, or when methods are defined. Hook
methods (except for some deprecated ones not described here) have names that end in
“ed.”
When a new class is defined, Ruby invokes the class
method inherited
on the
superclass of the new class, passing the new class object as the
argument. This allows classes to add behavior to or enforce constraints
on their descendants. Recall that class methods are inherited, so that
the an inherited
method will be
invoked if it is defined by any of the ancestors of the new class.
Define Object.inherited
to receive
notification of all new classes that are defined:
def Object.inherited(c) puts "class #{c} < #{self}" end
When a module is included into a class or into another module, the
included
class method of the included
module is invoked with the class or module object into which it was
included as an argument. This gives the included module an opportunity
to augment or alter the class in whatever way it wants—it effectively
allows a module to define its own meaning for include
. In addition to adding methods to the
class into which it is included, a module with an included
method might also alter the existing methods of that ...
Get The Ruby Programming Language now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.