Sha256: 35d24610abad819b1e8b6591a346a950d9039d54e043fec273bf9d9d1b21bda1

Contents?: true

Size: 1.2 KB

Versions: 3

Compression:

Stored size: 1.2 KB

Contents

# frozen_string_literal: true

require "dry/system/constants"
require "dry/system/plugins/dependency_graph/strategies"

module Dry
  module System
    module Plugins
      # @api public
      module DependencyGraph
        # @api private
        def self.extended(system)
          super

          system.use(:notifications)

          system.before(:configure) do
            setting :ignored_dependencies, default: []
          end

          system.after(:configure) do
            self[:notifications].register_event(:resolved_dependency)
            self[:notifications].register_event(:registered_dependency)

            strategies(Strategies)
          end
        end

        # @api private
        def self.dependencies
          {'dry-events': "dry/events/publisher"}
        end

        # @api private
        def register(key, contents = nil, options = {}, &block)
          super
          dependency_key = key.to_s
          unless config.ignored_dependencies.include?(dependency_key)
            self[:notifications].instrument(
              :registered_dependency, key: dependency_key, class: self[dependency_key].class
            )
          end

          self
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
dry-system-0.22.0 lib/dry/system/plugins/dependency_graph.rb
dry-system-0.21.0 lib/dry/system/plugins/dependency_graph.rb
dry-system-0.20.0 lib/dry/system/plugins/dependency_graph.rb