Chapter 15. Callbacks, hooks, and runtime introspection

 

This chapter covers

  • Runtime callbacks: inherited, included, and more
  • The respond_to? and method_missing methods
  • Introspection of object and class-method lists
  • Trapping unresolved constant references
  • Examining in-scope variables and constants
  • Parsing caller and stack trace information

In keeping with its dynamic nature and its encouragement of flexible, supple object and program design, Ruby provides a large number of ways to examine what’s going on while your program is running and to set up event-based callbacks and hooks—essentially, tripwires that are pulled at specified times and for specific reasons—in the form of methods with special, reserved names for which you can, if you wish, provide definitions. Thus you can rig a module so that a particular method gets called every time a class includes that module, or write a callback method for a class that gets called every time the class is inherited, and so on.

In addition to runtime callbacks, Ruby lets you perform more passive but often critical acts of examination: you can ask objects what methods they can execute (in even more ways than you’ve seen already) or what instance variables they have. You can query classes and modules for their constants and their instance methods.

15.1. Callbacks and hooks

15.2. Interpreting object capability queries

15.3. Introspection of variables and constants

15.4. Tracing execution

15.5. Callbacks and method inspection in practice

Summary

sitemap