Hooks
Module, Class, and Objectimplement 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 ...
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.
Read now
Unlock full access