class Jackhammer::ConfigurationValidator

Attributes

config_yaml[RW]
environment[RW]
errors[RW]

Public Class Methods

new() click to toggle source
# File lib/jackhammer/configuration_validator.rb, line 5
def initialize
  @errors = []
end

Public Instance Methods

validate() click to toggle source
# File lib/jackhammer/configuration_validator.rb, line 9
def validate
  validate_environment_defined
  return if errors.any?
  validate_topic_exchange_defined
  return if errors.any?
  validate_queues_defined
  return if errors.any?
  validate_handlers_defined
end
validate_environment_defined() click to toggle source
# File lib/jackhammer/configuration_validator.rb, line 19
def validate_environment_defined
  return if config_yaml[environment]

  add_error("Environment '#{environment}' is not defined")
end
validate_handlers_defined() click to toggle source
# File lib/jackhammer/configuration_validator.rb, line 44
def validate_handlers_defined
  config_yaml[environment].each do |exchange_name, exchange_config|
    exchange_config['queues'].each do |qconfig|
      Object.const_get(qconfig['handler'])
    rescue NameError
      add_error("Uninitialized constant #{qconfig['handler']}")
    end
  end
end
validate_queues_defined() click to toggle source
# File lib/jackhammer/configuration_validator.rb, line 31
def validate_queues_defined
  topics = config_yaml[environment].keys
  topics.each do |topic|
    begin
      next if config_yaml[environment][topic]['queues']
    rescue StandardError
      false
    end

    add_error("Topic '#{topic}' does not define any queues")
  end
end
validate_topic_exchange_defined() click to toggle source
# File lib/jackhammer/configuration_validator.rb, line 25
def validate_topic_exchange_defined
  return if config_yaml[environment].keys.any?

  add_error("Environment '#{environment}' does not define a topic exchange")
end

Private Instance Methods

add_error(str) click to toggle source
# File lib/jackhammer/configuration_validator.rb, line 56
def add_error(str)
  @errors << str
end