class Dry::Plugins::Registry::Builder

Build a plug-in registry for given `host`

@see Builder#call

Attributes

registry_method[R]

@return [Symbol]

Public Class Methods

new(registry_method: Plugins.config.registry_method, **kwargs) click to toggle source
Calls superclass method
# File lib/dry/plugins/registry/builder.rb, line 13
def initialize(registry_method: Plugins.config.registry_method, **kwargs)
  @registry_method = registry_method
  super(**kwargs)
end

Public Instance Methods

call(host, plugins: module_builder.call(host), registry_class: class_builder.call(plugins)) click to toggle source

@param plugins [Module]

@return [Registry]

# File lib/dry/plugins/registry/builder.rb, line 24
def call(host,
         plugins: module_builder.call(host),
         registry_class: class_builder.call(plugins))
  unless plugins.respond_to? registry_method
    registry_variable = :"@#{registry_method}"
    plugins.define_singleton_method registry_method do
      if instance_variable_defined? registry_variable
        instance_variable_get registry_variable
      else
        instance_variable_set registry_variable, registry_class.new(plugins)
      end
    end
  end

  unless plugins.singleton_class.included_modules.include? DSL
    plugins.extend DSL
  end

  plugins.public_send registry_method
end