Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions ext/widget_renderer/lib/widget_renderer.rb
Original file line number Diff line number Diff line change
@@ -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
Copy link

Copilot AI Dec 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The stub implementation defines render_widget(template, data) but the actual usage in the codebase calls WidgetRenderer.generate_js(json). The stub should define generate_js to match the actual interface of the native implementation.

Suggested change
end
end
def self.generate_js(json)
# Return nil to signal caller should use JS/ERB fallback
nil
end

Copilot uses AI. Check for mistakes.

def self.available?
false
end
end

return # Exit early, don't load native library
end

require 'rutie'
require 'fileutils'

Expand Down Expand Up @@ -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
Loading