class Tochtli::RabbitConnection::Config

Constants

DEFAULTS

Public Class Methods

load(name, config=nil) click to toggle source
# File lib/tochtli/rabbit_connection.rb, line 212
def self.load(name, config=nil)
  config = case config
             when String
               YAML.load_file(config).symbolize_keys
             when Hash
               config.symbolize_keys
             when nil
               {}
             else
               raise "Unexpected configuration: #{config.inspect}, Hash or String expected."
           end

  defaults = DEFAULTS

  if defined?(Rails) && Rails.root
    config_path = Rails.root.join('config/rabbit.yml')
    if config_path.exist?
      rails_config = YAML.load_file(config_path)
      raise "Unexpected rabbit.yml: #{rails_config.inspect}, Hash expected." unless rails_config.is_a?(Hash)
      rails_config = rails_config.symbolize_keys
      unless rails_config[:host] # backward compatibility
        rails_config = rails_config[name.to_sym]
        raise "RabbitMQ '#{name}' configuration not set in rabbit.yml" unless rails_config
      else
        warn "DEPRECATION WARNING: rabbit.yml should define different configurations for Rails environments (like database.yml). Please update your configuration file: #{config_path}."
      end
      defaults = defaults.merge(rails_config.symbolize_keys)
    end
  end

  new.merge!(defaults.merge(config))
end