4.1 to 4.2

This guide covers upgrading a 4.1 Spree application to Spree 4.2.
If you have any questions or suggestions feel free to reach out through Spree slack channels
If you're on an older version than 4.1 please follow previous upgrade guides and perform those upgrades incrementally, eg.
This is the safest and recommended method.

Update Gemfile

gem 'spree', '~> 4.2'
gem 'spree_auth_devise', '~> 4.3'
gem 'spree_gateway', '~> 3.9'
gem 'spree_i18n', '~> 5.0'

Remove SpreeMultiCurrency (optional)

If you used that gem in the past you need to remove it. Multi-Currency is now incorporated into Spree core and you cannot use that gem anymore.
  1. 1.
    Remove spree_multi_currency from your Gemfile
  2. 2.
    Remove these preferences from your Spree initializer (config/initializers/spree.rb):
    • allow_currency_change
    • show_currency_selector
    • supported_currencies
  3. 3.
    Remove //= require spree/frontend/spree_multi_currency from vendor/assets/javascripts/spree/frontend/all.js
  4. 4.
    Remove //= require spree/backend/spree_multi_currency from vendor/assets/javascripts/spree/backend/all.js

(Optional) Remove SpreeI18n config

All international configuration is now kept on the Store model in the database rather than in initializer files.
If you used spree_i18n gem before please remove any SpreeI18n::Configreferences from your config/initializers/spree.rb file.

(Optional) Add deface gem (optional)

If you used Deface overrides you will need to include deface in your Gemfile as it was removed from Spree / Spree Auth Devise / Spree Gateway dependencies.
Simply add it to your Gemfile:
gem 'deface'

Update gems

bundle update

Fix RMA migration

Please find a add_stock_location_to_rma migration in your db/migrate directory and change:
class AddStockLocationToRma < ActiveRecord::Migration[4.2]
class AddStockLocationToRMA < ActiveRecord::Migration[4.2]

Install missing migrations

rails spree:install:migrations
rails active_storage:update

Run migrations

rails db:migrate

Upgrade all of your Spree extensions to the newest versions

To avoid errors and compatibility issues, please update all of your Spree extension gems to the newest versions which usually includes fixes for the new Spree release, eg.
bundle update spree_related_products

Other things to remember

Replace fast_json with jsonapi-serializer

Migrate select2 3.5 to 4.x

Only if you've added new Admin Panel pages with Select2 dropdown - this guide will help

Make sure you've got up to date Spree templates (Storefront)

If you're using Spree default Storefront (spree_frontend gem) make sure to update your templates, especially:
Or simply run bundle exec rails g spree:frontend:copy_storefront

Read the release notes

For information about changes contained within this release, please read the 4.2.0 Release Notes.

More info

If you have any questions or suggestions feel free to reach out through Spree slack channels