Sha256: 0b7bf078d2686e59f11ac03509b71dda244a307071be8212b4c9275075d0814d

Contents?: true

Size: 1.04 KB

Versions: 6

Compression:

Stored size: 1.04 KB

Contents

require 'sqreen/ecosystem/loggable'

module Sqreen
  module Ecosystem
    class ModuleRegistry
      include Sqreen::Ecosystem::Loggable

      def initialize
        @mods = []
      end

      def register(mod)
        @mods << mod
      end

      def init_all
        logger.info { "Initializing #{@mods.size} ecosystem modules" }
        each_module do |mod|
          unless mod.respond_to? :setup
            logger.debug { "Module with type #{mod.class} requires no initialization" }
            next
          end

          logger.debug { "Initializing module with type #{mod.class}" }
          mod.setup
        end
      end

      def destroy_all
        # not implemented
      end

      # @param [Class] type
      def each_module(type = nil, &block)
        selected_mods = type ? (@mods.select { |mod| mod.is_a?(type) }) : @mods
        if block_given?
          selected_mods.each(&block)
        else
          selected_mods.each
        end
      end

      def module_subset(type)
        each_module(type).to_a
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
sqreen-1.22.0-java lib/sqreen/ecosystem/module_registry.rb
sqreen-1.22.0 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.21.1-java lib/sqreen/ecosystem/module_registry.rb
sqreen-1.21.1 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.21.0-java lib/sqreen/ecosystem/module_registry.rb
sqreen-1.21.0 lib/sqreen/ecosystem/module_registry.rb