class Flows::Plugin::DependencyInjector::DependencyList
Resolves dependencies on initialization and can inject it into class instance.
@api private
Attributes
definitions[R]
dependencies[R]
provided_values[R]
Public Class Methods
new(klass:, definitions:, provided_values:)
click to toggle source
# File lib/flows/plugin/dependency_injector/dependency_list.rb, line 10 def initialize(klass:, definitions:, provided_values:) @klass = klass @definitions = definitions @provided_values = provided_values.dup.tap { |pv| pv.default = NO_VALUE } check_missing_dependencies check_unexpected_dependencies resolve_dependencies end
Public Instance Methods
inject_to(instance)
click to toggle source
# File lib/flows/plugin/dependency_injector/dependency_list.rb, line 20 def inject_to(instance) dependencies.each { |dep| dep.inject_to(instance) } end
Private Instance Methods
check_missing_dependencies()
click to toggle source
# File lib/flows/plugin/dependency_injector/dependency_list.rb, line 30 def check_missing_dependencies missing = required_dependencies - provided_values.keys raise MissingDependencyError.new(@klass, missing) if missing.any? end
check_unexpected_dependencies()
click to toggle source
# File lib/flows/plugin/dependency_injector/dependency_list.rb, line 36 def check_unexpected_dependencies unexpected = provided_values.keys - definitions.keys raise UnexpectedDependencyError.new(@klass, unexpected) if unexpected.any? end
required_dependencies()
click to toggle source
# File lib/flows/plugin/dependency_injector/dependency_list.rb, line 26 def required_dependencies definitions.select { |_, definition| definition.required }.keys end
resolve_dependencies()
click to toggle source
# File lib/flows/plugin/dependency_injector/dependency_list.rb, line 42 def resolve_dependencies @dependencies = definitions.map do |name, definition| Dependency.new( klass: @klass, name: name, definition: definition, provided_value: provided_values[name] ) end end