module BuildTool # # Mixin which implements basic plugin functionality. # module PluginBase # Class methods module ClassMethods def register_plugin( child ) logger.debug "Registering plugin #{child}" child.registered_plugins << child end # Called if the class is inherited def inherited( child ) child.register_plugin( child ) end def registered_plugins @@registered_plugins end def registered_plugins=( val ) @@registered_plugins = val end end # Mixin the class methods def self.included( base ) base.extend( ClassMethods ) base.registered_plugins = Array.new # puts "#{base} #{base.registered_plugins.inspect}" end end # class PluginBase end