class SmartCore::Initializer::ExtensionDefiner

@api private @since 0.5.0

Attributes

processed_klass[R]

@return [Class]

@api private @since 0.5.0

Public Class Methods

new(processed_klass) click to toggle source

@param processed_klass [Class] @return [void]

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_definer.rb, line 11
def initialize(processed_klass)
  @processed_klass = processed_klass
  @definition_lock = Mutex.new
end

Public Instance Methods

append_extension(raw_extension) click to toggle source

@param raw_extension [Proc] @return [void]

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_definer.rb, line 21
def append_extension(raw_extension)
  thread_safe do
    extension = build_extension(raw_extension)
    extend_initialization_flow(extension)
  end
end

Private Instance Methods

build_extension(raw_extension) click to toggle source

@param raw_extension [Proc] @return [SmartCore::Initializar::Extension]

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_definer.rb, line 41
def build_extension(raw_extension)
  SmartCore::Initializer::Extension.new(raw_extension)
end
extend_initialization_flow(extension) click to toggle source

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

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_definer.rb, line 50
def extend_initialization_flow(extension)
  processed_klass.__initialization_extensions__ << extension
end
thread_safe(&block) click to toggle source

@param block [Proc] @return [void]

@api private @since 0.5.0

# File lib/smart_core/initializer/extension_definer.rb, line 59
def thread_safe(&block)
  @definition_lock.synchronize(&block)
end