Class: Tomo::Configuration::PluginsRegistry
- Inherits:
-
Object
- Object
- Tomo::Configuration::PluginsRegistry
show all
- Defined in:
- lib/tomo/configuration/plugins_registry.rb
Defined Under Namespace
Classes: FileResolver, GemResolver
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of PluginsRegistry.
11
12
13
14
15
|
# File 'lib/tomo/configuration/plugins_registry.rb', line 11
def initialize
@settings = {}
@helper_modules = []
@namespaced_classes = []
end
|
Instance Attribute Details
#helper_modules ⇒ Object
Returns the value of attribute helper_modules.
9
10
11
|
# File 'lib/tomo/configuration/plugins_registry.rb', line 9
def helper_modules
@helper_modules
end
|
#settings ⇒ Object
Returns the value of attribute settings.
9
10
11
|
# File 'lib/tomo/configuration/plugins_registry.rb', line 9
def settings
@settings
end
|
Instance Method Details
#bind_tasks(context) ⇒ Object
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/tomo/configuration/plugins_registry.rb', line 21
def bind_tasks(context)
namespaced_classes.each_with_object({}) do |(namespace, klass), result|
library = klass.new(context)
klass.public_instance_methods(false).each do |name|
qualified = [namespace, name].compact.join(":")
result[qualified] = library.public_method(name)
end
end
end
|
#load_plugin(namespace, plugin_class) ⇒ Object
43
44
45
46
47
48
49
|
# File 'lib/tomo/configuration/plugins_registry.rb', line 43
def load_plugin(namespace, plugin_class)
Tomo.logger.debug("Loading plugin #{plugin_class}")
helper_modules.push(*plugin_class.helper_modules)
settings.merge!(plugin_class.default_settings) { |_, exist, _| exist }
register_task_libraries(namespace, *plugin_class.tasks_classes)
end
|
#load_plugin_by_name(name) ⇒ Object
32
33
34
35
|
# File 'lib/tomo/configuration/plugins_registry.rb', line 32
def load_plugin_by_name(name)
plugin = GemResolver.resolve(name)
load_plugin(name, plugin)
end
|
#load_plugin_from_path(path) ⇒ Object
37
38
39
40
41
|
# File 'lib/tomo/configuration/plugins_registry.rb', line 37
def load_plugin_from_path(path)
name = File.basename(path).sub(/\.rb$/i, "")
plugin = FileResolver.resolve(path)
load_plugin(name, plugin)
end
|
#task_names ⇒ Object
17
18
19
|
# File 'lib/tomo/configuration/plugins_registry.rb', line 17
def task_names
bind_tasks(nil).keys
end
|