From 80786ef802b3f84862e04b1b5323a90744264320 Mon Sep 17 00:00:00 2001 From: Riley Seaburg Date: Wed, 3 Dec 2025 15:07:28 -0600 Subject: [PATCH] Fix: Make Rust WidgetRenderer optional - prevents Sidekiq crash when .so missing The widget_renderer.rb was unconditionally calling Rutie.init even when the native library wasn't found, causing a Fiddle::DLError crash. This broke the Sidekiq worker in production (170+ crashes) since it doesn't have the Rust buildpack but still loads Rails initializers. Now the code only attempts to load Rutie when the library file exists, and gracefully falls back to ERB rendering otherwise. --- ext/widget_renderer/lib/widget_renderer.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ext/widget_renderer/lib/widget_renderer.rb b/ext/widget_renderer/lib/widget_renderer.rb index c6cd72a44..3d27310a7 100644 --- a/ext/widget_renderer/lib/widget_renderer.rb +++ b/ext/widget_renderer/lib/widget_renderer.rb @@ -112,4 +112,16 @@ puts "WidgetRenderer: Initializing Rutie with path: #{path}" -Rutie.new(:widget_renderer).init 'Init_widget_renderer', path +# Only initialize Rutie if we found the native library +if found_path + begin + Rutie.new(:widget_renderer).init 'Init_widget_renderer', path + puts "WidgetRenderer: Rust extension loaded successfully" + rescue Fiddle::DLError => e + puts "WidgetRenderer: Failed to load native library: #{e.message}" + puts "WidgetRenderer: Rust extension will not be available, falling back to ERB" + end +else + puts "WidgetRenderer: Native library not found, Rust extension will not be available" + puts "WidgetRenderer: Form rendering will use ERB fallback" +end