railsのキャッシュ機能を使うときに重要になってくる Sweeper generate で作成できないのでどこに **_sweeper.rbを置けばいいか 迷った結果、app/models以下が良さげ(app/controllers以下という意見も あったが、なんとなく心配なので・・・) class IndexSweeper < ActionController::Caching::Sweeper observe WhatsNew def after_save(record) expire_page(:controller => "/index", :action => :index) end end といった具合で作成して WhatsNewを作成、更新するコントローラに cache_sweeper :index_sweeper, :only => [:create, :update] と入れる。 これを入れなくてもafter_saveは通ってくれるが、expire_pageでnilが 返ってきてファイルは削除してくれない。

テストでちゃんとここを通ってるか確認したい場合は def after_save(record) expire_page(:controller => "/index", :action => :index)   record.instance_variable_set(:@index_sweeper, !@controller.nil?) end とかやって test の方で assert model_object.instance_variable_get(:@index_sweeper) とやるといいと思います。