diff options
author | Robin Houston <robin.houston@gmail.com> | 2012-05-03 18:57:51 +0100 |
---|---|---|
committer | Robin Houston <robin.houston@gmail.com> | 2012-05-03 18:57:51 +0100 |
commit | 20324887036cccc940e1d68fe8c99864b5b634bd (patch) | |
tree | e8968ddf336b65d40d295421d19091f061d940ca /app/models/purge_request.rb | |
parent | c86325840e2204daea36e68fac045a215a26eafe (diff) | |
parent | 858898510fe77550ac6550a6b306b5c7a2b93d31 (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.rb | 41 |
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 + + + |