Class: Sevendigital::ClientConfiguration

Inherits:
OpenStruct
  • Object
show all
Defined in:
lib/sevendigital/client_configuration.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ ClientConfiguration

Returns a new instance of ClientConfiguration.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/sevendigital/client_configuration.rb', line 19

def initialize(*args)

  super()

  self.override_with(Sevendigital::DEFAULT_CONFIGURATION)

  self.override_with(default_configuration_file)

  args.each do |configuration_argument|
    self.override_with(configuration_argument)
  end
  #puts "Now: #{self.inspect}"
  
end

Instance Method Details

#current_environmentObject



58
59
60
# File 'lib/sevendigital/client_configuration.rb', line 58

def current_environment
  defined?(Rails.env) ? Rails.env  : nil
end

#default_configuration_fileObject



53
54
55
56
# File 'lib/sevendigital/client_configuration.rb', line 53

def default_configuration_file
  return nil unless defined?(Rails.root)
  Rails.root.join('config', 'sevendigital.yml').to_s
end

#load_configuration_from_yml(file_name, environment = nil) ⇒ Object



62
63
64
65
66
67
68
69
70
71
# File 'lib/sevendigital/client_configuration.rb', line 62

def load_configuration_from_yml(file_name, environment=nil)
  plain_settings = transform_keys_to_symbols(YAML.load_file(file_name))
  if (plain_settings[:common] || (environment && plain_settings[environment.to_sym])) then
    environment_settings = plain_settings[:common] || {}
    environment_settings.update(plain_settings[environment.to_sym]) if environment
    environment_settings
  else
    plain_settings
  end
end

#override_with(configuration) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/sevendigital/client_configuration.rb', line 34

def override_with(configuration)
  #puts "Now: #{self.inspect}"
  #puts "Overriding with #{configuration.class}: #{configuration.inspect}"
  return self unless configuration
  if configuration.kind_of? Hash then
    table.merge!(configuration)
    return self
  end
  if configuration.kind_of? OpenStruct then
    table.merge!(configuration.marshal_dump)
    return self
  end
  if (configuration.kind_of? String) && is_it_yml_file?(configuration) then
    table.merge!(load_configuration_from_yml(configuration, current_environment))
    return self
  end

end