module Excom::Plugins::Pluggable

Constants

Reflection

Public Instance Methods

extensions()
Alias for: plugins
plugins() click to toggle source
# File lib/excom/plugins/pluggable.rb, line 29
def plugins
  @plugins ||= {}
end
Also aliased as: extensions
use(name, **opts) click to toggle source
# File lib/excom/plugins/pluggable.rb, line 3
def use(name, **opts)
  extension = Plugins.fetch(name)

  method = extension.excom_options[:use_with] || :include
  send(method, extension)

  defaults = extension.excom_options[:default_options]
  opts = defaults.merge(opts) unless defaults.nil?

  if extension.const_defined?('ClassMethods')
    extend extension::ClassMethods
  end

  if extension.respond_to?(:used)
    extension.used(self, **opts)
  end

  plugins[name] = Reflection.new(extension, opts)

  extension
end
using?(name) click to toggle source
# File lib/excom/plugins/pluggable.rb, line 25
def using?(name)
  plugins.key?(name)
end