json.cache! "v1.person", expires_in: 10.minutes do
json.extract! @person, :name, :age
end
Jbuilderでこんな感じでフラグメントキャッシュをつくったあとに、このキャッシュを明示的に削除したいと思ってRails.cache.delete
にキーをそのまま渡すと
Rails.cache.delete("v1.person") # => nil
キャッシュにヒットしませんでした。
ソースコードを調べたところ、どうやらJbuilderの内部でjbuilder/
という名前空間が渡されたキーに追加されているみたいです。
というわけでキャッシュを削除したいときは先頭にjbuilder/
を追加するとうまくいきます。
Rails.cache.delete("jbuilder/v1.person") # => true