在Rails 4中禁用缓存摘要

我正在将Rails 3应用程序迁移到Rails 4.迁移过程非常顺利,但我遇到的一个大问题是我的旧Rails 3代码使我的缓存过期无效。 我得到的日志如下:

Expire fragment views/localhost:3000/cardsets/36?action_suffix=edityes (0.0ms) ... Read fragment views/localhost:3000/cardsets/36?action_suffix=edityes/d8034b6e68ba30b5916a2ebb73b68ffe (0.0ms) 

事实certificate这是因为Rails 4带来了一种新的时髦缓存,缓存摘要。 最后一个长hex字符串是Rails想要与此缓存片段关联的某些视图的md5摘要。

我相信我不需要缓存摘要。 我的应用程序很快就会更新,通常我可以在更新时清除缓存,因此引用先前部署版本的一段视图代码的缓存片段的概念是无关紧要的。

我看到我可以使用:skip_digest => true标志修改任何给定的cache调用。 此博客文章提到修改大量cache调用以添加:skip_digest 。 但我相信我想将此标志应用于我的应用程序中的每次cache调用。 当然必须有一些方法来普遍禁用缓存摘要?

最简单的方法是对cache_fragment_name方法进行修补,以便默认情况下skip_digesttrue 。 为了在需要时使用md5摘要,您只需将skip_digest设置为false

 module ActionView module Helpers module CacheHelper def cache_fragment_name(name = {}, options = nil) skip_digest = options && !options[:skip_digest].nil? ? options[:skip_digest] : true if skip_digest name else fragment_name_with_digest(name) end end end end end