app/models/setting.rb in fat_free_crm-0.13.6 vs app/models/setting.rb in fat_free_crm-0.14.0

- old
+ new

@@ -22,73 +22,69 @@ # # Any configured settings in `config/settings.yml` will override those in # `config/settings.default.yml`, and settings in the database table have the highest priority. class Setting < ActiveRecord::Base - serialize :value # Use class variables for cache and yaml settings. cattr_accessor :cache, :yaml_settings @@cache = @@yaml_settings = {}.with_indifferent_access class << self - # Cache should be cleared before each request. def clear_cache! @@cache = {}.with_indifferent_access end #------------------------------------------------------------------- def method_missing(method, *args) - begin - super - rescue NoMethodError - method_name = method.to_s - if method_name.last == "=" - self[method_name.sub("=", "")] = args.first - else - self[method_name] - end + super + rescue NoMethodError + method_name = method.to_s + if method_name.last == "=" + self[method_name.sub("=", "")] = args.first + else + self[method_name] end end # Get setting value (from database or loaded YAML files) #------------------------------------------------------------------- def [](name) # Return value if cached - return cache[name] if cache.has_key?(name) + return cache[name] if cache.key?(name) # Check database if database_and_table_exists? - if setting = self.find_by_name(name.to_s) + if setting = find_by_name(name.to_s) unless setting.value.nil? return cache[name] = setting.value end end end # Check YAML settings - if yaml_settings.has_key?(name) + if yaml_settings.key?(name) return cache[name] = yaml_settings[name] end end # Set setting value #------------------------------------------------------------------- def []=(name, value) return nil unless database_and_table_exists? - setting = self.find_by_name(name.to_s) || self.new(:name => name) + setting = find_by_name(name.to_s) || new(name: name) setting.value = value setting.save cache[name] = value end # Unrolls [ :one, :two ] settings array into [[ "One", :one ], [ "Two", :two ]] # picking symbol translations from locale. If setting is not a symbol but # string it gets copied without translation. #------------------------------------------------------------------- def unroll(setting) - send(setting).map { |key| [ key.is_a?(Symbol) ? I18n.t(key) : key, key.to_sym ] } + send(setting).map { |key| [key.is_a?(Symbol) ? I18n.t(key) : key, key.to_sym] } end def database_and_table_exists? # Returns false if table or database is unavailable. # Catches all database-related errors, so that Setting will return nil @@ -99,10 +95,9 @@ # Loads settings from YAML files def load_settings_from_yaml(file) settings = YAML.load(ERB.new(File.read(file)).result) @@yaml_settings.deep_merge!(settings) end - end ActiveSupport.run_load_hooks(:fat_free_crm_setting, self) end