module SmartCore::Initializer::Plugins::RegistryInterface

@api private @since 0.1.0

Attributes

access_lock[R]

@return [SmartCore::Engine::Lock]

@api private @since 0.1.0

plugin_registry[R]

@return [SmartCore::Initializer::Plugins::Registry]

@api private @since 0.1.0

Public Class Methods

extended(base_module) click to toggle source

@param base_module [Class, Module] @return [void]

@api private @since 0.1.0

# File lib/smart_core/initializer/plugins/registry_interface.rb, line 12
def extended(base_module)
  base_module.instance_variable_set(
    :@plugin_registry, SmartCore::Initializer::Plugins::Registry.new
  )
  base_module.instance_variable_set(
    :@access_lock, SmartCore::Engine::Lock.new
  )
end

Public Instance Methods

load(plugin_name) click to toggle source

@param plugin_name [Symbol, String] @return [void]

@api public @since 0.1.0

# File lib/smart_core/initializer/plugins/registry_interface.rb, line 27
def load(plugin_name)
  thread_safe { plugin_registry[plugin_name].load! }
end
loaded_plugins() click to toggle source

@return [Array<String>]

@api public @since 0.1.0

# File lib/smart_core/initializer/plugins/registry_interface.rb, line 35
def loaded_plugins
  thread_safe { plugin_registry.loaded.keys }
end
names() click to toggle source

@return [Array<String>]

@api public @since 0.1.0

# File lib/smart_core/initializer/plugins/registry_interface.rb, line 43
def names
  thread_safe { plugin_registry.names }
end
register_plugin(plugin_name, plugin_module) click to toggle source

@param plugin_name [Symbol, String] @return [void]

@api private @since 0.1.0

# File lib/smart_core/initializer/plugins/registry_interface.rb, line 52
def register_plugin(plugin_name, plugin_module)
  thread_safe { plugin_registry[plugin_name] = plugin_module }
end

Private Instance Methods

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

@return [void]

@api private @since 0.1.0

# File lib/smart_core/initializer/plugins/registry_interface.rb, line 74
def thread_safe
  access_lock.synchronize { yield if block_given? }
end