class Libis::Ingester::Initializer

noinspection RubyResolve

Attributes

config[RW]
database[RW]

Public Class Methods

init(config_file) click to toggle source
# File lib/libis/ingester/initializer.rb, line 25
def self.init(config_file)
  initializer = self.instance
  initializer.configure(config_file)
  initializer.database
  initializer.sidekiq
  initializer
end
new() click to toggle source
# File lib/libis/ingester/initializer.rb, line 20
def initialize
  @config = nil
  @database = nil
end

Private Class Methods

load_config(config_file) click to toggle source
# File lib/libis/ingester/initializer.rb, line 123
def self.load_config(config_file)

  raise RuntimeError, "Configuration file '#{config_file}' not found." unless File.exist?(config_file)

  config = Libis::Tools::ConfigFile.new({}, preserve_original_keys: false)
  config << config_file

  config

end

Public Instance Methods

configure(config_file) click to toggle source
# File lib/libis/ingester/initializer.rb, line 33
def configure(config_file)

  @config = Initializer.load_config(config_file)

  raise RuntimeError, "Configuration file '#{config_file}' not found." unless @config

  raise RuntimeError, "Missing section 'config' in site config." unless @config.config

  ::Libis::Ingester.configure do |cfg|
    @config.config.each do |key, value|
      if value.is_a?(Hash) && cfg[key]
        unless cfg[key].respond_to?(:merge!)
          Libis::Ingester::Config.logger.error "Config value type mismatch for key #{key}. Old '#{cfg[key]}' - new '#{value}'"
          next
        end
        next unless cfg[key].is_a?(Hash)
        cfg[key].merge!(value)
      else
        cfg.send("#{key}=", value)
      end
    end
  end

  if @config.ingester && @config.ingester.task_dir
    ::Libis::Ingester::Config.require_all(@config.ingester.task_dir)
  end

  if @config.format_config
    Libis::Format::TypeDatabase.instance.load_types(@config.format_config.type_database) if @config.format_config.type_database
    Libis::Format::Tools::Fido.add_format(@config.format_config.fido_formats) if @config.format_config.fido_formats
  end

  self
end
seed_database() click to toggle source
# File lib/libis/ingester/initializer.rb, line 109
def seed_database

  raise RuntimeError, 'Database not initialized.' unless @database

  sources = []
  sources << @config.database.seed_dir if @config.database.seed_dir && Dir.exist?(@config.database.seed_dir)
  sources << @config.seed.to_h if @config.seed
  @database.setup.seed(*sources)
  @database

end
sidekiq() click to toggle source
# File lib/libis/ingester/initializer.rb, line 81
def sidekiq

  return @sidekiq if @sidekiq

  raise RuntimeError, 'Missing sidekiq section in configuration.' unless @config && @config.sidekiq

  id = (@config.sidekiq.namespace.gsub(/\s/, '') || 'Ingester' rescue 'Ingester')

  Sidekiq.configure_client do |config|
    config.redis = {
        url: @config.sidekiq.redis_url,
        namespace: @config.sidekiq.namespace,
        id: "#{id}Client"
    }.cleanup
  end

  Sidekiq.configure_server do |config|
    config.redis = {
        url: @config.sidekiq.redis_url,
        namespace: @config.sidekiq.namespace,
        id: "#{id}Server"
    }.cleanup
  end

  @sidekiq = Sidekiq::Client.new

end