class SmartCore::Container::Entities::Namespace

@api private @since 0.7.0

Attributes

container_klass[R]

@return [Class<SmartCore::Container>]

@api private @since 0.7.0

Public Class Methods

new(namespace_name) click to toggle source

@param namespace_name [String] @return [void]

@api private @since 0.7.0

# File lib/smart_core/container/entities/namespace.rb, line 17
def initialize(namespace_name)
  super(namespace_name)
  @container_klass = Class.new(SmartCore::Container)
  @container_instance = nil
  @lock = SmartCore::Container::ArbitaryLock.new
end

Public Instance Methods

append_definitions(dependencies_definition) click to toggle source

@param dependencies_definition [Proc] @return [void]

@api private @since 0.7.0

# File lib/smart_core/container/entities/namespace.rb, line 37
def append_definitions(dependencies_definition)
  thread_safe { container_klass.instance_eval(&dependencies_definition) }
end
freeze!() click to toggle source

@return [void]

@api private @since 0.7.0

# File lib/smart_core/container/entities/namespace.rb, line 45
def freeze!
  thread_safe { container_instance.freeze! }
end
reveal() click to toggle source

@return [SmartCore::Container]

@api private @since 0.8.0

# File lib/smart_core/container/entities/namespace.rb, line 28
def reveal
  thread_safe { container_instance }
end

Private Instance Methods

container_instance() click to toggle source

@return [SmartCore::Container]

@api private @since 0.7.0

# File lib/smart_core/container/entities/namespace.rb, line 61
def container_instance
  @container_instance ||= container_klass.new
end
thread_safe(&block) click to toggle source

@param block [Block] @return [Any]

@api private @since 0.7.0

# File lib/smart_core/container/entities/namespace.rb, line 70
def thread_safe(&block)
  @lock.thread_safe(&block)
end