Module: Lims::Core::SubclassTracker

Included in:
Actions::Action, Resource
Defined in:
lib/lims-core/subclass_tracker.rb

Class Method Summary collapse

Class Method Details

.extended(klass) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/lims-core/subclass_tracker.rb', line 12

def self.extended(klass)
  (class <<klass; self; end).send :attr_accessor, :subclasses
  (class <<klass; self; end).send :define_method, :inherited do |subclass|
    klass.subclasses << subclass
    super(subclass)
  end
  (class <<klass; self; end).send :define_method, :included do |submodule|
  klass.subclasses << submodule
  (class <<submodule; self; end).send :define_method, :inherited do |subclass|
      klass.subclasses << subclass
      super(subclass)
    end
    super(submodule)
  end
  klass.subclasses = []
end