diff --git a/lib/view_component/config.rb b/lib/view_component/config.rb index d8dd797168..8519a9398c 100644 --- a/lib/view_component/config.rb +++ b/lib/view_component/config.rb @@ -26,7 +26,7 @@ def defaults test_controller: "ApplicationController", default_preview_layout: nil, capture_compatibility_patch_enabled: false, - frozen_string_literal: false + frozen_string_literal: :inherit_from_rails }) end @@ -160,8 +160,10 @@ def defaults # Enables compiling templates with the frozen_string_literal magic # comment, which prevents modification of string objects by # assuming they are frozen on initialize. Has performance - # benefits. - # Defaults to `false`. + # benefits. This configuration will default to inheriting from + # `Rails.application.config.action_view.frozen_string_literal`, but can be + # overridden. + # Defaults to `:inherit_from_rails`. def default_preview_paths return [] unless defined?(Rails.root) && Dir.exist?("#{Rails.root}/test/components/previews") diff --git a/lib/view_component/engine.rb b/lib/view_component/engine.rb index 7c3740bceb..0da242398b 100644 --- a/lib/view_component/engine.rb +++ b/lib/view_component/engine.rb @@ -13,6 +13,9 @@ class Engine < Rails::Engine # :nodoc: end initializer "view_component.set_configs" do |app| + if app.config.view_component.frozen_string_literal == :inherit_from_rails + app.config.view_component.frozen_string_literal = !!Rails.application.config.action_view.frozen_string_literal + end options = app.config.view_component %i[generate preview_controller preview_route show_previews_source].each do |config_option| diff --git a/test/sandbox/test/config_test.rb b/test/sandbox/test/config_test.rb index b6d439466d..1c946e63dd 100644 --- a/test/sandbox/test/config_test.rb +++ b/test/sandbox/test/config_test.rb @@ -18,7 +18,7 @@ def test_defaults_are_correct assert_equal @config.render_monkey_patch_enabled, true assert_equal @config.show_previews, true assert_equal @config.preview_paths, ["#{Rails.root}/test/components/previews"] - assert_equal @config.frozen_string_literal, false + assert_equal @config.frozen_string_literal, :inherit_from_rails end def test_all_methods_are_documented