diff --git a/lib/view_component/base.rb b/lib/view_component/base.rb index db5ab1c9b3..b1b4776a5f 100644 --- a/lib/view_component/base.rb +++ b/lib/view_component/base.rb @@ -20,8 +20,9 @@ class << self delegate(*ViewComponent::Config.defaults.keys, to: :config) def config - @config ||= ViewComponent::Config.defaults + @config ||= ActiveSupport::OrderedOptions.new end + attr_writer :config end include ViewComponent::ContentAreas diff --git a/lib/view_component/engine.rb b/lib/view_component/engine.rb index e5cf49b7dc..d0650d036f 100644 --- a/lib/view_component/engine.rb +++ b/lib/view_component/engine.rb @@ -1,11 +1,11 @@ # frozen_string_literal: true require "rails" -require "view_component/base" +require "view_component/config" module ViewComponent class Engine < Rails::Engine # :nodoc: - config.view_component = ViewComponent::Base.config + config.view_component = ViewComponent::Config.defaults rake_tasks do load "view_component/rails/tasks/view_component.rake" @@ -14,9 +14,6 @@ class Engine < Rails::Engine # :nodoc: initializer "view_component.set_configs" do |app| options = app.config.view_component - %i[generate preview_controller preview_route show_previews_source].each do |config_option| - options[config_option] ||= ViewComponent::Base.public_send(config_option) - end options.instrumentation_enabled = false if options.instrumentation_enabled.nil? options.render_monkey_patch_enabled = true if options.render_monkey_patch_enabled.nil? options.show_previews = Rails.env.development? || Rails.env.test? if options.show_previews.nil? @@ -40,6 +37,8 @@ class Engine < Rails::Engine # :nodoc: initializer "view_component.enable_instrumentation" do |app| ActiveSupport.on_load(:view_component) do + Base.config = app.config.view_component + if app.config.view_component.instrumentation_enabled.present? # :nocov: ViewComponent::Base.prepend(ViewComponent::Instrumentation)