File tree Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -14,8 +14,12 @@ def identifier
14
14
15
15
def render ( context , *args )
16
16
@renderable . render_in ( context )
17
- rescue NoMethodError
18
- raise ArgumentError , "'#{ @renderable . inspect } ' is not a renderable object. It must implement #render_in."
17
+ rescue NoMethodError => error
18
+ if error . name == :render_in
19
+ raise ArgumentError , "'#{ @renderable . inspect } ' is not a renderable object. It must implement #render_in."
20
+ else
21
+ raise
22
+ end
19
23
end
20
24
21
25
def format
Original file line number Diff line number Diff line change @@ -312,6 +312,15 @@ def test_render_renderable_with_incompatible_object
312
312
end
313
313
end
314
314
315
+ def test_render_renderable_does_not_mask_nomethoderror_from_within_render_in
316
+ renderable = Object . new
317
+ renderable . define_singleton_method ( :render_in ) { |*| nil . foo }
318
+
319
+ assert_raises NoMethodError , match : "undefined method `foo' for nil" do
320
+ @view . render renderable : renderable
321
+ end
322
+ end
323
+
315
324
def test_render_partial_starting_with_a_capital
316
325
assert_nothing_raised { @view . render ( partial : "test/FooBar" ) }
317
326
end
You can’t perform that action at this time.
0 commit comments