otwarchive-symphonyarchive/app/sweepers/feed_sweeper.rb

36 lines
981 B
Ruby
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
class FeedSweeper < ActionController::Caching::Sweeper
include Rails.application.routes.url_helpers
observe Chapter, Work
def after_create(record)
if record.posted? && (record.is_a?(Work) || (record.is_a?(Chapter) && record.work.present? && record.work.posted?))
expire_caches(record)
end
end
def after_update(record)
if record.posted?
expire_caches(record)
end
end
private
# When a chapter or work is created, updated or destroyed, expire:
# - the cached feed page for each of its canonical tags
# - the works index caches for its canonical tags, pseuds, users and collections
def expire_caches(record)
work = record
work = record.work if record.is_a?(Chapter)
return unless work.present?
work.filters.each do |tag|
# expire the atom feed page for the tags on the work and the corresponding filter tags
ActionController::Base.expire_page feed_tag_path(tag.id, format: 'atom')
end
end
end