module MDT::Extensible

A module to make the class a MDT base class

Public Class Methods

descendants() click to toggle source

Exposes descendants variable.

   # File lib/mdt/modules/extensible.rb
30 def self.descendants
31   @descendants
32 end
included(klass) click to toggle source

Adds needed class methods when included in a class. Arguments:

  • klass - the class a module is being included in

   # File lib/mdt/modules/extensible.rb
 7 def self.included(klass)
 8   klass.class_eval do
 9     # Stores the descendant classes.
10     @descendants = []
11     # Defines a key that a subclass can be found by. Raises MDT::Errors::OverrideNeeded.
12     def self.key
13       raise MDT::Errors::OverrideNeeded.new('key')
14     end
15 
16     # Defines a set of subkeys that can be passed to class methods. Raises MDT::Errors::OverrideNeeded.
17     def self.subkeys
18       raise MDT::Errors::OverrideNeeded.new('subkeys')
19     end
20 
21     # Adds a subclass to the descendants variable when it is inherited and makes the list unique.
22     # Arguments
23     # * +subclass+ - a subclass that the class is inherited by.
24     def self.inherited(subclass)
25       @descendants << subclass
26       @descendants.uniq!
27     end
28 
29     # Exposes descendants variable.
30     def self.descendants
31       @descendants
32     end
33   end
34 end
inherited(subclass) click to toggle source

Adds a subclass to the descendants variable when it is inherited and makes the list unique. Arguments

  • subclass - a subclass that the class is inherited by.

   # File lib/mdt/modules/extensible.rb
24 def self.inherited(subclass)
25   @descendants << subclass
26   @descendants.uniq!
27 end
key() click to toggle source

Defines a key that a subclass can be found by. Raises MDT::Errors::OverrideNeeded.

   # File lib/mdt/modules/extensible.rb
12 def self.key
13   raise MDT::Errors::OverrideNeeded.new('key')
14 end
subkeys() click to toggle source

Defines a set of subkeys that can be passed to class methods. Raises MDT::Errors::OverrideNeeded.

   # File lib/mdt/modules/extensible.rb
17 def self.subkeys
18   raise MDT::Errors::OverrideNeeded.new('subkeys')
19 end