Class: ActiveSetting::Loader

Inherits:
Object
  • Object
show all
Defined in:
lib/active_setting/loader.rb

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_filename = nil) ⇒ Loader

Returns a new instance of Loader.



30
31
32
# File 'lib/active_setting/loader.rb', line 30

def initialize(config_filename = nil)
  @config_filename = config_filename
end

Class Attribute Details

.config_filenameObject



14
15
16
# File 'lib/active_setting/loader.rb', line 14

def config_filename
  @config_filename || 'settings.yml'
end

Class Method Details

.build_hash(filename = nil) ⇒ Object



10
11
12
# File 'lib/active_setting/loader.rb', line 10

def build_hash(filename = nil)
  new(filename).build_hash
end

.external_settingsObject



20
21
22
# File 'lib/active_setting/loader.rb', line 20

def external_settings
  @external_settings ||= {}
end

.load_settings(filename = nil) ⇒ Object



6
7
8
# File 'lib/active_setting/loader.rb', line 6

def load_settings(filename = nil)
  new(filename).load_settings
end

.register_external_setting(name, attrs) ⇒ Object



24
25
26
27
# File 'lib/active_setting/loader.rb', line 24

def register_external_setting(name, attrs)
  category ||= external_settings[attrs.fetch(:category, 'External')] ||= {}
  category[name] = attrs.map.with_object({}) { |(k,v), hash| hash[k.to_s] = v }
end

Instance Method Details

#build_hashObject



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/active_setting/loader.rb', line 52

def build_hash
  settings_config.map.with_object({}) do |(category_name, settings), hash|
    settings.each do |setting_name, values|
      values ||= {}
      attrs = values.merge(
        data_type: values['type'],
        category:  category_name,
        name:      setting_name.to_sym
      )
      hash[setting_name.to_sym] = Setting.new(attrs)
    end
  end
end

#config_filenameObject



34
35
36
# File 'lib/active_setting/loader.rb', line 34

def config_filename
  @config_filename || self.class.config_filename
end

#load_settingsObject



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/active_setting/loader.rb', line 38

def load_settings
  settings_config.each do |category_name, settings|
    settings.each do |setting_name, values|
      values ||= {}
      attrs = values.merge(
        data_type: values['type'],
        category:  category_name,
        name:      setting_name
      )
      Setting.register(setting_name.to_sym, attrs)
    end
  end
end