From 76de470b1424be57934e58275a6116afb8eb9b3c Mon Sep 17 00:00:00 2001 From: Seb Bacon Date: Fri, 9 Mar 2012 11:48:38 +0000 Subject: first stab at sending PURGE requests to upstream varnish for request pages. Next step: making it asynchronous, e.g. with a queue of things to purge via a cron job. --- app/models/info_request.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'app/models/info_request.rb') diff --git a/app/models/info_request.rb b/app/models/info_request.rb index b5a1cd833..3a1f4b9f3 100644 --- a/app/models/info_request.rb +++ b/app/models/info_request.rb @@ -1042,6 +1042,21 @@ public end 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! + end + end end -- cgit v1.2.3 From 4533b28661d6ce6973becf5877e82ca5656c37d2 Mon Sep 17 00:00:00 2001 From: Seb Bacon Date: Fri, 20 Apr 2012 19:10:10 +0100 Subject: More changes and refactoring to make purges work. --- app/models/info_request.rb | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'app/models/info_request.rb') 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 -- cgit v1.2.3 From f2367311f662ae5b8da40e59d980b4a6e0726a6b Mon Sep 17 00:00:00 2001 From: Seb Bacon Date: Wed, 2 May 2012 08:13:29 +0100 Subject: Use routing system to work out URL of request to purge, rather than hard coding it. --- app/models/info_request.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'app/models/info_request.rb') diff --git a/app/models/info_request.rb b/app/models/info_request.rb index 9b129e74b..78121f5ea 100644 --- a/app/models/info_request.rb +++ b/app/models/info_request.rb @@ -23,6 +23,9 @@ require 'digest/sha1' class InfoRequest < ActiveRecord::Base + include ActionView::Helpers::UrlHelper + include ActionController::UrlWriter + strip_attributes! validates_presence_of :title, :message => N_("Please enter a summary of your request") @@ -1046,7 +1049,8 @@ public 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}", + path = url_for(:controller => 'request', :action => 'show', :url_title => self.url_title, :only_path => true, :locale => :none) + req = PurgeRequest.new(:url => path, :model => self.class.base_class.to_s, :model_id => self.id) req.save() -- cgit v1.2.3