From 2aacfed78174d852dc9014c756dc3f26fbfe0621 Mon Sep 17 00:00:00 2001 From: Maximo Mussini Date: Wed, 26 Jun 2024 14:50:45 -0300 Subject: [PATCH] perf: reduce `Configuration` instances to the bare minimum --- lib/inertia_rails/configuration.rb | 6 ++++++ lib/inertia_rails/controller.rb | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/inertia_rails/configuration.rb b/lib/inertia_rails/configuration.rb index cf28dad..bc73c58 100644 --- a/lib/inertia_rails/configuration.rb +++ b/lib/inertia_rails/configuration.rb @@ -53,6 +53,12 @@ def merge(config) Configuration.new(**@options.merge(config.options)) end + # Internal: Finalizes the configuration for a specific controller. + def with_defaults(config) + @options = config.options.merge(@options) + freeze + end + OPTION_NAMES.each do |option| define_method(option) { evaluate_option @options[option] diff --git a/lib/inertia_rails/controller.rb b/lib/inertia_rails/controller.rb index faee00b..4e5b632 100644 --- a/lib/inertia_rails/controller.rb +++ b/lib/inertia_rails/controller.rb @@ -40,7 +40,7 @@ def use_inertia_instance_props def _inertia_configuration @_inertia_configuration ||= begin config = superclass.try(:_inertia_configuration) || ::InertiaRails.configuration - @inertia_config ? config.merge(@inertia_config.freeze).freeze : config + @inertia_config&.with_defaults(config) || config end end