Hook Methods
Where you get one of Bill’s thorough lessons in advanced coding.
The object model is an eventful place. Lots of things happen there as your code runs: classes are inherited, modules are mixed into classes, and methods are defined, undefined, and removed. Imagine if you could “catch” these events like you catch GUI mouse-click events. You’d be able to execute code whenever a class is inherited or whenever a class gains a new method.
Well, it turns out you can do all these things. This program prints a notification on the screen when a class inherits from String:
| class String |
| def self.inherited(subclass) |
| puts "#{self} was inherited by #{subclass}" |
| end |
| end |
| |
| class MyString < String; ... |
Get Metaprogramming Ruby 2 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.