Module: Setsuzoku::Plugin::ClassMethods
- Defined in:
- lib/setsuzoku/plugin.rb
Instance Method Summary collapse
- #config_context ⇒ Object
- #config_context=(val) ⇒ Object
-
#register(name:, service:, **options) ⇒ void
Register the service for a plugin.
Instance Method Details
#config_context ⇒ Object
35 36 37 |
# File 'lib/setsuzoku/plugin.rb', line 35 def config_context @config_context end |
#config_context=(val) ⇒ Object
39 40 41 |
# File 'lib/setsuzoku/plugin.rb', line 39 def config_context=(val) @config_context = val end |
#register(name:, service:, **options) ⇒ void
This method returns an undefined value.
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.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/setsuzoku/plugin.rb', line 50 def register(name:, service:, **) context = { name: name, service: service } # @options are any additional options you want available inside the plugin .each do |key, val| context[key] = val || self.[key] end required_instance_methods = [: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 |