Monkey patch ActionCachePath to fix a bug
authorTom Hughes <tom@compton.nu>
Sat, 14 Jan 2012 13:26:01 +0000 (13:26 +0000)
committerTom Hughes <tom@compton.nu>
Sat, 14 Jan 2012 13:26:01 +0000 (13:26 +0000)
When infer_extension is not set ActionCachePath does not set the
extension from any explicitly specified format, and hence expiry
produces cache keys which don't have any extension and don't match
the keys generated when the cache entry was created.

config/initializers/action_cache_path.rb [new file with mode: 0644]

diff --git a/config/initializers/action_cache_path.rb b/config/initializers/action_cache_path.rb
new file mode 100644 (file)
index 0000000..b25aa14
--- /dev/null
@@ -0,0 +1,19 @@
+module ActionController
+  module Caching
+    module Actions
+      class ActionCachePath
+        def initialize(controller, options = {}, infer_extension = true)
+          if infer_extension
+            @extension = controller.params[:format]
+            options.reverse_merge!(:format => @extension) if options.is_a?(Hash)
+          else
+            @extension = options[:format]
+          end
+
+          path = controller.url_for(options).split(%r{://}).last
+          @path = normalize!(path)
+        end
+      end
+    end
+  end
+end