diff options
author | Seb Bacon <seb.bacon@gmail.com> | 2012-06-20 10:46:57 +0100 |
---|---|---|
committer | Seb Bacon <seb.bacon@gmail.com> | 2012-06-20 10:46:57 +0100 |
commit | 6c4c822ef7a4491bf821326af779e5be9118c0a1 (patch) | |
tree | 39cf3564b1b2fb6be26499eda2a41be7ba59ad65 /app/models/purge_request.rb | |
parent | ea977a0b9e86bc99a84de8577fa4ce1d304ac489 (diff) | |
parent | 08dac0261325cd757b7146f9626f3c7b48cc672c (diff) |
Merge branch 'release/0.6'0.6
Conflicts:
locale/bs/app.po
locale/ca/app.po
locale/cs/app.po
locale/cy/app.po
locale/de/app.po
locale/en_IE/app.po
locale/es/app.po
locale/eu/app.po
locale/fr/app.po
locale/ga_IE/app.po
locale/gl/app.po
locale/hu_HU/app.po
locale/id/app.po
locale/pt_BR/app.po
locale/sq/app.po
locale/sr@latin/app.po
spec/fixtures/locale/en/app.po
Diffstat (limited to 'app/models/purge_request.rb')
-rw-r--r-- | app/models/purge_request.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/app/models/purge_request.rb b/app/models/purge_request.rb new file mode 100644 index 000000000..48a16f9e6 --- /dev/null +++ b/app/models/purge_request.rb @@ -0,0 +1,52 @@ +# == Schema Information +# Schema version: 114 +# +# Table name: purge_requests +# +# id :integer not null, primary key +# url :string(255) +# created_at :datetime not null +# model :string(255) not null +# model_id :integer not null +# + +# 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) + self.delete() + end +end + + + + |