I recently came across this interesting way to keep track of all instances of a class.

class Car
  @@cars = []

  def initialize(make, model)
    @make = make
    @model = model
    @@cars << self
  end

  def self.all
    @@cars
  end
end

So, whenever we create a new instance of the class, it pushes itself onto a class-level array. Calling Car.all will return an array containing all instances that have been created. Pretty awesome, right?