module Launchy::DescendantTracker
Use by either
class Foo extend DescendantTracker end
or
class Foo class << self include DescendantTracker end end
It will track all the classes that inherit from the extended class and keep them in a Set that is available via the ‘children’ method.
Public Instance Methods
children()
click to toggle source
The list of children that are registered
# File lib/launchy/descendant_tracker.rb, line 31 def children unless defined? @children @children = Array.new end return @children end
find_child( method, *args )
click to toggle source
Find one of the child classes by calling the given method and passing all the rest of the parameters to that method in each child
# File lib/launchy/descendant_tracker.rb, line 42 def find_child( method, *args ) children.find do |child| Launchy.log "Checking if class #{child} is the one for #{method}(#{args.join(', ')})}" child.send( method, *args ) end end
inherited( klass )
click to toggle source
# File lib/launchy/descendant_tracker.rb, line 23 def inherited( klass ) return unless klass.instance_of?( Class ) self.children << klass end