Sha256: 64e0d36f3673f597d0758a8e8049af46d5ed58ec6f5c3f32b1f0b42329f1b63a

Contents?: true

Size: 1.19 KB

Versions: 10

Compression:

Stored size: 1.19 KB

Contents

# typed: ignore

# Copyright (c) 2015 Sqreen. All Rights Reserved.
# Please refer to our terms for more information: https://www.sqreen.com/terms.html

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

10 entries across 10 versions & 1 rubygems

Version Path
sqreen-1.25.1 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.25.0 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.24.3 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.24.2 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.24.1 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.24.0 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.23.2 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.23.1 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.23.0 lib/sqreen/ecosystem/module_registry.rb
sqreen-1.22.1 lib/sqreen/ecosystem/module_registry.rb