module Setsuzoku::Plugin::ClassMethods
Public Instance Methods
config_context()
click to toggle source
# File lib/setsuzoku/plugin.rb, line 35 def config_context @config_context end
config_context=(val)
click to toggle source
# File lib/setsuzoku/plugin.rb, line 39 def config_context=(val) @config_context = val end
register(name:, service:, **options)
click to toggle source
Register the service for a plugin. This will collect configuration level data to use when a plugin is registered. It will also impose interface requirements on the registering class.
@param name [String] the name of the plugin. @param options [Any] list of keyword options to customize service registration.
@return [void]
# File lib/setsuzoku/plugin.rb, line 50 def register(name:, service:, **options) context = { name: name, service: service } # @options are any additional options you want available inside the plugin options.each do |key, val| context[key] = val || self.with_options[key] end required_instance_methods = options[:required_instance_methods] || [] service[:strategies].each do |type, strategy| type = type.to_s.split('_strategy').first.to_sym strategy = strategy[:strategy] strategy_klass = AVAILABLE_SERVICES[service[:type]].available_strategies[type][strategy] required_instance_methods += strategy_klass.required_instance_methods include strategy_klass.superclass::InterfaceMethods end context[:required_instance_methods] = required_instance_methods self.config_context = context end