class Payload::Definition

Definition for a dependency which can be resolved and decorated.

Used internally by {DefinitionList}. Use {Container#service} or {Container#factory}.

@api private

Attributes

decorators[R]
name[R]
resolver[R]

Public Class Methods

new(name, resolver, decorators = DecoratorChain.new) click to toggle source
# File lib/payload/definition.rb, line 12
def initialize(name, resolver, decorators = DecoratorChain.new)
  @name = name
  @resolver = resolver
  @decorators = decorators
end

Public Instance Methods

==(other) click to toggle source
# File lib/payload/definition.rb, line 30
def ==(other)
  other.is_a?(Definition) &&
    name == other.name &&
    resolver == other.resolver &&
    decorators == other.decorators
end
decorate(decorator) click to toggle source
# File lib/payload/definition.rb, line 22
def decorate(decorator)
  self.class.new name, resolver, decorators.add(decorator)
end
resolve(container) click to toggle source
# File lib/payload/definition.rb, line 18
def resolve(container)
  resolver.resolve(container, decorators)
end
set(_) click to toggle source
# File lib/payload/definition.rb, line 26
def set(_)
  raise DependencyAlreadyDefinedError, "#{name} is already defined"
end