1.4 Knowing Your Inheritance

Know those sub-classes

The final lifecycle callback is the Class#inherited method, which is invoked whenever a given Class is sub-classed. It receives exactly one parameter, which is the sub-class (again, not the name of the sub-class, but rather the sub-class itself).

Here's an exercise so you can get your feet wet.

class Room
class Room
  @@subclasses = []
  
  def self.subclasses
    @@subclasses
  end
end
 
 
 
 

Hint

Implement inherited as a self method on Room and store the parameter it receives in @@subclasses.

Output Window

And we're done

With this, we're done with Ruby's Object Lifecycle Callbacks. Use them sparingly, use them well.

Here's a final exercise to keep them fresh in your mind. It's based on a common pattern seen in many Ruby gems. All you should do is add the lifecycle callbacks containing code necessary to make the tests pass.

module Gym
module Gym
  module ClassMethods
    def build
    end
  end
  
  module InstanceMethods
    def open
    end
    
    def book_for_practice
    end
    
    def close
    end
  end
end
 
 
 

Hint

Add an included callback to Gym that in turn includes Gym::InstanceMethods into the target class and extends the target with Gym::ClassMethods.

Output Window

Congratulations, guest!


% of the book completed

or

This lesson is Copyright © 2011-2025 by Sidu Ponnappa and Jasim A Basheer