class SmartCore::Injection::Locator::Dependency

@api private @since 0.1.0

Public Class Methods

new() click to toggle source

@return [void]

@api private @since 0.1.0

# File lib/smart_core/injection/locator/dependency.rb, line 10
def initialize
  @binded = false
  @value = nil
  @barrier = SmartCore::Engine::Lock.new
end

Public Instance Methods

bind() { || ... } click to toggle source

@param block [Block] @return [Any]

@api public @since 0.7.0

# File lib/smart_core/injection/locator/dependency.rb, line 33
def bind(&block)
  with_barrier do
    if @binded
      @value
    else
      @binded = true
      @value = yield
    end
  end
end
rebind(&block) click to toggle source

@param block [Block] @return [Any]

@api private @since 0.1.0

# File lib/smart_core/injection/locator/dependency.rb, line 21
def rebind(&block)
  with_barrier do
    @binded = false
    bind(&block)
  end
end

Private Instance Methods

with_barrier(&block) click to toggle source

@param block [Block] @return [Any]

@api private @since 0.1.0

# File lib/smart_core/injection/locator/dependency.rb, line 51
def with_barrier(&block)
  @barrier.synchronize(&block)
end