spree/spree · warning

Spree.queues.taxons is deprecated and will be removed in Spr

Error message

Spree.queues.taxons is deprecated and will be removed in Spree 6.1. Use Spree.queues.categories instead.

What it means

Spree 6.0 renamed Taxon to Category, and the Solid Queue config registry Spree.queues renamed its :taxons queue to :categories. The old reader survives for one release as a singleton method on the queues object: it warns, then returns the categories queue. It is removed in Spree 6.1.

Source

Thrown at spree/core/lib/spree/core.rb:130

      reports: :default,
      variants: :default,
      categories: :default,
      collections: :default,
      stock_location_stock_levels: :default,
      coupon_codes: :default,
      themes: :default,
      addresses: :default,
      gift_cards: :default,
      webhooks: :default,
      payment_webhooks: :default,
      api_keys: :default,
      search: :default,
      stock_reservations: :default,
      tax_identifiers: :default
    ).tap do |queues|
      # @deprecated The taxons queue was renamed to categories in 6.0; removed in 6.1.
      queues.define_singleton_method(:taxons) do
        Spree::Deprecation.warn('Spree.queues.taxons is deprecated and will be removed in Spree 6.1. Use Spree.queues.categories instead.') if defined?(Spree::Deprecation)
        categories
      end

      # @deprecated Renamed with the stock level rename in 6.0; removed in 6.1.
      #
      # The writer matters as much as the reader here: this is an OpenStruct, so
      # an existing initializer assigning the old name would quietly define a
      # field nobody reads and its jobs would fall back to the default queue.
      queues.define_singleton_method(:stock_location_stock_items) do
        Spree::Deprecation.warn('Spree.queues.stock_location_stock_items is deprecated and will be removed in Spree 6.1. Use Spree.queues.stock_location_stock_levels instead.') if defined?(Spree::Deprecation)
        stock_location_stock_levels
      end

      queues.define_singleton_method(:stock_location_stock_items=) do |value|
        Spree::Deprecation.warn('Spree.queues.stock_location_stock_items= is deprecated and will be removed in Spree 6.1. Use Spree.queues.stock_location_stock_levels= instead.') if defined?(Spree::Deprecation)
        self.stock_location_stock_levels = value
      end
    end

View on GitHub (pinned to 06bf66a868)

Solutions

  1. Use Spree.queues.categories for both reading and writing
  2. Sweep: grep -rn 'queues.taxons' config lib app
  3. Align Solid Queue config (config/queue.rb, queue namespaces) with the new queue name so jobs land in the intended queue
  4. Run the suite with deprecations raised so stale reads surface as failures

Example fix

# before
Spree.queues.taxons = 'spree_catalog'

# after
Spree.queues.categories = 'spree_catalog'
Defensive patterns

Strategy: validation

Validate before calling

grep -rn 'queues\.taxons' config lib app && echo 'PORT NEEDED' || echo 'clean'

Prevention

When it happens

Trigger: Reading Spree.queues.taxons - typically in an initializer configuring queue names (Spree.queues.taxons = 'custom') or in code that derives Solid Queue queue names for category-related jobs. The read warns every time.

Common situations: Host apps with 5.x-era queue configuration initializers; ops tooling or dashboards that enumerate Spree.queues; extensions registering category jobs under the old queue name.

Related errors


AI-assisted analysis of spree/spree@06bf66a868 (2026-08-21). Data as JSON: /api/errors/cbcfb2b346198da3. Report an issue: GitHub.