Module Sequel::Plugins::Subclasses
In: lib/sequel/plugins/subclasses.rb

The Subclasses plugin keeps track of all subclasses of the current model class. Direct subclasses are available via the subclasses method, and all descendent classes are available via the descendents method.

  c = Class.new(Sequel::Model)
  c.plugin :subclasses
  sc1 = Class.new(c)
  sc2 = Class.new(c)
  ssc1 = Class.new(sc1)
  c.subclasses    # [sc1, sc2]
  sc1.subclasses  # [ssc1]
  sc2.subclasses  # []
  ssc1.subclasses # []
  c.descendents   # [sc1, ssc1, sc2]

You can provide a block when loading the plugin, and it will be called with each subclass created:

  a = []
  Sequel::Model.plugin(:subclasses){|sc| a << sc}
  class A < Sequel::Model; end
  class B < Sequel::Model; end
  a # => [A, B]

Methods

apply  

Classes and Modules

Module Sequel::Plugins::Subclasses::ClassMethods

Public Class methods

Initialize the subclasses instance variable for the model.

[Source]

    # File lib/sequel/plugins/subclasses.rb, line 31
31:       def self.apply(model, &block)
32:         model.instance_variable_set(:@subclasses, [])
33:         model.instance_variable_set(:@on_subclass, block)
34:       end

[Validate]