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 1 0).include?(value) || value.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
26 27 28 29 30 31 32 33 |
# File 'lib/ab_admin/models/settings.rb', line 26 def find_editable_path edited_settings_paths = [ Rails.root.join('config', 'settings', "#{Rails.env}.local.yml"), Rails.root.join('config', 'settings', 'settings.local.yml') ] path = edited_settings_paths.detect { |path| File.exists?(path) } path or raise("Create settings file for editing: #{edited_settings_paths.join(' or ')}") end |
#find_paths ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/ab_admin/models/settings.rb', line 35 def find_paths [ Rails.root.join('config', 'settings', 'settings.yml'), Rails.root.join('config', 'settings', "#{Rails.env}.yml"), @editable_path ].find_all { |path| File.exists?(path) } end |
#initialize ⇒ Object
20 21 22 23 24 |
# File 'lib/ab_admin/models/settings.rb', line 20 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 end |