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
- #all ⇒ Object
- #case_value(value) ⇒ Object
- #editable ⇒ Object
- #find_editable_path ⇒ Object
- #find_paths ⇒ Object
- #initialize ⇒ Object
- #save(raw_config) ⇒ Object
Instance Method Details
#all ⇒ Object
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 |
#editable ⇒ Object
50 51 52 |
# File 'lib/ab_admin/models/settings.rb', line 50 def editable YAML.load_file(@editable_path) rescue {} end |
#find_editable_path ⇒ Object
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_paths ⇒ Object
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 |
#initialize ⇒ Object
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 |