class Codependent::Container

Constants

CONFIG_BLOCK_MISSING_ERROR

Attributes

injectables[R]
singleton_values[R]

Public Class Methods

new(args = {}, &block) click to toggle source
# File lib/codependent/container.rb, line 8
def initialize(args = {}, &block)
  @injectables = {}

  instance_exec(args, &block) if block
end

Public Instance Methods

injectable(id) click to toggle source
# File lib/codependent/container.rb, line 26
def injectable(id)
  injectables[id]
end
injectable?(id) click to toggle source
# File lib/codependent/container.rb, line 30
def injectable?(id)
  injectables.key?(id)
end
instance(id, &config_block) click to toggle source
# File lib/codependent/container.rb, line 14
def instance(id, &config_block)
  validate_config_arguments(config_block)

  add_injectable!(id, :instance, config_block)
end
resolve(id) click to toggle source
# File lib/codependent/container.rb, line 34
def resolve(id)
  return unless injectable?(id)

  resolver.resolve(id)
end
singleton(id, &config_block) click to toggle source
# File lib/codependent/container.rb, line 20
def singleton(id, &config_block)
  validate_config_arguments(config_block)

  add_injectable!(id, :singleton, config_block)
end

Private Instance Methods

add_injectable!(id, type, config_block) click to toggle source
# File lib/codependent/container.rb, line 52
def add_injectable!(id, type, config_block)
  builder = Codependent::InjectableBuilder.new(id, type)

  builder.instance_eval(&config_block)

  injectables[id] = builder.build
end
resolver() click to toggle source
# File lib/codependent/container.rb, line 44
def resolver
  Resolvers::RootResolver.new(injectables)
end
validate_config_arguments(config_block) click to toggle source
# File lib/codependent/container.rb, line 48
def validate_config_arguments(config_block)
  raise ArgumentError, CONFIG_BLOCK_MISSING_ERROR unless config_block
end