aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/purge_request.rb
diff options
context:
space:
mode:
authorRobin Houston <robin.houston@gmail.com>2012-05-03 18:57:51 +0100
committerRobin Houston <robin.houston@gmail.com>2012-05-03 18:57:51 +0100
commit20324887036cccc940e1d68fe8c99864b5b634bd (patch)
treee8968ddf336b65d40d295421d19091f061d940ca /app/models/purge_request.rb
parentc86325840e2204daea36e68fac045a215a26eafe (diff)
parent858898510fe77550ac6550a6b306b5c7a2b93d31 (diff)
Merge branch 'develop' of github.com:sebbacon/alaveteli into develop
Diffstat (limited to 'app/models/purge_request.rb')
-rw-r--r--app/models/purge_request.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/app/models/purge_request.rb b/app/models/purge_request.rb
new file mode 100644
index 000000000..9bf1a0641
--- /dev/null
+++ b/app/models/purge_request.rb
@@ -0,0 +1,41 @@
+# 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
+ def self.purge_all
+ done_something = false
+ for item in PurgeRequest.all()
+ item.purge
+ done_something = true
+ end
+ return done_something
+ end
+
+ def self.purge_all_loop
+ # Run purge_all in an endless loop, sleeping when there is nothing to do
+ while true
+ sleep_seconds = 1
+ while !purge_all
+ sleep sleep_seconds
+ sleep_seconds *= 2
+ sleep_seconds = 30 if sleep_seconds > 30
+ end
+ 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
+
+
+