Rails / Rakeタスクからだとキャッシュがうまく消えてくれない時の対処法

Shunsuke Sawada

ちょっとハマッた。

Viewファイルにこんなキャッシュを設定。

ruby
1
2
3
<% cache('all_products') do %>
...
<% end >

Rakeタスクの中で、
expire_fragment('all_products') で行けるだろうと思っていたけど、そうはいかなかった。
ActionController::Base.new.expire_fragment('all_products') もだめだった。

  
結局、こんな感じ。

ruby
1
2
cache = ActionController::Base.cache_store
cache.delete_matched(/all_products/)

あ、ファイルキャッシュの場合です。

以上です。

参考
Expire Action Cache with Rake

2
Shunsuke Sawada

おすすめの記事

英語を勉強しながらウェブも勉強するために。
アソシエーションされたモデルを一括で保存する方法と、うまくいかない時の対処法。
3
herokuでRailsアプリを公開する手順をゆっくり丁寧に。
114