class Kybus::Configuration::ServiceManager

Allow to autoload configurations into ruby. It allows to implement new plugins.

Attributes

configs[R]

Public Class Methods

auto_load!() click to toggle source
# File lib/kybus/configs/service_manager.rb, line 61
def self.auto_load!
  configs = Kybus::Configuration::ConfigurationManager.auto_load!
  services = new(configs)
  services.configure!
  services
end
new(configs, plugin_subdir = '.') click to toggle source
# File lib/kybus/configs/service_manager.rb, line 15
def initialize(configs, plugin_subdir = '.')
  @configs = configs
  @services = {}
  @plugin_subdir = plugin_subdir
end
register_plugin(name, type = 'multi') click to toggle source

The type unique is for global configurations as multi is for a hash containing all the objects to be created

# File lib/kybus/configs/service_manager.rb, line 70
def self.register_plugin(name, type = 'multi')
  register(:plugins, name, type)
end

Public Instance Methods

all_services() click to toggle source
# File lib/kybus/configs/service_manager.rb, line 28
def all_services
  @services
end
build_service(name, config) click to toggle source
# File lib/kybus/configs/service_manager.rb, line 57
def build_service(name, config)
  Kybus::Configuration::Autoconfigs.from_config!(name, config, @plugin_subdir)
end
configure!() click to toggle source
# File lib/kybus/configs/service_manager.rb, line 32
def configure!
  plugins = self.class.resources(:plugins)
  plugins.each do |plug, type|
    next if @configs[plug].nil?

    case type
    when 'unique'
      @services[plug] = Kybus::Configuration::Autoconfigs.from_config!(plug, @configs[plug])
    else
      load_service!(plug, @configs[plug])
    end
  end
end
features() click to toggle source
# File lib/kybus/configs/service_manager.rb, line 74
def features
  @services['features']
end
load_service!(name, keys) click to toggle source
# File lib/kybus/configs/service_manager.rb, line 46
def load_service!(name, keys)
  return if keys&.empty?

  services = {}
  keys.each do |service, config|
    services[service] = build_service(name, config)
  end

  @services[name] = services
end
services(cathegory, name = nil?, sub = nil) click to toggle source
# File lib/kybus/configs/service_manager.rb, line 21
def services(cathegory, name = nil?, sub = nil)
  service = @services[cathegory]
  service = service[name] if service.is_a?(Hash) && name
  service = service[sub] if service.is_a?(Hash) && sub
  service.raw
end