class Metrux::PluginRegister

Attributes

config[R]
logger[R]
plugins[R]

Registered plugins

Public Class Methods

new(config) click to toggle source
# File lib/metrux/plugin_register.rb, line 8
def initialize(config)
  @config = config
  @logger = config.logger
  @plugins = []
end

Public Instance Methods

register(klass = nil, **options) { |config, options| ... } click to toggle source

Register a plugin

Arguments

  • klass - The plugin class

  • options - Any option that you might use on plugin

  • block - If you don’t have a class, you can pass a block that receives the ‘config` and `options` as arguments.

Examples

  • Passing a class as plugin

    plugin_register.register(
      Metrux::Plugins::MyPlugin, tags: { a: 'tag' }
    ) # => true
    
  • Passing a block as plugin

    plugin_register.register(tags: { a: 'tag' }) do |config, options|
      # do something
    end # => true
    
# File lib/metrux/plugin_register.rb, line 37
def register(klass = nil, **options)
  plugin = if block_given?
             -> () { yield(config, options) }
           else
             klass.new(config, options)
           end

  log("Registering plugin #{plugin.class}")

  plugin.call

  @plugins << plugin

  true
end