Method: Injected::Instance#initialize

Defined in:
lib/injected/instance.rb

#initialize(injections) ⇒ Instance

rubocop:disable Metrics/AbcSize



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/injected/instance.rb', line 7

def initialize(injections) # rubocop:disable Metrics/AbcSize
  self.class.injected_interfaces&.each do |interface, attribute|
    interface.interface_methods.keys.each do |interface_method|
      raise ArgumentError, "#{self.class} unment dependency #{interface}" unless injections.key?(interface)
      next if injections[interface].instance_methods.include?(interface_method)

      raise ArgumentError, "Implementation #{injections[interface]} does not implement #{interface_method}"
    end
    instance_variable_set("@#{attribute}", injections[interface].new)
  end
end