Module: Hutch::Config

Defined in:
lib/hutch/config.rb

Class Method Summary collapse

Class Method Details

.check_attr(attr) ⇒ Object



59
60
61
62
63
# File 'lib/hutch/config.rb', line 59

def self.check_attr(attr)
  unless user_config.key?(attr)
    raise UnknownAttributeError, "#{attr} is not a valid config attribute"
  end
end

.get(attr) ⇒ Object Also known as: []



44
45
46
47
# File 'lib/hutch/config.rb', line 44

def self.get(attr)
  check_attr(attr)
  user_config[attr]
end

.initialize(params = {}) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/hutch/config.rb', line 10

def self.initialize(params={})
  @config = {
    mq_host: 'localhost',
    mq_port: 5672,
    mq_exchange: 'hutch',  # TODO: should this be required?
    mq_vhost: '/',
    mq_tls: false,
    mq_tls_cert: nil,
    mq_tls_key: nil,
    mq_username: 'guest',
    mq_password: 'guest',
    mq_api_host: 'localhost',
    mq_api_port: 15672,
    mq_api_ssl: false,
    # placeholder, allows specifying connection parameters
    # as a URI.
    uri: nil,
    log_level: Logger::INFO,
    require_paths: [],
    autoload_rails: true,
    error_handlers: [Hutch::ErrorHandlers::Logger.new],
    namespace: nil,
    daemonise: false,
    pidfile: nil,
    channel_prefetch: 0,
    # enables publisher confirms, leaves it up to the app
    # how they are tracked
    publisher_confirms: false,
    # like `publisher_confirms` above but also
    # forces waiting for a confirm for every publish
    force_publisher_confirms: false
  }.merge(params)
end

.load_from_file(file) ⇒ Object



74
75
76
77
78
# File 'lib/hutch/config.rb', line 74

def self.load_from_file(file)
  YAML.load(file).each do |attr, value|
    Hutch::Config.send("#{attr}=", value)
  end
end

.method_missing(method, *args, &block) ⇒ Object



80
81
82
83
84
85
86
87
88
89
# File 'lib/hutch/config.rb', line 80

def self.method_missing(method, *args, &block)
  attr = method.to_s.sub(/=$/, '').to_sym
  return super unless user_config.key?(attr)

  if method =~ /=$/
    set(attr, args.first)
  else
    get(attr)
  end
end

.set(attr, value) ⇒ Object Also known as: []=



49
50
51
52
# File 'lib/hutch/config.rb', line 49

def self.set(attr, value)
  check_attr(attr)
  user_config[attr] = value
end

.to_hashObject



70
71
72
# File 'lib/hutch/config.rb', line 70

def self.to_hash
  self.user_config
end

.user_configObject



65
66
67
68
# File 'lib/hutch/config.rb', line 65

def self.user_config
  initialize unless @config
  @config
end