From 2eee4b8e6674c3c789c012f2c26a9275baa83171 Mon Sep 17 00:00:00 2001 From: Miguel Date: Tue, 13 Jan 2026 13:58:23 +0100 Subject: [PATCH 1/3] Fix: Use Rails::Engine for Propshaft compatibility ReActionView's dev-tools assets were not found when using Propshaft (Rails 8's default asset pipeline) because it used Sprockets-specific asset path registration. Changed from Rails::Railtie to Rails::Engine, which automatically registers app/assets directories with both Sprockets and Propshaft. --- lib/reactionview.rb | 2 +- lib/reactionview/{railtie.rb => engine.rb} | 17 +++++------------ 2 files changed, 6 insertions(+), 13 deletions(-) rename lib/reactionview/{railtie.rb => engine.rb} (59%) diff --git a/lib/reactionview.rb b/lib/reactionview.rb index aeee3fe..065df47 100644 --- a/lib/reactionview.rb +++ b/lib/reactionview.rb @@ -21,7 +21,7 @@ require_relative "reactionview/template/handlers/herb" require_relative "reactionview/template/handlers/herb/herb" -require_relative "reactionview/railtie" if defined?(Rails::Railtie) +require_relative "reactionview/engine" if defined?(Rails::Railtie) module ReActionView end diff --git a/lib/reactionview/railtie.rb b/lib/reactionview/engine.rb similarity index 59% rename from lib/reactionview/railtie.rb rename to lib/reactionview/engine.rb index 6265b73..06ed212 100644 --- a/lib/reactionview/railtie.rb +++ b/lib/reactionview/engine.rb @@ -1,25 +1,18 @@ # frozen_string_literal: true module ReActionView - class Railtie < Rails::Railtie - # If you don't want to precompile ReActionView's assets (eg. because you're using propshaft), - # you can do this in an initializer: - # - # config.after_initialize do - # config.assets.precompile -= ReActionView::Railtie::PRECOMPILE_ASSETS - # end - # + class Engine < Rails::Engine PRECOMPILE_ASSETS = %w[ reactionview-dev-tools.esm.js reactionview-dev-tools.umd.js ].freeze initializer "reactionview.assets" do |app| + # Sprockets precompilation config (for backward compatibility) if ReActionView.config.development? && app.config.respond_to?(:assets) - gem_root = Gem::Specification.find_by_name("reactionview").gem_dir - - app.config.assets.paths << File.join(gem_root, "app", "assets", "javascripts") - app.config.assets.precompile += PRECOMPILE_ASSETS + if app.config.assets.respond_to?(:precompile) + app.config.assets.precompile += PRECOMPILE_ASSETS + end end end From a9e4adf463db182882ff79b8787ed6029395bf1c Mon Sep 17 00:00:00 2001 From: Miguel Date: Tue, 13 Jan 2026 23:10:42 +0100 Subject: [PATCH 2/3] Fix lint errors --- lib/reactionview/engine.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/reactionview/engine.rb b/lib/reactionview/engine.rb index 06ed212..a95e3fb 100644 --- a/lib/reactionview/engine.rb +++ b/lib/reactionview/engine.rb @@ -9,10 +9,8 @@ class Engine < Rails::Engine initializer "reactionview.assets" do |app| # Sprockets precompilation config (for backward compatibility) - if ReActionView.config.development? && app.config.respond_to?(:assets) - if app.config.assets.respond_to?(:precompile) - app.config.assets.precompile += PRECOMPILE_ASSETS - end + if ReActionView.config.development? && app.config.respond_to?(:assets) && app.config.assets.respond_to?(:precompile) + app.config.assets.precompile += PRECOMPILE_ASSETS end end From fc9c970a873612a8e785b54ff8cd4162483421e4 Mon Sep 17 00:00:00 2001 From: Miguel Date: Wed, 1 Apr 2026 18:53:39 +0200 Subject: [PATCH 3/3] Update lib/reactionview.rb Co-authored-by: Chris Oliver --- lib/reactionview.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/reactionview.rb b/lib/reactionview.rb index 065df47..4b5e4dd 100644 --- a/lib/reactionview.rb +++ b/lib/reactionview.rb @@ -21,7 +21,7 @@ require_relative "reactionview/template/handlers/herb" require_relative "reactionview/template/handlers/herb/herb" -require_relative "reactionview/engine" if defined?(Rails::Railtie) +require_relative "reactionview/engine" if defined?(Rails::Engine) module ReActionView end