aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLouise Crow <louise.crow@gmail.com>2014-09-04 11:42:29 +0100
committerLouise Crow <louise.crow@gmail.com>2014-09-04 11:42:29 +0100
commit9389a3fe34457d63e2e34772bb0b244bbd4469b1 (patch)
tree7179d796fd11b62e6db8f16510ba04f2d59bd264
parentb53cde9ff491f950fb7fa6904549bfc819144b46 (diff)
Fix for purging of cache for non-default locales0.12.0.5hotfix/0.12.0.5
-rw-r--r--app/controllers/admin_controller.rb3
-rw-r--r--app/controllers/application_controller.rb8
-rw-r--r--app/models/info_request.rb18
-rw-r--r--spec/models/info_request_spec.rb17
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