class Dry::Plugins::Host::Builder

Extends a host with plug-ins interfaces

Attributes

registry_method[R]

@return [Symbol]

Public Class Methods

new(registry_method: Plugins.config.registry_method) click to toggle source
# File lib/dry/plugins/host/builder.rb, line 11
def initialize(registry_method: Plugins.config.registry_method)
  @registry_method = registry_method
end

Public Instance Methods

call(host, registry) click to toggle source

@param host [Module]

@return [Module]

@example

require 'dry/plugins/module_builder'

class Host
end

module_builder = Dry::Plugins::HostExtender.new
module_builder.call(Host) #=> Host::Plugins
# File lib/dry/plugins/host/builder.rb, line 30
def call(host, registry)
  unless host.respond_to? registry_method
    host.define_singleton_method registry_method do
      registry
    end
  end

  unless host.singleton_class.included_modules.include? Host::DSL
    host.extend Host::DSL
  end

  host
end