class ActiveSetting::Loader
Attributes
config_filename[W]
Public Class Methods
build_hash(filename = nil)
click to toggle source
# File lib/active_setting/loader.rb, line 10 def build_hash(filename = nil) new(filename).build_hash end
config_filename()
click to toggle source
# File lib/active_setting/loader.rb, line 14 def config_filename @config_filename || 'settings.yml' end
external_settings()
click to toggle source
# File lib/active_setting/loader.rb, line 20 def external_settings @external_settings ||= {} end
load_settings(filename = nil)
click to toggle source
# File lib/active_setting/loader.rb, line 6 def load_settings(filename = nil) new(filename).load_settings end
new(config_filename = nil)
click to toggle source
# File lib/active_setting/loader.rb, line 30 def initialize(config_filename = nil) @config_filename = config_filename end
register_external_setting(name, attrs)
click to toggle source
# 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
Public Instance Methods
build_hash()
click to toggle source
# 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_filename()
click to toggle source
# File lib/active_setting/loader.rb, line 34 def config_filename @config_filename || self.class.config_filename end
load_settings()
click to toggle source
# 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
Private Instance Methods
external_settings()
click to toggle source
# File lib/active_setting/loader.rb, line 72 def external_settings self.class.external_settings end
settings_config()
click to toggle source
# File lib/active_setting/loader.rb, line 68 def settings_config @settings_config ||= settings_from_file.merge(external_settings) end
settings_from_file()
click to toggle source
# File lib/active_setting/loader.rb, line 76 def settings_from_file return @settings_from_file unless @settings_from_file.nil? unless File.exist? config_filename fail ArgumentError, "#{config_filename} is required for settings" end yaml = YAML.load(File.read(config_filename)) @settings_from_file = yaml.fetch('settings') end