From b170a40ed43e522e80567ec8a7ab454cfaf765fa Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 13 Nov 2011 15:20:31 +0000 Subject: [PATCH] Adds a method to clear the settings cache. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7804 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/setting.rb | 11 ++++++++--- test/unit/setting_test.rb | 13 +++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/app/models/setting.rb b/app/models/setting.rb index 12b186fe8..111193cae 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -151,11 +151,16 @@ class Setting < ActiveRecord::Base 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 diff --git a/test/unit/setting_test.rb b/test/unit/setting_test.rb index 228cd491e..1187ac9ec 100644 --- a/test/unit/setting_test.rb +++ b/test/unit/setting_test.rb @@ -42,4 +42,17 @@ class SettingTest < ActiveSupport::TestCase assert_equal ['issue_added', 'issue_updated', 'news_added'], Setting.notified_events assert_equal ['issue_added', 'issue_updated', 'news_added'], Setting.find_by_name('notified_events').value end + + def test_setting_should_be_reloaded_after_clear_cache + Setting.app_title = "My title" + assert_equal "My title", Setting.app_title + + s = Setting.find_by_name("app_title") + s.value = 'New title' + s.save! + assert_equal "My title", Setting.app_title + + Setting.clear_cache + assert_equal "New title", Setting.app_title + end end