aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/test/controller/caching_test.rb23
-rw-r--r--actionview/lib/action_view/renderer/partial_renderer/collection_caching.rb6
2 files changed, 13 insertions, 16 deletions
diff --git a/actionpack/test/controller/caching_test.rb b/actionpack/test/controller/caching_test.rb
index 2de716aa00..7556f984f2 100644
--- a/actionpack/test/controller/caching_test.rb
+++ b/actionpack/test/controller/caching_test.rb
@@ -410,6 +410,7 @@ class AutomaticCollectionCacheTest < ActionController::TestCase
def test_collection_fetches_cached_views
get :index
assert_equal 1, @controller.partial_rendered_times
+ assert_customer_cached 'david/1', 'david, 1'
get :index
assert_equal 1, @controller.partial_rendered_times
@@ -441,23 +442,15 @@ class AutomaticCollectionCacheTest < ActionController::TestCase
def test_caching_with_callable_cache_key
get :index_with_callable_cache_key
- assert_equal 1, @controller.partial_rendered_times
- assert_select ':root', 'david, 1'
-
- get :index_with_callable_cache_key
- assert_equal 1, @controller.partial_rendered_times
- assert_select ':root', 'david, 1'
+ assert_customer_cached 'cached_david', 'david, 1'
+ assert_customer_cached 'david/1', 'david, 1'
end
- def test_caching_mixing_callable_cache_key_and_automatic_caching
- get :index
- assert_equal 1, @controller.partial_rendered_times
- assert_select ':root', 'david, 1'
-
- get :index_with_callable_cache_key
- assert_equal 1, @controller.partial_rendered_times, 'individual cache not reused with collection'
- assert_select ':root', 'david, 1'
- end
+ private
+ def assert_customer_cached(key, content)
+ assert_match content,
+ ActionView::PartialRenderer.collection_cache.read("views/#{key}/7c228ab609f0baf0b1f2367469210937")
+ end
end
class FragmentCacheKeyTestController < CachingController
diff --git a/actionview/lib/action_view/renderer/partial_renderer/collection_caching.rb b/actionview/lib/action_view/renderer/partial_renderer/collection_caching.rb
index 4bc4147e1b..c353eb0b31 100644
--- a/actionview/lib/action_view/renderer/partial_renderer/collection_caching.rb
+++ b/actionview/lib/action_view/renderer/partial_renderer/collection_caching.rb
@@ -51,10 +51,14 @@ module ActionView
end
def fetch_or_cache_partial(cached_partials, order_by:)
+ rely_on_individual_cache_call = !callable_cache_key?
+
order_by.map do |key|
cached_partials.fetch(key) do
yield.tap do |rendered_partial|
- collection_cache.write(key, rendered_partial, @options[:cache_options])
+ unless rely_on_individual_cache_call
+ collection_cache.write(key, rendered_partial, @options[:cache_options])
+ end
end
end
end