Module: AbAdmin::Models::Settings

Extended by:
ActiveSupport::Concern
Included in:
Settings
Defined in:
lib/ab_admin/models/settings.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#allObject



43
44
45
46
47
48
# File 'lib/ab_admin/models/settings.rb', line 43

def all
  @paths.each do |path|
    @data.deep_merge!(YAML.load_file(path))
  end
  @data
end

#case_value(value) ⇒ Object



69
70
71
72
73
74
75
# File 'lib/ab_admin/models/settings.rb', line 69

def case_value(value)
  if %w(true false).include?(value) || value.to_s.is_number?
    YAML::load(value)
  else
    value
  end
end

#editableObject



50
51
52
# File 'lib/ab_admin/models/settings.rb', line 50

def editable
  YAML.load_file(@editable_path) rescue {}
end

#find_editable_pathObject



34
35
36
37
# File 'lib/ab_admin/models/settings.rb', line 34

def find_editable_path
  path = editable_paths.detect { |path| File.exists?(path) }
  path or raise("Create settings file for editing: #{editable_paths.join(' or ')}")
end

#find_pathsObject



39
40
41
# File 'lib/ab_admin/models/settings.rb', line 39

def find_paths
  base_paths.dup.unshift(@editable_path).find_all { |path| File.exists?(path) }
end

#initializeObject



28
29
30
31
32
# File 'lib/ab_admin/models/settings.rb', line 28

def initialize
  @data = {}
  @editable_path = find_editable_path
  @paths = find_paths
end

#save(raw_config) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/ab_admin/models/settings.rb', line 54

def save(raw_config)
  conf = {}
  raw_config.each do |root_key, root_value|
    if root_value.is_a?(Hash)
      conf[root_key] ||= {}
      root_value.each do |key, value|
        conf[root_key][key] = case_value(value)
      end
    else
      conf[root_key] = case_value(root_value)
    end
  end
  File.open(@editable_path, 'w') { |file| file.write conf.to_yaml } and self.class.load_config
end