x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- Fallback Component -->
<script>
console.warn("[gll_component_library] panel failed (source=render, panel=GllComponentLibrary::Panels::HeroComponent): NoMethodError: undefined method \`image\' for nil:NilClass");
</script>
<div class="panel panel--render-failure" data-panel-failure="GllComponentLibrary::Panels::HeroComponent" data-failure-source="render"><strong>Panel render failure</strong>
<p>GllComponentLibrary::Panels::HeroComponent (render)</p>
<pre>NoMethodError: undefined method `image' for nil:NilClass</pre>
</div>
<!-- Render Time Failure -->
<script>
console.warn("[gll_component_library] panel failed (source=render, panel=GllComponentLibrary::Panels::FaultTolerancePreview::RenderTimeBrokenPanel): NoMethodError: undefined method \`image\' for nil:NilClass");
</script>
<div class="panel panel--render-failure" data-panel-failure="GllComponentLibrary::Panels::FaultTolerancePreview::RenderTimeBrokenPanel" data-failure-source="render"><strong>Panel render failure</strong>
<p>GllComponentLibrary::Panels::FaultTolerancePreview::RenderTimeBrokenPanel (render)</p>
<pre>NoMethodError: undefined method `image' for nil:NilClass</pre>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Fallback Component
# raise + rescue (rather than NoMethodError.new) so the synthesised
# error carries a real backtrace — closer to what production produces.
synth_error = begin
raise NoMethodError, "undefined method `image' for nil:NilClass"
rescue NoMethodError => e
e
end
render(GllComponentLibrary::Panels::FailureComponent.new(
component_class: "GllComponentLibrary::Panels::HeroComponent",
error: synth_error,
source: :render
))
# Render Time Failure
render(RenderTimeBrokenPanel.new(panel: nil))
# Fallback Component
# Render Time Failure
No Figma design linked. Add @figma_node_id <id> (or @figma <url>) to the preview class or scenario docstring.