diff options
author | Louise Crow <louise.crow@gmail.com> | 2014-09-04 11:42:29 +0100 |
---|---|---|
committer | Louise Crow <louise.crow@gmail.com> | 2014-09-04 11:42:29 +0100 |
commit | 9389a3fe34457d63e2e34772bb0b244bbd4469b1 (patch) | |
tree | 7179d796fd11b62e6db8f16510ba04f2d59bd264 | |
parent | b53cde9ff491f950fb7fa6904549bfc819144b46 (diff) |
Fix for purging of cache for non-default locales0.12.0.5hotfix/0.12.0.5
-rw-r--r-- | app/controllers/admin_controller.rb | 3 | ||||
-rw-r--r-- | app/controllers/application_controller.rb | 8 | ||||
-rw-r--r-- | app/models/info_request.rb | 18 | ||||
-rw-r--r-- | spec/models/info_request_spec.rb | 17 |
4 files changed, 36 insertions, 10 deletions
diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 0bccd3358..4b93423b8 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -25,8 +25,7 @@ class AdminController < ApplicationController def expire_for_request(info_request) # Clear out cached entries, by removing files from disk (the built in # Rails fragment cache made doing this and other things too hard) - cache_subpath = foi_fragment_cache_all_for_request(info_request) - FileUtils.rm_rf(cache_subpath) + info_request.foi_fragment_cache_directories.each{ |dir| FileUtils.rm_rf(dir) } # Remove any download zips download_dir = request_download_zip_dir(info_request) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 88b107861..42a19e2fc 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -189,14 +189,6 @@ class ApplicationController < ActionController::Base return File.join(File.split(path).map{|x| x[0...max_file_length]}) end - def foi_fragment_cache_all_for_request(info_request) - # return stub path so admin can expire it - first_three_digits = info_request.id.to_s()[0..2] - path = "views/request/#{first_three_digits}/#{info_request.id}" - foi_cache_path = File.expand_path(File.join(File.dirname(__FILE__), '../../cache')) - return File.join(foi_cache_path, path) - end - def foi_fragment_cache_exists?(key_path) return File.exists?(key_path) end diff --git a/app/models/info_request.rb b/app/models/info_request.rb index 46c247fa9..f6c377639 100644 --- a/app/models/info_request.rb +++ b/app/models/info_request.rb @@ -965,6 +965,24 @@ public find(:all, params) end + def foi_fragment_cache_directories + # return stub path so admin can expire it + directories = [] + path = File.join("request", request_dirs) + foi_cache_path = File.expand_path(File.join(Rails.root, 'cache', 'views')) + directories << File.join(foi_cache_path, path) + I18n.available_locales.each do |locale| + directories << File.join(foi_cache_path, locale.to_s, path) + end + + directories + end + + def request_dirs + first_three_digits = id.to_s()[0..2] + File.join(first_three_digits.to_s, id.to_s) + end + def is_old_unclassified? !is_external? && awaiting_description && url_title != 'holding_pen' && get_last_response_event && Time.now > get_last_response_event.created_at + OLD_AGE_IN_DAYS diff --git a/spec/models/info_request_spec.rb b/spec/models/info_request_spec.rb index f9ca44657..d99e2b899 100644 --- a/spec/models/info_request_spec.rb +++ b/spec/models/info_request_spec.rb @@ -87,6 +87,23 @@ describe InfoRequest do end + describe 'when managing the cache directories' do + before do + @info_request = info_requests(:fancy_dog_request) + end + + it 'should return the default locale cache path without locale parts' do + default_locale_path = File.join(Rails.root, 'cache', 'views', 'request', '101', '101') + @info_request.foi_fragment_cache_directories.include?(default_locale_path).should == true + end + + it 'should return the cache path for any other locales' do + other_locale_path = File.join(Rails.root, 'cache', 'views', 'es', 'request', '101', '101') + @info_request.foi_fragment_cache_directories.include?(other_locale_path).should == true + end + + end + describe " when emailing" do before do |