class Dry::Plugins::Plugin

@abstract A delegator providing Plugin DSL

Attributes

name[R]

@return [Symbol]

Public Class Methods

new(registry, name, plugin = nil) click to toggle source

@overload initialize(registry, name, plugin)

@param registry [Registry]
@param name [#to_s]

@overload initialize(registry, plugin)

@param registry [Registry]
@param plugin [Module]
# File lib/dry/plugins/plugin.rb, line 21
def initialize(registry, name, plugin = nil)
  @__registry__ = registry

  plugin = name if name.is_a?(Module)
  self.name = name
  self.plugin = plugin if plugin
end

Public Instance Methods

__getobj__() click to toggle source

Module with actual plugin data @return [Module]

Calls superclass method
# File lib/dry/plugins/plugin.rb, line 35
def __getobj__
  super do
    __setobj__ load
  end
end
Also aliased as: plugin
__setobj__(plugin) click to toggle source

@param plugin [Module]

Calls superclass method
# File lib/dry/plugins/plugin.rb, line 44
def __setobj__(plugin)
  self.name = plugin if plugin
  super(plugin)
end
Also aliased as: plugin=
call(host, &configuration) click to toggle source

@param host [Module] @param configuration [Proc]

@return [<Symbol>]

# File lib/dry/plugins/plugin.rb, line 65
def call(host, &configuration)
  load_dependencies(host)
  if plugin.const_defined?(Plugins.config.class_interface_name)
    host.extend(plugin.const_get(Plugins.config.class_interface_name))
  end
  host.send(:include, plugin)
  configure(host, &configuration) if configuration
  host.used_plugins << name
  host
end
Also aliased as: plug
configure(host, &configuration) click to toggle source

Configure the `host` using `configuration` @param host [Module] @param configuration [Proc]

# File lib/dry/plugins/plugin.rb, line 95
def configure(host, &configuration)
  if plugin.respond_to?(Plugins.config.configure_method)
    return plugin.public_send(Plugins.config.configure_method, host, &configuration)
  end
  host.module_eval(&configuration)
end
load() click to toggle source

Resolves the plug-in `Module` from the {Registry} @return [Module]

# File lib/dry/plugins/plugin.rb, line 80
def load
  @__registry__.resolve(name)
end
load_dependencies(host) click to toggle source

Load plugin and plugin dependencies (if declared)

@param host [Module]

# File lib/dry/plugins/plugin.rb, line 87
def load_dependencies(host)
  return unless plugin.respond_to?(Plugins.config.load_dependencies_method)
  plugin.public_send(Plugins.config.load_dependencies_method, host)
end
name=(name) click to toggle source

@param name [#to_s] @return [Symbol]

# File lib/dry/plugins/plugin.rb, line 56
def name=(name)
  name = name.to_s
  @name = Inflecto.underscore(Inflecto.demodulize(name)).to_sym unless name.empty?
end
plug(host, &configuration)
Alias for: call
plugin()
Alias for: __getobj__
plugin=(plugin)
Alias for: __setobj__