class Dry::Plugins::Plugin
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