From 89be98cbbee1d938e5ab0777de000d470ea264a4 Mon Sep 17 00:00:00 2001 From: Filippo Liverani Date: Fri, 8 May 2020 12:24:06 +0200 Subject: [PATCH] Always set ActiveStorage::Current.host in base controllers ActiveStorage disk service needs current host to be correctly set. ActiveStorage::SetCurrent concern is not availabile in Rails < 6.0 so we need a custom one. The concern should always be included in in controllers, there's no need to check if we are currently using ActiveStorage based attachment adapters since Solidus already loads ActiveStorage by default. This way we avoid loading uneccessary modules during initialization process that could potentially conflict with custom attachment adapters. --- .../controllers/spree/api/base_controller.rb | 2 +- core/app/controllers/spree/base_controller.rb | 2 +- core/lib/spree/app_configuration.rb | 6 ------ core/lib/spree/core.rb | 1 + .../core/controller_helpers/current_host.rb | 17 +++++++++++++++++ 5 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 core/lib/spree/core/controller_helpers/current_host.rb diff --git a/api/app/controllers/spree/api/base_controller.rb b/api/app/controllers/spree/api/base_controller.rb index 13a8028e30c..357df060bf1 100644 --- a/api/app/controllers/spree/api/base_controller.rb +++ b/api/app/controllers/spree/api/base_controller.rb @@ -10,10 +10,10 @@ class BaseController < ActionController::Base protect_from_forgery unless: -> { request.format.json? } include CanCan::ControllerAdditions + include Spree::Core::ControllerHelpers::CurrentHost include Spree::Core::ControllerHelpers::Store include Spree::Core::ControllerHelpers::Pricing include Spree::Core::ControllerHelpers::StrongParameters - include ActiveStorage::SetCurrent if Spree::Config.active_storage_enabled? class_attribute :admin_line_item_attributes self.admin_line_item_attributes = [:price, :variant_id, :sku] diff --git a/core/app/controllers/spree/base_controller.rb b/core/app/controllers/spree/base_controller.rb index 85f6c290096..fbdba199c08 100644 --- a/core/app/controllers/spree/base_controller.rb +++ b/core/app/controllers/spree/base_controller.rb @@ -4,13 +4,13 @@ require_dependency 'spree/core/controller_helpers/strong_parameters' class Spree::BaseController < ApplicationController + include Spree::Core::ControllerHelpers::CurrentHost include Spree::Core::ControllerHelpers::Auth include Spree::Core::ControllerHelpers::Common include Spree::Core::ControllerHelpers::PaymentParameters include Spree::Core::ControllerHelpers::Search include Spree::Core::ControllerHelpers::Store include Spree::Core::ControllerHelpers::StrongParameters - include ActiveStorage::SetCurrent if Spree::Config.active_storage_enabled? respond_to :html end diff --git a/core/lib/spree/app_configuration.rb b/core/lib/spree/app_configuration.rb index 9ece933a21a..89635c2deb2 100644 --- a/core/lib/spree/app_configuration.rb +++ b/core/lib/spree/app_configuration.rb @@ -589,11 +589,5 @@ def admin_vat_location country: Spree::Country.find_by(iso: admin_vat_country_iso) ) end - - def active_storage_enabled? - @active_storage_enabled ||= - Spree::Config.image_attachment_module == Spree::Image::ActiveStorageAttachment || - Spree::Config.taxon_attachment_module == Spree::Taxon::ActiveStorageAttachment - end end end diff --git a/core/lib/spree/core.rb b/core/lib/spree/core.rb index cdf3a001249..73953bb1ab5 100644 --- a/core/lib/spree/core.rb +++ b/core/lib/spree/core.rb @@ -78,6 +78,7 @@ class GatewayError < RuntimeError; end require 'spree/core/current_store' require 'spree/core/controller_helpers/auth' require 'spree/core/controller_helpers/common' +require 'spree/core/controller_helpers/current_host' require 'spree/core/controller_helpers/order' require 'spree/core/controller_helpers/payment_parameters' require 'spree/core/controller_helpers/pricing' diff --git a/core/lib/spree/core/controller_helpers/current_host.rb b/core/lib/spree/core/controller_helpers/current_host.rb new file mode 100644 index 00000000000..8af4a80d727 --- /dev/null +++ b/core/lib/spree/core/controller_helpers/current_host.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Spree + module Core + module ControllerHelpers + module CurrentHost + extend ActiveSupport::Concern + + included do + before_action do + ActiveStorage::Current.host = request.base_url + end + end + end + end + end +end