class Dry::AutoInject::Strategies::Hash
@api private
Private Instance Methods
define_initialize(klass)
click to toggle source
# File lib/dry/auto_inject/strategies/hash.rb, line 25 def define_initialize(klass) super_params = MethodParameters.of(klass, :initialize).first super_pass = super_params.empty? ? '' : 'options' instance_mod.class_eval <<-RUBY, __FILE__, __LINE__ + 1 def initialize(options) #{dependency_map.names.map { |name| "@#{name} = options[:#{name}] unless !options.key?(#{name}) && instance_variable_defined?(:'@#{name}')" }.join("\n")} super(#{super_pass}) end RUBY end
define_new()
click to toggle source
Calls superclass method
Dry::AutoInject::Strategies::Constructor#define_new
# File lib/dry/auto_inject/strategies/hash.rb, line 13 def define_new class_mod.class_exec(container, dependency_map) do |container, dependency_map| define_method :new do |options = {}| deps = dependency_map.to_h.each_with_object({}) { |(name, identifier), obj| obj[name] = options[name] || container[identifier] }.merge(options) super(deps) end end end