From 55dd66d2e02795c2ccf47ade30add940462a18d5 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Mon, 17 Nov 2025 03:13:12 +0900 Subject: [PATCH 1/2] Install assets if debug mode is enabled Now asset files are installed only in development environment. Therefore, the debug mode cannot be used in production environment. This change makes it possible to install asset files when the debug mode is enabled, regardless of the environment. ref: https://github.com/marcoroth/reactionview/issues/61 --- lib/reactionview/railtie.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/reactionview/railtie.rb b/lib/reactionview/railtie.rb index 6265b73..fd0511a 100644 --- a/lib/reactionview/railtie.rb +++ b/lib/reactionview/railtie.rb @@ -14,8 +14,8 @@ class Railtie < Rails::Railtie reactionview-dev-tools.umd.js ].freeze - initializer "reactionview.assets" do |app| - if ReActionView.config.development? && app.config.respond_to?(:assets) + initializer "reactionview.assets", after: :load_config_initializers do |app| + if ReActionView.config.debug_mode_enabled? && 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") From fd3eb95f826ab7b97940eacd68a9147ee1c3db14 Mon Sep 17 00:00:00 2001 From: Marco Roth Date: Sat, 8 Aug 2026 05:31:49 +0200 Subject: [PATCH 2/2] Add test --- test/reactionview/railtie_test.rb | 91 +++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 test/reactionview/railtie_test.rb diff --git a/test/reactionview/railtie_test.rb b/test/reactionview/railtie_test.rb new file mode 100644 index 0000000..a7a2014 --- /dev/null +++ b/test/reactionview/railtie_test.rb @@ -0,0 +1,91 @@ +# frozen_string_literal: true + +require_relative "../test_helper" + +class ReActionView::RailtieTest < Minitest::Spec + class FakeAssets + attr_accessor :paths, :precompile + + def initialize + @paths = [] + @precompile = [] + end + end + + class FakeConfig + attr_reader :assets + + def initialize + @assets = FakeAssets.new + end + end + + class FakeApp + attr_reader :config + + def initialize + @config = FakeConfig.new + end + end + + before do + @previous_debug_mode = ReActionView.config.debug_mode + @app = FakeApp.new + end + + after do + ReActionView.config.debug_mode = @previous_debug_mode + end + + def assets_initializer + ReActionView::Railtie.initializers.find { |initializer| initializer.name == "reactionview.assets" } + end + + def run_assets_initializer(env) + Rails.stub(:env, ActiveSupport::StringInquirer.new(env)) do + assets_initializer.run(@app) + end + end + + def gem_javascripts_path + File.join(Gem::Specification.find_by_name("reactionview").gem_dir, "app", "assets", "javascripts") + end + + test "runs after config initializers so it can see the configured debug_mode" do + assert_equal :load_config_initializers, assets_initializer.after + end + + test "installs assets outside development when debug mode is enabled" do + ReActionView.config.debug_mode = true + + run_assets_initializer("production") + + assert_includes @app.config.assets.paths, gem_javascripts_path + assert_equal ReActionView::Railtie::PRECOMPILE_ASSETS, @app.config.assets.precompile + end + + test "does not install assets when debug mode is disabled" do + ReActionView.config.debug_mode = false + + run_assets_initializer("production") + + assert_empty @app.config.assets.paths + assert_empty @app.config.assets.precompile + end + + test "installs assets in development when debug mode is left unset" do + ReActionView.config.debug_mode = nil + + run_assets_initializer("development") + + assert_includes @app.config.assets.paths, gem_javascripts_path + end + + test "does not install assets outside development when debug mode is left unset" do + ReActionView.config.debug_mode = nil + + run_assets_initializer("production") + + assert_empty @app.config.assets.paths + end +end