如何使控制台中的视图缓存片段到期?

时间:2009-04-16 16:14:37

标签: ruby-on-rails ruby caching actionview

这样的东西
Rails.cache.delete('site_search_form')

似乎不起作用。这可能吗?感谢。

4 个答案:

答案 0 :(得分:55)

的ActionController :: Base.new.expire_fragment(key)的

答案 1 :(得分:6)

使用与使用Rails.cache访问的密钥略有不同的密钥创建缓存片段条目。

改为使用expire_fragment(您可以将其发送给控制器)​​:http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html#M000438

答案 2 :(得分:2)

Rails.cache.delete "views/site_search_form"

答案 3 :(得分:0)

在Rails 5中,我采取了以下步骤来破解缓存而不诉诸skip_digest: true。我们的问题是更改I18n字符串的值并不反映在计算的缓存摘要中,因此缓存不会自动被破坏。

以下是定义缓存块的视图:

/ views/layouts/_footer.html.slim
- cache :footer do
  span= t('shared.footer')

然后在rails控制台中运行:

fragment = ActionController::Base.new.view_context.cache_fragment_name(:footer, virtual_path: 'layouts/_footer.html.slim')
ActionController::Base.new.expire_fragment(fragment)

cache_fragment_name会根据virtual_path关键字参数找出摘要。