aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/info_request.rb21
-rw-r--r--app/models/purge_request.rb27
2 files changed, 35 insertions, 13 deletions
diff --git a/app/models/info_request.rb b/app/models/info_request.rb
index 3a1f4b9f3..9b129e74b 100644
--- a/app/models/info_request.rb
+++ b/app/models/info_request.rb
@@ -453,7 +453,6 @@ public
# An annotation (comment) is made
def add_comment(body, user)
comment = Comment.new
-
ActiveRecord::Base.transaction do
comment.body = body
comment.user = user
@@ -1043,18 +1042,14 @@ public
return ret
end
- before_save(:mark_view_is_dirty)
- def mark_view_is_dirty
- self.view_is_dirty = true
- self.save!
- end
-
- def self.purge_varnish
- for info_request in InfoRequest.find_by_view_is_dirty(true)
- url = "/request/#{info_request.url_title}"
- purge(url)
- info_request.view_is_dirty = true
- info_request.save!
+ before_save :purge_in_cache
+ def purge_in_cache
+ if !MySociety::Config.get('VARNISH_HOST').nil? && !self.id.nil?
+ # we only do this for existing info_requests (new ones have a nil id)
+ req = PurgeRequest.new(:url => "/request/#{self.url_title}",
+ :model => self.class.base_class.to_s,
+ :model_id => self.id)
+ req.save()
end
end
end
diff --git a/app/models/purge_request.rb b/app/models/purge_request.rb
new file mode 100644
index 000000000..a96d0f39e
--- /dev/null
+++ b/app/models/purge_request.rb
@@ -0,0 +1,27 @@
+# models/purge_request.rb:
+# A queue of URLs to purge
+#
+# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
+# Email: francis@mysociety.org; WWW: http://www.mysociety.org/
+#
+
+class PurgeRequest < ActiveRecord::Base
+ require 'open-uri'
+ def self.purge_all
+ for item in PurgeRequest.all()
+ item.purge
+ end
+ end
+
+ def purge
+ config = MySociety::Config.load_default()
+ varnish_url = config['VARNISH_HOST']
+ result = quietly_try_to_purge(varnish_url, self.url)
+ if result == "200"
+ self.delete()
+ end
+ end
+end
+
+
+