aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2014-03-14 17:28:31 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2014-03-14 17:32:32 -0300
commitd17b87919fae5850051bf7a173d3c6a84778f941 (patch)
tree992b91adc70ea251fda06909c242eded0d57c261
parent274d5e45e00f6bddab8fecceccad3ba6c1c66232 (diff)
downloadrails-d17b87919fae5850051bf7a173d3c6a84778f941.tar.gz
rails-d17b87919fae5850051bf7a173d3c6a84778f941.tar.bz2
rails-d17b87919fae5850051bf7a173d3c6a84778f941.zip
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
-rw-r--r--actionview/lib/action_view/digestor.rb4
-rw-r--r--actionview/lib/action_view/lookup_context.rb17
-rw-r--r--actionview/test/template/digestor_test.rb8
-rw-r--r--actionview/test/template/lookup_context_test.rb13
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