diff --git a/CHANGELOG.md b/CHANGELOG.md index 3099a73e27d..8f21aaf1a50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,40 @@ - Fix CSRF forgery protection bypass for Spree::OrdersController#populate [GHSA-h3fg-h5v3-vf8m](https://github.com/solidusio/solidus/security/advisories/GHSA-h3fg-h5v3-vf8m) +**Other important changes** + +New Solidus applications won't autoload files matching `app/**/*_decorator*.rb` +pattern anymore. For previous Solidus applications, it's something that will +keep working as the responsible code was added to your `config/application.rb` +when Solidus was installed. That code is intended to work with Rails' classic +autoloader, deprecated on Rails 6 and removed on Rails 7. It keeps working +because of a [compatibility +layer](https://github.com/rails/rails/blob/296ef7a17221e81881e38b51aa2b014d7a28bac5/activesupport/lib/active_support/dependencies/require_dependency.rb) +which is also deprecated. However, it may be eventually removed, so you're +better off updating your `application.rb` file. You should substitute: + +```ruby +config.to_prepare do + Dir.glob(Rails.root.join('app/**/*_decorator*.rb')) do |path| + require_dependency(path) + end +``` + +With: + +```ruby +overrides = "#{Rails.root}/app/overrides" # use your actual directory here +Rails.autoloaders.main.ignore(overrides) +config.to_prepare do + Dir.glob("#{overrides}/**/*_decorator*.rb").each do |override| + load override + end +end +``` + +You might also want to adopt the [current Rails recommendation but +overrides](https://guides.rubyonrails.org/engines.html#improving-engine-functionality). + ### Core - Add configuration option for `migration_path` [#4190](https://github.com/solidusio/solidus/pull/4190) ([SuperGoodSoft](https://github.com/supergoodsoft/)) diff --git a/core/lib/generators/solidus/install/install_generator.rb b/core/lib/generators/solidus/install/install_generator.rb index 9836abfd662..4a2157b4eda 100644 --- a/core/lib/generators/solidus/install/install_generator.rb +++ b/core/lib/generators/solidus/install/install_generator.rb @@ -103,17 +103,6 @@ def create_overrides_directory end def configure_application - application <<-RUBY - # Load application's model / class decorators - initializer 'spree.decorators' do |app| - config.to_prepare do - Dir.glob(Rails.root.join('app/**/*_decorator*.rb')) do |path| - require_dependency(path) - end - end - end - RUBY - if !options[:enforce_available_locales].nil? application <<-RUBY # Prevent this deprecation message: https://github.com/svenfuchs/i18n/commit/3b6e56e