class SmartCore::Initializer::ExtensionSet

@api private @since 0.5.0

Attributes

extensions[R]

@return [Array<SmartCore::Initializer::InitializationExtension>]

@api private @since 0.5.0

Public Class Methods

new() click to toggle source

@return [void]

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_set.rb, line 19
def initialize
  @extensions = []
  @access_lock = Mutex.new
end

Public Instance Methods

<<(extension)
Alias for: add_extension
add_extension(extension) click to toggle source

@param extension [SmartCore::Initializer::InitializationExtension] @return [void]

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_set.rb, line 29
def add_extension(extension)
  thread_safe { extensions << extension }
end
Also aliased as: <<
concat(extension_set) click to toggle source

@param extension_set [SmartCore::Initializer::ExtensionSet] @return [void]

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_set.rb, line 61
def concat(extension_set)
  thread_safe { extensions.concat(extension_set.dup.extensions) }
end
dup() click to toggle source

@return [SmartCore::Initializer::ExtensionSet]

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_set.rb, line 38
def dup
  thread_safe do
    self.class.new.tap do |duplicate|
      extensions.each do |extension|
        duplicate.add_extension(extension.dup)
      end
    end
  end
end
each(&block) click to toggle source

@return [Enumerable]

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_set.rb, line 52
def each(&block)
  thread_safe { block_given? ? extensions.each(&block) : extensions.each }
end

Private Instance Methods

thread_safe(&block) click to toggle source

@param block [Proc] @return [Any]

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_set.rb, line 72
def thread_safe(&block)
  @access_lock.synchronize(&block)
end