class ActiveRecordDoctor::Loader

A class used for loading user-provided configuration files.

Attributes

config[R]
recognized_detectors[R]
recognized_globals[R]

Public Class Methods

new(config, recognized_globals, recognized_detectors, &block) click to toggle source
# File lib/active_record_doctor/config/loader.rb, line 82
def initialize(config, recognized_globals, recognized_detectors, &block)
  @config = config
  @recognized_globals = recognized_globals
  @recognized_detectors = recognized_detectors
  instance_eval(&block)
end

Public Instance Methods

detector(name, settings) click to toggle source
# File lib/active_record_doctor/config/loader.rb, line 106
def detector(name, settings)
  name = name.to_sym

  recognized_settings = recognized_detectors[name]
  if recognized_settings.nil?
    raise ActiveRecordDoctor::Error::UnrecognizedDetectorName[
      name,
      recognized_detectors.keys
    ]
  end

  if config.detectors.include?(name)
    raise ActiveRecordDoctor::Error::DetectorConfiguredTwice[name]
  end

  unrecognized_settings = settings.keys - recognized_settings
  unless unrecognized_settings.empty?
    raise ActiveRecordDoctor::Error::UnrecognizedDetectorSettings[
      name,
      unrecognized_settings,
      recognized_settings
    ]
  end

  config.detectors[name] = settings
end
global(name, value) click to toggle source
# File lib/active_record_doctor/config/loader.rb, line 89
def global(name, value)
  name = name.to_sym

  unless recognized_globals.include?(name)
    raise ActiveRecordDoctor::Error::UnrecognizedGlobalSetting[
      name,
      recognized_globals
    ]
  end

  if config.globals.include?(name)
    raise ActiveRecordDoctor::Error::DuplicateGlobalSetting[name]
  end

  config.globals[name] = value
end