diff app/models/setting.rb @ 909:cbb26bc654de redmine-1.3

Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author Chris Cannam
date Fri, 24 Feb 2012 19:09:32 +0000
parents cbce1fd3b1b7
children 433d4f72a19b
line wrap: on
line diff
--- a/app/models/setting.rb	Fri Feb 24 18:36:29 2012 +0000
+++ b/app/models/setting.rb	Fri Feb 24 19:09:32 2012 +0000
@@ -75,7 +75,7 @@
                   TIS-620)
 
   cattr_accessor :available_settings
-  @@available_settings = YAML::load(File.open("#{RAILS_ROOT}/config/settings.yml"))
+  @@available_settings = YAML::load(File.open("#{Rails.root}/config/settings.yml"))
   Redmine::Plugin.all.each do |plugin|
     next unless plugin.settings
     @@available_settings["plugin_#{plugin.id}"] = {'default' => plugin.settings[:default], 'serialized' => true}
@@ -151,11 +151,16 @@
   def self.check_cache
     settings_updated_on = Setting.maximum(:updated_on)
     if settings_updated_on && @cached_cleared_on <= settings_updated_on
-      @cached_settings.clear
-      @cached_cleared_on = Time.now
-      logger.info "Settings cache cleared." if logger
+      clear_cache
     end
   end
+  
+  # Clears the settings cache
+  def self.clear_cache
+    @cached_settings.clear
+    @cached_cleared_on = Time.now
+    logger.info "Settings cache cleared." if logger
+  end
 
 private
   # Returns the Setting instance for the setting named name
@@ -164,6 +169,10 @@
     name = name.to_s
     raise "There's no setting named #{name}" unless @@available_settings.has_key?(name)
     setting = find_by_name(name)
-    setting ||= new(:name => name, :value => @@available_settings[name]['default']) if @@available_settings.has_key? name
+    unless setting
+      setting = new(:name => name)
+      setting.value = @@available_settings[name]['default']
+    end
+    setting
   end
 end