diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c5da0b443b..ca9c20f23a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -75,8 +75,6 @@ class ApplicationController < ActionController::Base end def user_setup - # Check the settings cache for each request - Setting.check_cache # Find the current user User.current = find_current_user end diff --git a/app/models/setting.rb b/app/models/setting.rb index 145ee5cc1c..c13d5988dd 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -97,13 +97,13 @@ class Setting < ActiveRecord::Base # Returns the value of the setting named name def self.[](name) - Marshal.load(Rails.cache.fetch("chiliproject/setting/#{name}") {Marshal.dump(find_or_default(name).value)}) + Marshal.load(Rails.cache.fetch(self.cache_key(name)) {Marshal.dump(find_or_default(name).value)}) end def self.[]=(name, v) setting = find_or_default(name) setting.value = (v ? v : "") - Rails.cache.delete "chiliproject/setting/#{name}" + Rails.cache.delete self.cache_key(name) setting.save setting.value end @@ -137,23 +137,19 @@ class Setting < ActiveRecord::Base Object.const_defined?(:OpenID) && self[:openid].to_i > 0 end - # Checks if settings have changed since the values were read - # and clears the cache hash if it's the case - # Called once per request + # Deprecation Warning: This method is no longer available. There is no + # replacement. def self.check_cache - settings_updated_on = Setting.maximum(:updated_on) - cache_cleared_on = Rails.cache.read('chiliproject/setting-cleared_on') - cache_cleared_on = cache_cleared_on ? Marshal.load(cache_cleared_on) : Time.now - if settings_updated_on && cache_cleared_on <= settings_updated_on - clear_cache - end + ActiveSupport::Deprecation.warn "The Setting.check_cache method is " + + "deprecated and will be removed in the future. There should be no " + + "replacement for this functionality needed." end # Clears all of the Setting caches def self.clear_cache - Rails.cache.delete_matched( /^chiliproject\/setting\/.+$/ ) - Rails.cache.write('chiliproject/setting-cleared_on', Marshal.dump(Time.now)) - logger.info 'Settings cache cleared.' if logger + ActiveSupport::Deprecation.warn "The Setting.clear_cache method is " + + "deprecated and will be removed in the future. There should be no " + + "replacement for this functionality needed." end private @@ -165,4 +161,8 @@ private setting = find_by_name(name) setting ||= new(:name => name, :value => @@available_settings[name]['default']) if @@available_settings.has_key? name end + + def self.cache_key(name) + "chiliproject/setting/#{Setting.maximum(:updated_on).to_i}/#{name}" + end end diff --git a/test/functional/account_controller_test.rb b/test/functional/account_controller_test.rb index a5612901d0..e664fa861b 100644 --- a/test/functional/account_controller_test.rb +++ b/test/functional/account_controller_test.rb @@ -21,6 +21,7 @@ class AccountControllerTest < ActionController::TestCase fixtures :users, :roles def setup + super @controller = AccountController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new diff --git a/test/functional/issue_statuses_controller_test.rb b/test/functional/issue_statuses_controller_test.rb index 4c77fe6f07..80e58922ba 100644 --- a/test/functional/issue_statuses_controller_test.rb +++ b/test/functional/issue_statuses_controller_test.rb @@ -23,6 +23,7 @@ class IssueStatusesControllerTest < ActionController::TestCase fixtures :issue_statuses, :issues def setup + super @controller = IssueStatusesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new diff --git a/test/test_helper.rb b/test/test_helper.rb index 9ba570b217..6960fdafe6 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -46,7 +46,7 @@ class ActiveSupport::TestCase # Add more helper methods to be used by all tests here... def setup super - Setting.clear_cache + Rails.cache.clear end def log_user(login, password) diff --git a/test/unit/changeset_test.rb b/test/unit/changeset_test.rb index 4395126709..7a2dcf8a02 100644 --- a/test/unit/changeset_test.rb +++ b/test/unit/changeset_test.rb @@ -19,6 +19,7 @@ class ChangesetTest < ActiveSupport::TestCase :custom_fields, :custom_values, :users, :members, :member_roles, :trackers def setup + super end def test_ref_keywords_any diff --git a/test/unit/journal_observer_test.rb b/test/unit/journal_observer_test.rb index 01ccaf31a3..99ba56fa6f 100644 --- a/test/unit/journal_observer_test.rb +++ b/test/unit/journal_observer_test.rb @@ -15,6 +15,7 @@ require File.expand_path('../../test_helper', __FILE__) class JournalObserverTest < ActiveSupport::TestCase def setup + super @user = User.generate!(:mail_notification => 'all') @project = Project.generate! User.add_to_project(@user, @project, Role.generate!(:permissions => [:view_issues, :edit_issues])) diff --git a/test/unit/lib/redmine/i18n_test.rb b/test/unit/lib/redmine/i18n_test.rb index 5a80ee4c8b..ef1ecb4841 100644 --- a/test/unit/lib/redmine/i18n_test.rb +++ b/test/unit/lib/redmine/i18n_test.rb @@ -18,6 +18,7 @@ class Redmine::I18nTest < ActiveSupport::TestCase include ActionView::Helpers::NumberHelper def setup + super @hook_module = Redmine::Hook end diff --git a/test/unit/news_test.rb b/test/unit/news_test.rb index c94058efaa..518bd87bbe 100644 --- a/test/unit/news_test.rb +++ b/test/unit/news_test.rb @@ -22,6 +22,7 @@ class NewsTest < ActiveSupport::TestCase def setup + super end def test_create_should_send_email_notification