class Absinthe::Distillery::Plugin

Attributes

injector[R]
names[R]
namespace[R]

Public Class Methods

new(injector, namespace, source_loader) click to toggle source
# File lib/absinthe/distillery/plugin.rb, line 9
def initialize injector, namespace, source_loader
  @injector, @namespace, @source_loader = injector, namespace, source_loader
  @names = []
end

Public Instance Methods

boot!() click to toggle source
# File lib/absinthe/distillery/plugin.rb, line 26
def boot!
  @names.map do |name|
    @injector.inject(name)
  end.reverse.each do |plugin|
    plugin.boot! if plugin.respond_to?(:boot!)
  end
end
load(name) click to toggle source
# File lib/absinthe/distillery/plugin.rb, line 14
def load name
  @source_loader.require_dir :plugins, name

  # HACK not like this!
  mod = @namespace.root::Absinthe::Plugins
  plugin_name = mod.constants.grep(/#{name.to_s.gsub('_', '')}/i).first
  raise NotLoaded, "#{name} was not found in Absinthe::Plugins" unless plugin_name
  plugin = mod.const_get plugin_name
  plugin.register @injector if plugin.respond_to? :register
  @names << name
end