aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/lib/action_view
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2016-06-17 01:40:40 +0930
committerGitHub <noreply@github.com>2016-06-17 01:40:40 +0930
commit2ff5a1755f12e417371d1b3c0e0f9b690fa57ab5 (patch)
tree7858b8f91828378429d9e9c0458821b45b822bb6 /actionview/lib/action_view
parent0d00ef96fb4d394d5c32b14671d24a7eb70c57cc (diff)
parent57f87ae4806c5514df8c12e90501c0df1dbaff82 (diff)
downloadrails-2ff5a1755f12e417371d1b3c0e0f9b690fa57ab5.tar.gz
rails-2ff5a1755f12e417371d1b3c0e0f9b690fa57ab5.tar.bz2
rails-2ff5a1755f12e417371d1b3c0e0f9b690fa57ab5.zip
Merge pull request #25411 from javan/fix-digesting-different-formats
Fix digesting non-HTML templates with non-unique logical names
Diffstat (limited to 'actionview/lib/action_view')
-rw-r--r--actionview/lib/action_view/digestor.rb10
1 files changed, 7 insertions, 3 deletions
diff --git a/actionview/lib/action_view/digestor.rb b/actionview/lib/action_view/digestor.rb
index b91e61da18..f3c29d663c 100644
--- a/actionview/lib/action_view/digestor.rb
+++ b/actionview/lib/action_view/digestor.rb
@@ -15,7 +15,7 @@ module ActionView
# * <tt>partial</tt> - Specifies whether the template is a partial
def digest(name:, finder:, dependencies: [])
dependencies ||= []
- cache_key = ([ name ].compact + dependencies).join('.')
+ cache_key = [ name, finder.rendered_format, dependencies ].flatten.compact.join('.')
# this is a correctly done double-checked locking idiom
# (Concurrent::Map's lookups have volatile semantics)
@@ -39,8 +39,12 @@ module ActionView
def tree(name, finder, partial = false, seen = {})
logical_name = name.gsub(%r|/_|, "/")
- if finder.disable_cache { finder.exists?(logical_name, [], partial) }
- template = finder.disable_cache { finder.find(logical_name, [], partial) }
+ options = {}
+ options[:formats] = [finder.rendered_format] if finder.rendered_format
+
+ if finder.disable_cache { finder.exists?(logical_name, [], partial, [], options) }
+ template = finder.disable_cache { finder.find(logical_name, [], partial, [], options) }
+ finder.rendered_format ||= template.formats.first
if node = seen[template.identifier] # handle cycles in the tree
node