aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/lib/action_view
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2016-05-17 11:28:40 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2016-05-17 11:28:51 -0700
commitd6bac046922fcee05366d26d75349dde70d25f6b (patch)
tree486bad10a28c4b93bbde0482f3bb6217d0a3e516 /actionview/lib/action_view
parent17f04e446a6b3d5ca457e9666e06ee4eccdfa9c2 (diff)
downloadrails-d6bac046922fcee05366d26d75349dde70d25f6b.tar.gz
rails-d6bac046922fcee05366d26d75349dde70d25f6b.tar.bz2
rails-d6bac046922fcee05366d26d75349dde70d25f6b.zip
keep layouts + locals from bloating the cache
Using locals will cause layouts to be cached multiple times in the template cache. This commit removes locals from consideration when looking up the layout.
Diffstat (limited to 'actionview/lib/action_view')
-rw-r--r--actionview/lib/action_view/renderer/template_renderer.rb6
-rw-r--r--actionview/lib/action_view/template/resolver.rb17
2 files changed, 20 insertions, 3 deletions
diff --git a/actionview/lib/action_view/renderer/template_renderer.rb b/actionview/lib/action_view/renderer/template_renderer.rb
index 9d15bbfca7..1d6afb90fe 100644
--- a/actionview/lib/action_view/renderer/template_renderer.rb
+++ b/actionview/lib/action_view/renderer/template_renderer.rb
@@ -84,13 +84,13 @@ module ActionView
when String
begin
if layout =~ /^\//
- with_fallbacks { find_template(layout, nil, false, keys, details) }
+ with_fallbacks { find_template(layout, nil, false, [], details) }
else
- find_template(layout, nil, false, keys, details)
+ find_template(layout, nil, false, [], details)
end
rescue ActionView::MissingTemplate
all_details = @details.merge(:formats => @lookup_context.default_formats)
- raise unless template_exists?(layout, nil, false, keys, all_details)
+ raise unless template_exists?(layout, nil, false, [], all_details)
end
when Proc
resolve_layout(layout.call(formats), keys, formats)
diff --git a/actionview/lib/action_view/template/resolver.rb b/actionview/lib/action_view/template/resolver.rb
index c5e69b1833..bf68e93c58 100644
--- a/actionview/lib/action_view/template/resolver.rb
+++ b/actionview/lib/action_view/template/resolver.rb
@@ -88,6 +88,23 @@ module ActionView
@query_cache.clear
end
+ # Get the cache size. Do not call this
+ # method. This method is not guaranteed to be here ever.
+ def size # :nodoc:
+ size = 0
+ @data.each_value do |v1|
+ v1.each_value do |v2|
+ v2.each_value do |v3|
+ v3.each_value do |v4|
+ size += v4.size
+ end
+ end
+ end
+ end
+
+ size + @query_cache.size
+ end
+
private
def canonical_no_templates(templates)