From 837e40dcac023319a0bfc38240761d4352b73b99 Mon Sep 17 00:00:00 2001 From: Dave Gynn Date: Sat, 26 Dec 2015 22:25:27 -0800 Subject: [PATCH] restore ability to pass extra options to cache stores The `cache` helper methods should pass any extra options to the cache store. For example :expires_in would be a valid option if memcache was the cache store. The change in commit da16745 broke the ability to pass any options other than :skip_digest and :virtual_path. This PR restores that functionality and adds a test for it. --- actionpack/test/controller/caching_test.rb | 12 ++++++++++++ .../fragment_cached_with_options.html.erb | 3 +++ actionview/lib/action_view/helpers/cache_helper.rb | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 actionpack/test/fixtures/functional_caching/fragment_cached_with_options.html.erb diff --git a/actionpack/test/controller/caching_test.rb b/actionpack/test/controller/caching_test.rb index d19b3810c2..74c78dfa8e 100644 --- a/actionpack/test/controller/caching_test.rb +++ b/actionpack/test/controller/caching_test.rb @@ -172,6 +172,9 @@ class FunctionalCachingController < CachingController def fragment_cached_without_digest end + + def fragment_cached_with_options + end end class FunctionalFragmentCachingTest < ActionController::TestCase @@ -215,6 +218,15 @@ CACHED assert_equal "

ERB

", @store.read("views/nodigest") end + def test_fragment_caching_with_options + get :fragment_cached_with_options + assert_response :success + expected_body = "\n

ERB

\n\n" + + assert_equal expected_body, @response.body + assert_equal "

ERB

", @store.read("views/with_options") + end + def test_render_inline_before_fragment_caching get :inline_fragment_cached assert_response :success diff --git a/actionpack/test/fixtures/functional_caching/fragment_cached_with_options.html.erb b/actionpack/test/fixtures/functional_caching/fragment_cached_with_options.html.erb new file mode 100644 index 0000000000..6865df9b7e --- /dev/null +++ b/actionpack/test/fixtures/functional_caching/fragment_cached_with_options.html.erb @@ -0,0 +1,3 @@ + +<%= cache 'with_options', :skip_digest => true, :expires_in => 1.minute do %>

ERB

<% end %> + diff --git a/actionview/lib/action_view/helpers/cache_helper.rb b/actionview/lib/action_view/helpers/cache_helper.rb index 18b2102d73..2e30578123 100644 --- a/actionview/lib/action_view/helpers/cache_helper.rb +++ b/actionview/lib/action_view/helpers/cache_helper.rb @@ -208,7 +208,7 @@ module ActionView # # The digest will be generated using +virtual_path:+ if it is provided. # - def cache_fragment_name(name = {}, skip_digest: nil, virtual_path: nil) + def cache_fragment_name(name = {}, skip_digest: nil, virtual_path: nil, **_options) if skip_digest name else