Class: MongoDelta::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/mongo_delta/configuration.rb

Defined Under Namespace

Classes: Error

Constant Summary collapse

DEFAULT_DB =
'mongo_delta'
DEFAULT_SERVICE =
'mongo_delta'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Configuration

Returns a new instance of Configuration.



42
43
44
45
46
# File 'lib/mongo_delta/configuration.rb', line 42

def initialize(options={})
  @options = options
  @source = self.class.connect_to_source(options['source'])
  validate!
end

Instance Attribute Details

#sourceObject (readonly)

Returns the value of attribute source.



40
41
42
# File 'lib/mongo_delta/configuration.rb', line 40

def source
  @source
end

Class Method Details

.connect_to_source(connection_or_uri) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/mongo_delta/configuration.rb', line 32

def self.connect_to_source(connection_or_uri)
  if connection_or_uri.is_a? Mongo::MongoClient
    connection_or_uri
  else
    Mongo::MongoClient.from_uri(connection_or_uri)
  end
end

.load_from_db(mongodb_uri, db = nil, service = nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/mongo_delta/configuration.rb', line 18

def self.load_from_db(mongodb_uri, db=nil, service=nil)
  db ||= DEFAULT_DB
  service ||= DEFAULT_SERVICE

  mongo = connect_to_source(mongodb_uri)
  collection = mongo.db(db).collection('config')

  unless options = collection.find_one(:_id => service)
    raise Error, "There was no config in the database at #{mongodb_uri}/#{db} with id '#{service}'"
  end

  new(options.merge({'source' => mongo, 'db' => db, 'service' => service}))
end

.load_from_file(path) ⇒ Object



13
14
15
16
# File 'lib/mongo_delta/configuration.rb', line 13

def self.load_from_file(path)
  options = YAML.load(ERB.new(File.read(path)).result)
  new(options)
end

Instance Method Details

#dbObject



66
67
68
# File 'lib/mongo_delta/configuration.rb', line 66

def db
  @options['db'] || DEFAULT_DB
end

#db=(db) ⇒ Object



69
70
71
# File 'lib/mongo_delta/configuration.rb', line 69

def db=(db)
  @options['db'] = db
end

#ignore_errorsObject



80
81
82
# File 'lib/mongo_delta/configuration.rb', line 80

def ignore_errors
  !!@options['ignore_errors']
end

#ignore_errors=(bool) ⇒ Object



83
84
85
# File 'lib/mongo_delta/configuration.rb', line 83

def ignore_errors=(bool)
  @options['ignore_errors'] = bool
end

#outletsObject



52
53
54
# File 'lib/mongo_delta/configuration.rb', line 52

def outlets
  @options['outlets']
end

#serviceObject



73
74
75
# File 'lib/mongo_delta/configuration.rb', line 73

def service
  @options['service'] || DEFAULT_SERVICE
end

#service=(service) ⇒ Object



76
77
78
# File 'lib/mongo_delta/configuration.rb', line 76

def service=(service)
  @options['service'] = service
end

#targetsObject



48
49
50
# File 'lib/mongo_delta/configuration.rb', line 48

def targets
  @options['targets']
end

#validate!Object

Raises:



56
57
58
59
60
61
62
63
64
# File 'lib/mongo_delta/configuration.rb', line 56

def validate!
  raise Error, "Missing source" unless source
  raise Error, "Missing outlets" unless outlets and not outlets.empty?
  outlets.each do |key, outlet|
    target_key = outlet['target']
    target = (targets || {})[target_key]
    raise Error, "Missing target '#{target_key}'" unless target
  end
end