Module: Setsuzoku::Plugin::ClassMethods

Defined in:
lib/setsuzoku/plugin.rb

Instance Method Summary collapse

Instance Method Details

#config_contextObject



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.

Parameters:

  • name (String)

    the name of the plugin.

  • options (Any)

    list of keyword options to customize service registration.



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:, **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