Class: Tomo::Configuration::PluginsRegistry::GemResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/tomo/configuration/plugins_registry/gem_resolver.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ GemResolver

Returns a new instance of GemResolver.



13
14
15
# File 'lib/tomo/configuration/plugins_registry/gem_resolver.rb', line 13

def initialize(name)
  @name = name
end

Class Method Details

.resolve(name) ⇒ Object



9
10
11
# File 'lib/tomo/configuration/plugins_registry/gem_resolver.rb', line 9

def self.resolve(name)
  new(name).plugin_module
end

Instance Method Details

#plugin_moduleObject



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/tomo/configuration/plugins_registry/gem_resolver.rb', line 17

def plugin_module
  plugin_path = [PLUGIN_PREFIX, name.tr("-", "/")].join("/")
  require plugin_path

  plugin = constantize(plugin_path)
  assert_compatible_api(plugin)

  plugin
rescue LoadError => e
  raise unless e.message.match?(/\s#{Regexp.quote(plugin_path)}$/)

  raise_unknown_plugin_error(e)
end