docs/developer/upgrades/4.4-to-4.5.mdx
The effort to upgrade to Rails 6.1 is relatively low and brings a lot of improvements around ActiveStorage and handling of CDNs. See the Rails docs for upgrading from 6.0 to 6.1, and for upgrading from 6.1 to 7.0.
<Note> If using Rails 7, you will need to [install libvips](https://www.libvips.org/install.html) on your cloud environment, as Rails 7 uses vips as its default variant processor. You can still use imagemagick, but you’ll need to manually set it in your [Rails config](https://edgeapi.rubyonrails.org/classes/ActiveStorage/Variant.html). </Note>If you're upgrading your app to Rails 7, you'll need to make a slight update to your spree config initializer. In config/initializers/spree.rb, wrap the Spree.config block in a Rails.application.config.after_initialize block, like so:
Rails.application.config.after_initialize do
Spree.config do |config|
# config settings initialized here
end
end
If you don't perform this update to the code, you may expect to get the following error:
/lib/spree/core/preferences/store.rb:96:in `should_persist?':
uninitialized constant Spree::Preference (NameError)
Just like with Spree::Config, you may need to update other intializers in your application, that use autoloadable constants.
For example, if you use spree_auth_devise, you'll need to update config/initializers/devise.rb and wrap the configuration in Rails.application.config.after_initialize block:
Rails.application.config.after_initialize do
if defined?(Spree::Auth)
Spree::Auth::Config.signout_after_password_change = false
end
end
Run the following command to update your gems to 4.4:
bundle update
Legacy REST API v1 was extracted from the spree gem in 4.4. If your application depends on the Spree v1 API, you'll have to include it as a gem in your Gemfile:
bundle add spree_api_v1
bin/rake spree:install:migrations
bin/rails db:migrate
If using Spree Frontend, run the following additional commands to get everything set up correctly with the updated gems:
bin/rails g spree:frontend:install
For information about changes contained within this release, please read the Spree 4.5.0 Release Notes.