module Zen::Service::Plugins::Pluggable
Constants
- Reflection
Public Instance Methods
plugins()
click to toggle source
# File lib/zen/service/plugins/pluggable.rb, line 36 def plugins @plugins ||= {} end
Also aliased as: extensions
use(name, **opts)
click to toggle source
# File lib/zen/service/plugins/pluggable.rb, line 6 def use(name, **opts) extension = Service::Plugins.fetch(name) defaults = extension.config[:default_options] opts = defaults.merge(opts) unless defaults.nil? if using?(name) extension.configure(self, **opts) if extension.respond_to?(:configure) return extension end use_extension(extension, name, **opts) end
using?(name)
click to toggle source
# File lib/zen/service/plugins/pluggable.rb, line 32 def using?(name) plugins.key?(name) end
Private Instance Methods
use_extension(extension, name, **opts)
click to toggle source
# File lib/zen/service/plugins/pluggable.rb, line 20 def use_extension(extension, name, **opts) include extension extend extension::ClassMethods if extension.const_defined?(:ClassMethods) extension.used(self, **opts) if extension.respond_to?(:used) extension.configure(self, **opts) if extension.respond_to?(:configure) plugins[name] = Reflection.new(extension, opts) extension end