From 375dde529872f920641b27545f88bc7dfb8319c5 Mon Sep 17 00:00:00 2001 From: Riley Seaburg Date: Tue, 23 Dec 2025 14:27:55 +0000 Subject: [PATCH] Add SKIP_WIDGET_RENDERER check at gem load time to prevent crash --- ext/widget_renderer/lib/widget_renderer.rb | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ext/widget_renderer/lib/widget_renderer.rb b/ext/widget_renderer/lib/widget_renderer.rb index 7ff6508a2..a5055bfd6 100644 --- a/ext/widget_renderer/lib/widget_renderer.rb +++ b/ext/widget_renderer/lib/widget_renderer.rb @@ -1,5 +1,24 @@ # frozen_string_literal: true +# Check if widget renderer should be skipped (for deployments where native library is unavailable) +if ENV['SKIP_WIDGET_RENDERER'] == 'true' + puts 'WidgetRenderer: SKIP_WIDGET_RENDERER is set, using stub implementation' + + # Define a stub class that provides the same interface but uses ERB fallback + class WidgetRenderer + def self.render_widget(template, data) + # Return nil to signal caller should use ERB fallback + nil + end + + def self.available? + false + end + end + + return # Exit early, don't load native library +end + require 'rutie' require 'fileutils' @@ -118,6 +137,13 @@ begin Rutie.new(:widget_renderer).init 'Init_widget_renderer', path + + # Add available? method to the native class + class ::WidgetRenderer + def self.available? + true + end + end rescue SystemExit => e raise LoadError, "WidgetRenderer native init exited: #{e.message}" end