aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionview/lib/action_view/digestor.rb23
-rw-r--r--actionview/test/template/digestor_test.rb5
2 files changed, 14 insertions, 14 deletions
diff --git a/actionview/lib/action_view/digestor.rb b/actionview/lib/action_view/digestor.rb
index d31154061c..cda380c78d 100644
--- a/actionview/lib/action_view/digestor.rb
+++ b/actionview/lib/action_view/digestor.rb
@@ -55,26 +55,23 @@ module ActionView
end
end
- EMPTY = Class.new {
- def name; 'missing'; end
- def digest; ''; end
- }.new
-
def self.tree(name, finder, partial = false, seen = {})
if obj = seen[name]
obj
else
logical_name = name.gsub(%r|/_|, "/")
- template = finder.disable_cache { finder.find(logical_name, [], partial) }
- node = seen[name] = Node.new(name, logical_name, template, partial, [])
+
+ if finder.disable_cache { finder.exists?(logical_name, [], partial) }
+ template = finder.disable_cache { finder.find(logical_name, [], partial) }
+ node = seen[name] = Node.new(name, logical_name, template, partial, [])
+ else
+ node = seen[name] = Missing.new(name, logical_name, nil, partial, [])
+ return node
+ end
+
deps = DependencyTracker.find_dependencies(name, template, finder.view_paths)
deps.each do |dep_file|
- l_name = dep_file.gsub(%r|/_|, "/")
- if finder.disable_cache { finder.exists?(l_name, [], true) }
- node.children << tree(dep_file, finder, true, seen)
- else
- node.children << Missing.new(dep_file, l_name, nil, true, [])
- end
+ node.children << tree(dep_file, finder, true, seen)
end
node
end
diff --git a/actionview/test/template/digestor_test.rb b/actionview/test/template/digestor_test.rb
index 5e553859f0..6ce06e8073 100644
--- a/actionview/test/template/digestor_test.rb
+++ b/actionview/test/template/digestor_test.rb
@@ -311,7 +311,10 @@ class TemplateDigestorTest < ActionView::TestCase
finder.variants = options.delete(:variants) || []
- ActionView::Digestor.digest({ name: template_name, finder: finder }.merge(options))
+ node = ActionView::Digestor.tree template_name, finder
+ x = ActionView::Digestor.digest({ name: template_name, finder: finder }.merge(options))
+ assert_equal x, node.digest
+ x
end
def dependencies(template_name)