New
v7.0.0
See the Upgrading to 7.0 guide for detailed migration instructions.
Breaking Changes
Version Requirements
- Ruby 3.2.0 or higher - Minimum required Ruby version is now 3.2.0
- Supported Ruby versions: 3.2, 3.3, 3.4
- Users on Ruby 3.1 should upgrade or remain on Shoryuken 6.x
- Rails 7.2 or higher - Rails 7.0 and 7.1 have reached end-of-life (April 2025)
- Supported Rails versions: 7.2, 8.0, and 8.1
- Users on older Rails versions should upgrade or remain on Shoryuken 6.x
Error Class Hierarchy
- Add
Shoryuken::Errorsmodule with domain-specific error classes- Introduces
Shoryuken::Errors::BaseErroras base class for all Shoryuken errors Shoryuken::Errors::QueueNotFoundErrorfor non-existent or inaccessible SQS queuesShoryuken::Errors::InvalidConfigurationErrorfor configuration validation failuresShoryuken::Errors::InvalidWorkerRegistrationErrorfor worker registration conflictsShoryuken::Errors::InvalidPollingStrategyErrorfor invalid polling strategy configurationShoryuken::Errors::InvalidEventErrorfor invalid lifecycle event namesShoryuken::Errors::InvalidDelayErrorfor delays exceeding SQS 15-minute maximumShoryuken::Errors::InvalidArnErrorfor invalid ARN format- Replaces generic Ruby exceptions (ArgumentError, RuntimeError) with specific error types
- Introduces
Other Breaking Changes
- Removed
Shoryuken::Shutdownclass (unused since Celluloid removal in 2016) - FIFO queues now raise ArgumentError when using delay (fixes #924)
- Removed core class monkey-patching (Hash and String extensions)
- Replaced concurrent-ruby internal structures with pure Ruby implementations
- Require
aws-sdk-sqs>= 1.66
New Features
ActiveJob Enhancements
-
Bulk ActiveJob Enqueuing (Rails 7.1+)
- Implements efficient bulk enqueuing using SQS
send_message_batchAPI - Called by
ActiveJob.perform_all_laterfor batching multiple jobs - Batches jobs in groups of 10 (SQS limit) per queue
- Implements efficient bulk enqueuing using SQS
-
ActiveJob Continuations (Rails 8.1+)
- Implements
stopping?method in ActiveJob adapters to signal graceful shutdown - Enables jobs to checkpoint progress and resume after interruption
- See Rails PR #55127 for more details
- Implements
-
CurrentAttributes Persistence
- Enables Rails
ActiveSupport::CurrentAttributesto flow from enqueue to job execution - Automatically serializes current attributes into job payload
- Usage:
require 'shoryuken/active_job/current_attributes'andShoryuken::ActiveJob::CurrentAttributes.persist('MyApp::Current')
- Enables Rails
Infrastructure Improvements
- Use fiber-local storage for logging context (Ruby 3.2+)
- Implement Zeitwerk autoloading for modern Ruby module loading
- Replace Concurrent::AtomicFixnum, AtomicBoolean, and Hash with pure Ruby implementations
- Add comprehensive YARD documentation with yard-lint
- Increase
SendMessageBatchto 1MB to align with AWS (#864) - Add enqueue_after_transaction_commit? for Rails 7.2 compatibility (#777)
Bug Fixes
- Fix ArgumentError when using delay with FIFO queues (#924)
- Fix integration tests by updating aws-sdk-sqs and replacing moto with LocalStack (#782, #783)
Full Changelog
See CHANGELOG.md for complete details.