From d17b87919fae5850051bf7a173d3c6a84778f941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Fri, 14 Mar 2014 17:28:31 -0300 Subject: Fix the resolver cache and stop mutating the lookup_context Before we had a bug in the resolver cache so the disable_cache were not working when passing options to find --- actionview/lib/action_view/digestor.rb | 4 ++-- actionview/lib/action_view/lookup_context.rb | 17 ++++++++--------- actionview/test/template/digestor_test.rb | 8 -------- actionview/test/template/lookup_context_test.rb | 13 ------------- 4 files changed, 10 insertions(+), 32 deletions(-) diff --git a/actionview/lib/action_view/digestor.rb b/actionview/lib/action_view/digestor.rb index abbfdc786e..c302bc15fa 100644 --- a/actionview/lib/action_view/digestor.rb +++ b/actionview/lib/action_view/digestor.rb @@ -122,8 +122,8 @@ module ActionView def template @template ||= begin - finder.with_formats_and_variants([format], [variant]) do - finder.disable_cache { finder.find(logical_name, [], partial?) } + finder.disable_cache do + finder.find(logical_name, [], partial?, [], formats: [format], variants: [variant]) end end end diff --git a/actionview/lib/action_view/lookup_context.rb b/actionview/lib/action_view/lookup_context.rb index d7f116c10c..855fed0190 100644 --- a/actionview/lib/action_view/lookup_context.rb +++ b/actionview/lib/action_view/lookup_context.rb @@ -159,7 +159,14 @@ module ActionView def detail_args_for(options) return @details, details_key if options.empty? # most common path. user_details = @details.merge(options) - [user_details, DetailsKey.get(user_details)] + + if @cache + details_key = DetailsKey.get(user_details) + else + details_key = nil + end + + [user_details, details_key] end # Support legacy foo.erb names even though we now ignore .erb @@ -246,13 +253,5 @@ module ActionView end end end - - def with_formats_and_variants(new_formats, new_variants) - old_formats, old_variants = formats, variants - self.formats, self.variants = new_formats, new_variants - yield - ensure - self.formats, self.variants = old_formats, old_variants - end end end diff --git a/actionview/test/template/digestor_test.rb b/actionview/test/template/digestor_test.rb index 72d1f43f12..1c47952f54 100644 --- a/actionview/test/template/digestor_test.rb +++ b/actionview/test/template/digestor_test.rb @@ -40,14 +40,6 @@ class FixtureFinder def disable_cache(&block) yield end - - def with_formats_and_variants(new_formats, new_variants) - old_formats, old_variants = formats, variants - self.formats, self.variants = new_formats, new_variants - yield - ensure - self.formats, self.variants = old_formats, old_variants - end end class TemplateDigestorTest < ActionView::TestCase diff --git a/actionview/test/template/lookup_context_test.rb b/actionview/test/template/lookup_context_test.rb index b11f252110..4f7823045e 100644 --- a/actionview/test/template/lookup_context_test.rb +++ b/actionview/test/template/lookup_context_test.rb @@ -205,19 +205,6 @@ class LookupContextTest < ActiveSupport::TestCase @lookup_context.prefixes = ["foo"] assert_equal ["foo"], @lookup_context.prefixes end - - test "with_formats_and_variants preserves original values after execution" do - @lookup_context.formats = [:html] - @lookup_context.variants = [:phone] - - @lookup_context.with_formats_and_variants([:xml], [:tablet]) do - assert_equal [:xml], @lookup_context.formats - assert_equal [:tablet], @lookup_context.variants - end - - assert_equal [:html], @lookup_context.formats - assert_equal [:phone], @lookup_context.variants - end end class LookupContextWithFalseCaching < ActiveSupport::TestCase -- cgit v1.2.3