Questions tagged [sweeper]

Sweepers are rails caching constructs that allow changes to models to sweep (clean/remove) cache contents, so keeping the cache entries in sync with data. Sweepers are a combination of observers and controller filters.

29 questions
10
votes
7 answers

In Rails, a Sweeper isn't getting called in a Model-only setup

I'm working on a Rails app, where I'm using page caching to store static html output. The caching works fine. I'm having trouble expiring the caches, though. I believe my problem is, in part, because I'm not expiring the cache from my controller.…
charliepark
  • 1,480
  • 2
  • 13
  • 15
4
votes
2 answers

How does one include a module with cache expirations in sweepers?

We have the following sweeper in a rails application: class AgencyEquipmentTypeSweeper < ActionController::Caching::Sweeper observe AgencyEquipmentType #include ExpireOptions def after_update(agency_equipment_type) …
btelles
  • 5,390
  • 7
  • 46
  • 78
4
votes
1 answer

Rails Caching: Using sweepers for actions which require parameters

I'm trying to use sweepers to handle my page refreshes. For refreshing index actions, etc everything works fine...but I can't seem to sweepers to interpret page parameters. If anyone can tell me what's wrong with the code below, I'd be very…
PlankTon
  • 12,443
  • 16
  • 84
  • 153
4
votes
2 answers

Action caching is not expiring correctly, even when I can see it's being called

I've got a sweeper that's supposed to expire a few action caches. Even though the debugger stops immediately before the call to expire_action, it's not actually expiring the action. Any idea what could be going on? Here are the relevant sweeper and…
btelles
  • 5,390
  • 7
  • 46
  • 78
3
votes
1 answer

Rails 3.2: Pre-render (bake) a new page cache immediately after expiry?

I have an application that uses caches_page for certain controllers/actions. To expire the cache, I use a sweeper. All in all, it's a standard solution. However, because some changes may cause a bit of a rush of requests on the server (because push…
Flambino
  • 18,507
  • 2
  • 39
  • 58
2
votes
1 answer

Rails: Accessing Controller Variables in a Sweeper

So I have some code here I need to modify regarding a Rails Sweeper: class UserTrackingSweeper < ActionController::Caching::Sweeper observe User def after_update(user) return if user.nil? || user.created_at.nil? #fix weird bug complaining…
adrian
  • 2,326
  • 2
  • 32
  • 48
2
votes
1 answer

Rails 3 caching: How do I use a sweeper with Action and Fragment caching to expire the cache?

I'm working on a page that displays a restaurant menu. I have 2 models: FoodMenu has_many :products and Product belongs_to :food_menu. I don't have controllers for either model. Instead, I am using a "pages_controller.rb" to display each FoodMenu…
monfresh
  • 7,974
  • 1
  • 25
  • 22
2
votes
2 answers

How can I access named routes in a Rails sweeper?

I have a sweeper that reheats cache by opening urls in forked processes. It's easy enough to hard-code the host for those urls, but I want it to change dynamically, based on environment. I know I can set global/environmental variables for this, but…
glortho
  • 13,120
  • 8
  • 49
  • 45
2
votes
3 answers

Testing a sweeper with RSpec in Rails

I want to make sure my sweeper is being called as appropriate so I tried adding something like this: it "should clear the cache" do @foo = Foo.new(@create_params) Foo.should_receive(:new).with(@create_params).and_return(@foo) …
DEfusion
  • 5,533
  • 5
  • 44
  • 60
2
votes
1 answer

Can Rails sweepers work across different controllers?

I have action caching working on my Sites index, and set up a SiteSweeper that works fine: # app/controllers/admin/sites_controller.rb class Admin::SitesController < Admin::BaseController cache_sweeper :site_sweeper, :only => [:create, :update,…
jhiro009
  • 576
  • 4
  • 13
2
votes
1 answer

rails - caches_action expire_action

I want to expire a cached action and wondered how to generate the correct reference. #controller caches_action :index, :layout => false #generates this fragment which works fine views/0.0.0.0:3000/article/someid/posts #sweeper ... expire_action…
mark
  • 10,316
  • 6
  • 37
  • 58
2
votes
1 answer

Sweeper missing method 'expire_fragment' in rspec

I am using a sweeper to clear a fragment cache and everything is working fine in development, but I am receiving an error in our specs 2) Admin - Categories #index displays all categories Failure/Error: create_basic_category_set …
Matt Ramirez
  • 673
  • 6
  • 19
2
votes
0 answers

How to update cached action?

Loosing ideas how to properly use action caching for a controller indirectly depending on a model. The background scenario: Having a simple rails model for product objects class Product < ActiveRecord::Base ... end A controller which handles…
David Unric
  • 7,421
  • 1
  • 37
  • 65
2
votes
1 answer

Unable to expire_action on Rails

tl;dr My expire_index method below is getting called, I see the puts in the logs. However, when I refresh the page is the stale version. note: I am using rails_admin for updating the models. But have also noticed the same behavior using rails…
2
votes
1 answer

How do I expire home page cache when an article is updated?

I'm attempting to use a sweeper to clear the home page index action when a new article is published. The home page cache is working fine in development environment and expires after 1 minute. However when an article is saved, the sweeper action is…
Space
  • 2,022
  • 1
  • 19
  • 29
1
2