Skip to content

v7.0.0

Choose a tag to compare

@mensfeld mensfeld released this 19 Jan 11:48
· 92 commits to main since this release
5f619b9

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::Errors module with domain-specific error classes
    • Introduces Shoryuken::Errors::BaseError as base class for all Shoryuken errors
    • Shoryuken::Errors::QueueNotFoundError for non-existent or inaccessible SQS queues
    • Shoryuken::Errors::InvalidConfigurationError for configuration validation failures
    • Shoryuken::Errors::InvalidWorkerRegistrationError for worker registration conflicts
    • Shoryuken::Errors::InvalidPollingStrategyError for invalid polling strategy configuration
    • Shoryuken::Errors::InvalidEventError for invalid lifecycle event names
    • Shoryuken::Errors::InvalidDelayError for delays exceeding SQS 15-minute maximum
    • Shoryuken::Errors::InvalidArnError for invalid ARN format
    • Replaces generic Ruby exceptions (ArgumentError, RuntimeError) with specific error types

Other Breaking Changes

  • Removed Shoryuken::Shutdown class (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_batch API
    • Called by ActiveJob.perform_all_later for batching multiple jobs
    • Batches jobs in groups of 10 (SQS limit) per queue
  • 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
  • CurrentAttributes Persistence

    • Enables Rails ActiveSupport::CurrentAttributes to flow from enqueue to job execution
    • Automatically serializes current attributes into job payload
    • Usage: require 'shoryuken/active_job/current_attributes' and Shoryuken::ActiveJob::CurrentAttributes.persist('MyApp::Current')

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 SendMessageBatch to 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.