Skip to content

Commit f87c87b

Browse files
authored
Add template information to multiple template error messages. (#2115)
* Add template information to multiple template error messages. In service of helping debug #2114, this change fleshes out the template error messages to include the current list of templates. * add newline
1 parent 553d63f commit f87c87b

File tree

4 files changed

+20
-3
lines changed

4 files changed

+20
-3
lines changed

docs/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ nav_order: 5
1010

1111
## main
1212

13+
* Add template information to multiple template error messages.
14+
15+
*Joel Hawksley*
16+
1317
* Add `ostruct` to gemspec file to suppress stdlib removal warning.
1418

1519
*Jonathan Underwood*

lib/view_component/compiler.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ def gather_template_errors(raise_errors)
159159
errors << "Colliding templates #{variant_names.sort.map { |v| "'#{v}'" }.to_sentence} found in #{@component}."
160160
end
161161

162-
raise TemplateError.new(errors) if errors.any? && raise_errors
162+
raise TemplateError.new(errors, @templates) if errors.any? && raise_errors
163163

164164
errors
165165
end

lib/view_component/errors.rb

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,16 @@ def initialize(klass_name)
1717
end
1818

1919
class TemplateError < StandardError
20-
def initialize(errors)
21-
super(errors.join("\n"))
20+
def initialize(errors, templates = nil)
21+
message = errors.join("\n")
22+
23+
if templates
24+
message << "\n"
25+
message << "Templates:\n"
26+
message << templates.map(&:inspect).join("\n")
27+
end
28+
29+
super(message)
2230
end
2331
end
2432

test/sandbox/test/rendering_test.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,11 @@ def test_raise_error_when_variant_template_file_and_inline_variant_call_exist
512512
end
513513
end
514514

515+
assert_includes(
516+
error.message,
517+
"ViewComponent::Template:"
518+
)
519+
515520
assert_includes(
516521
error.message,
517522
"Template file and inline render method found for variant 'phone' in " \

0 commit comments

Comments
 (0)