class Absinthe::Plugins::PluginInjector
Public Class Methods
new(plugin)
click to toggle source
# File lib/absinthe/plugins/plugin_injector.rb, line 7 def initialize plugin @plugin = plugin end
register(injector)
click to toggle source
# File lib/absinthe/plugins/plugin_injector.rb, line 3 def self.register injector injector.register :plugin_injector, PluginInjector, :plugin end
Public Instance Methods
boot!()
click to toggle source
# File lib/absinthe/plugins/plugin_injector.rb, line 11 def boot! @plugin.names.each do |service_name| service = @plugin.injector.inject(service_name) proxy = Module.new { extend self } proxy.send(:define_method, :method_missing) do |meth, *args, &block| service.send meth, *args, &block end # TODO should be elsewhere. clazz_name = service_name.to_s.split('_').map(&:capitalize!).join '' @plugin.namespace.root.send :const_set, clazz_name, proxy end end