Skip to content

Commit 2867910

Browse files
author
Gordon McNaughton
committed
Fixes 'cache' directive in mailers not working in Rails 4.2.x.
Closes #3
1 parent 51d3e95 commit 2867910

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

Diff for: lib/mailer_fragment_caching.rb

+24
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,28 @@ def cache_configured?
1414
perform_caching && cache_store
1515
end
1616

17+
# In Rails4, <tt>ActionController::Caching#view_cache_dependencies</tt> must
18+
# also be duplicated in order for +cache+ to work.
19+
# <tt>ActionView::Helpers::CacheHelper#fragment_name_with_digest</tt> relies on it.
20+
if Rails::VERSION::MAJOR >= 4
21+
def self.included(base)
22+
base.class_eval do
23+
class_attribute :_view_cache_dependencies
24+
self._view_cache_dependencies = []
25+
helper_method :view_cache_dependencies if respond_to?(:helper_method)
26+
end
27+
end
28+
29+
def self.view_cache_dependency(&dependency)
30+
self._view_cache_dependencies += [dependency]
31+
end
32+
33+
def view_cache_dependencies
34+
self.class._view_cache_dependencies.map { |dep| instance_exec(&dep) }.compact
35+
end
36+
37+
def instrument_fragment_cache(name, key) # :nodoc:
38+
yield if block_given?
39+
end
40+
end
1741
end

0 commit comments

Comments
 (0)