module SmartCore::Container::DefinitionDSL::ClassMethods

@api private @since 0.1.0

Public Instance Methods

compose(container_klass) click to toggle source

@param container_klass [Class<SmartCore::Container>] @return [void]

@api public @since 0.1.0

# File lib/smart_core/container/definition_dsl.rb, line 92
def compose(container_klass)
  @__container_definition_lock__.thread_safe do
    __container_definition_commands__ << Commands::Definition::Compose.new(
      container_klass
    )

    __container_instantiation_commands__ << Commands::Instantiation::Compose.new(
      container_klass
    )
  end
end
freeze_state!() click to toggle source

@return [void]

@api public @since 0.1.0

# File lib/smart_core/container/definition_dsl.rb, line 108
def freeze_state!
  @__container_definition_lock__.thread_safe do
    __container_instantiation_commands__ << Commands::Instantiation::FreezeState.new
  end
end
namespace(namespace_name, &dependencies_definition) click to toggle source

@param namespace_name [String, Symbol] @param dependencies_definition [Block] @return [void]

@api public @since 0.1.0

# File lib/smart_core/container/definition_dsl.rb, line 55
def namespace(namespace_name, &dependencies_definition)
  @__container_definition_lock__.thread_safe do
    DependencyCompatability::Definition.prevent_dependency_overlap!(self, namespace_name)

    __container_definition_commands__ << Commands::Definition::Namespace.new(
      namespace_name, dependencies_definition
    )
  end
end
register( dependency_name, memoize: SmartCore::Container::Registry::DEFAULT_MEMOIZATION_BEHAVIOR, &dependency_definition ) click to toggle source

@param dependency_name [String, Symbol] @option memoize [Boolean] @param dependency_definition [Block] @return [void]

@api public @since 0.1.0 @version 0.3.0

# File lib/smart_core/container/definition_dsl.rb, line 73
def register(
  dependency_name,
  memoize: SmartCore::Container::Registry::DEFAULT_MEMOIZATION_BEHAVIOR,
  &dependency_definition
)
  @__container_definition_lock__.thread_safe do
    DependencyCompatability::Definition.prevent_namespace_overlap!(self, dependency_name)

    __container_definition_commands__ << Commands::Definition::Register.new(
      dependency_name, dependency_definition, memoize
    )
  end
end