class Dry::AutoInject::Strategies::Constructor
Constants
- ClassMethods
- InstanceMethods
Attributes
class_mod[R]
container[R]
dependency_map[R]
instance_mod[R]
Public Class Methods
new(container, *dependency_names)
click to toggle source
# File lib/dry/auto_inject/strategies/constructor.rb, line 17 def initialize(container, *dependency_names) @container = container @dependency_map = DependencyMap.new(*dependency_names) @instance_mod = InstanceMethods.new @class_mod = ClassMethods.new end
Public Instance Methods
included(klass)
click to toggle source
@api private
Calls superclass method
# File lib/dry/auto_inject/strategies/constructor.rb, line 25 def included(klass) define_readers define_new define_initialize(klass) klass.send(:include, instance_mod) klass.extend(class_mod) super end
Private Instance Methods
define_initialize(klass)
click to toggle source
# File lib/dry/auto_inject/strategies/constructor.rb, line 50 def define_initialize(klass) raise NotImplementedError, 'must be implemented by a subclass' end
define_new()
click to toggle source
# File lib/dry/auto_inject/strategies/constructor.rb, line 46 def define_new raise NotImplementedError, 'must be implemented by a subclass' end
define_readers()
click to toggle source
# File lib/dry/auto_inject/strategies/constructor.rb, line 39 def define_readers instance_mod.class_eval <<-RUBY, __FILE__, __LINE__ + 1 attr_reader #{dependency_map.names.map { |name| ":#{name}" }.join(', ')} RUBY self end