From 93f2af7e7d074905eacbc8a71511f94ae6f57a75 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 9 Jan 2026 14:36:56 +1100 Subject: [PATCH] Lazy load payment method classes This avoids any class reloading issues in dev, simplifies most of the code path and opens up for refactoring. The only reason we still load the class is to call `clean_name` on it for the translation key. We can probably do better. --- .../spree/admin/payment_methods_controller.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/controllers/spree/admin/payment_methods_controller.rb b/app/controllers/spree/admin/payment_methods_controller.rb index 08c0e600b6..296db04548 100644 --- a/app/controllers/spree/admin/payment_methods_controller.rb +++ b/app/controllers/spree/admin/payment_methods_controller.rb @@ -14,7 +14,7 @@ module Spree Spree::PaymentMethod::Check Spree::Gateway::PayPalExpress Spree::Gateway::StripeSCA - }.index_with(&:constantize).freeze + }.freeze def create force_environment @@ -117,7 +117,7 @@ module Spree end def validate_payment_method_provider - valid_payment_methods = PAYMENT_METHODS.keys + valid_payment_methods = PAYMENT_METHODS return if valid_payment_methods.include?(params[:payment_method][:type]) flash[:error] = Spree.t(:invalid_payment_provider) @@ -133,13 +133,13 @@ module Spree end def load_providers - providers = PAYMENT_METHODS.values.sort_by(&:name) + providers = PAYMENT_METHODS.sort unless show_stripe? providers.reject! { |provider| stripe_provider?(provider) } end - providers + providers.map(&:constantize) end # Show Stripe as an option if enabled, or if the @@ -165,7 +165,7 @@ module Spree end def stripe_provider?(provider) - provider.name.ends_with?("StripeSCA") + provider.ends_with?("StripeSCA") end def base_params