Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions ruby/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.13.0] - 2026-10-08

### Added

- Expanded checks against Go-generated conformance fixtures to cover cron schedules, snooze counters, all shared metadata keys, and queue-control and leadership notification emission through both SQL drivers. [PR #1463](https://github.com/riverqueue/river/pull/1463).
- Added `CRON_TZ=` / `TZ=` prefixes, `?` wildcards, and Go-style `@every` durations to `PeriodicCron`. [PR #1463](https://github.com/riverqueue/river/pull/1463).

### Changed

- Ruby is now developed in the main [River repository](https://github.com/riverqueue/river/tree/master/ruby). Gem names and require paths are unchanged. The four public gems (`riverqueue`, `riverqueue-activerecord`, `riverqueue-sequel`, and `riverqueue-rails`) are released together. [PR #1463](https://github.com/riverqueue/river/pull/1463).
- **Breaking:** Job insertion accepts only `available`, `pending`, and `scheduled` states. `running`, `retryable`, and terminal states are rejected, including when set by insertion hooks. [PR #1463](https://github.com/riverqueue/river/pull/1463).
- **Breaking:** Insertion rejects queue names containing characters other than ASCII letters, digits, underscores, hyphens, colons, or periods. Nonzero `UniqueOpts#by_period` values must be at least one second. [PR #1463](https://github.com/riverqueue/river/pull/1463).
- **Breaking:** Attempt counts must be between 0 and 32,767, and `max_attempts` must be between 1 and 32,767. These bounds also apply on SQLite. `job_retry` raises `ArgumentError` when another attempt would exceed the limit. [PR #1463](https://github.com/riverqueue/river/pull/1463).
- **Breaking:** Job and queue metadata updates require a Hash; JSON-encoded strings are no longer accepted. Pass an empty Hash to clear metadata. Updates to `attempted_by` require string entries. [PR #1463](https://github.com/riverqueue/river/pull/1463).

### Fixed

- Externally claimed jobs honor worker retry hooks, including Active Job's retry policy, and use their claim timestamps for queue-wait statistics and attempt errors. Worker initialization failures are logged without losing the reported work error. [PR #1463](https://github.com/riverqueue/river/pull/1463).
Expand Down
10 changes: 5 additions & 5 deletions ruby/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
riverqueue (0.12.0)
riverqueue (0.13.0)
logger (> 0, < 1000)
optparse (> 0, < 1000)
securerandom (> 0, < 1000)
Expand All @@ -10,16 +10,16 @@ PATH
PATH
remote: driver/riverqueue-activerecord
specs:
riverqueue-activerecord (0.12.0)
riverqueue-activerecord (0.13.0)
activerecord (> 0, < 1000)
activesupport (> 0, < 1000)
riverqueue (= 0.12.0)
riverqueue (= 0.13.0)

PATH
remote: driver/riverqueue-sequel
specs:
riverqueue-sequel (0.12.0)
riverqueue (= 0.12.0)
riverqueue-sequel (0.13.0)
riverqueue (= 0.13.0)
sequel (> 0, < 1000)

GEM
Expand Down
6 changes: 3 additions & 3 deletions ruby/driver/riverqueue-activerecord/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: ../..
specs:
riverqueue (0.12.0)
riverqueue (0.13.0)
logger (> 0, < 1000)
optparse (> 0, < 1000)
securerandom (> 0, < 1000)
Expand All @@ -10,10 +10,10 @@ PATH
PATH
remote: .
specs:
riverqueue-activerecord (0.12.0)
riverqueue-activerecord (0.13.0)
activerecord (> 0, < 1000)
activesupport (> 0, < 1000)
riverqueue (= 0.12.0)
riverqueue (= 0.13.0)

GEM
remote: https://rubygems.org/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Gem::Specification.new do |s|
s.name = "riverqueue-activerecord"
s.version = "0.12.0"
s.version = "0.13.0"
s.summary = "ActiveRecord PostgreSQL and SQLite driver for the River Ruby gem."
s.description = "ActiveRecord PostgreSQL and SQLite driver for inserting and working River jobs in Ruby."
s.authors = ["Blake Gentry", "Brandur Leach"]
Expand Down
6 changes: 3 additions & 3 deletions ruby/driver/riverqueue-sequel/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PATH
remote: ../..
specs:
riverqueue (0.12.0)
riverqueue (0.13.0)
logger (> 0, < 1000)
optparse (> 0, < 1000)
securerandom (> 0, < 1000)
Expand All @@ -10,8 +10,8 @@ PATH
PATH
remote: .
specs:
riverqueue-sequel (0.12.0)
riverqueue (= 0.12.0)
riverqueue-sequel (0.13.0)
riverqueue (= 0.13.0)
sequel (> 0, < 1000)

GEM
Expand Down
2 changes: 1 addition & 1 deletion ruby/driver/riverqueue-sequel/riverqueue-sequel.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Gem::Specification.new do |s|
s.name = "riverqueue-sequel"
s.version = "0.12.0"
s.version = "0.13.0"
s.summary = "Sequel PostgreSQL and SQLite driver for the River Ruby gem."
s.description = "Sequel PostgreSQL and SQLite driver for inserting and working River jobs in Ruby."
s.authors = ["Blake Gentry", "Brandur Leach"]
Expand Down
16 changes: 8 additions & 8 deletions ruby/rails/riverqueue-rails/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
PATH
remote: ../../driver/riverqueue-activerecord
specs:
riverqueue-activerecord (0.12.0)
riverqueue-activerecord (0.13.0)
activerecord (> 0, < 1000)
activesupport (> 0, < 1000)
riverqueue (= 0.12.0)
riverqueue (= 0.13.0)

PATH
remote: ../..
specs:
riverqueue (0.12.0)
riverqueue (0.13.0)
logger (> 0, < 1000)
optparse (> 0, < 1000)
securerandom (> 0, < 1000)
Expand All @@ -18,10 +18,10 @@ PATH
PATH
remote: .
specs:
riverqueue-rails (0.12.0)
riverqueue-rails (0.13.0)
activejob (>= 7.2, < 8.2)
railties (>= 7.2, < 8.2)
riverqueue-activerecord (= 0.12.0)
riverqueue-activerecord (= 0.13.0)

GEM
remote: https://rubygems.org/
Expand Down Expand Up @@ -343,9 +343,9 @@ CHECKSUMS
rdoc (8.0.0) sha256=03bf8c08a9639658855a0cfd77c0abca8325c227693f7f33f82957811348c469
regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
reline (0.7.0) sha256=5b012d8e55dbf9d450f12bde2cf7d15ff546ae80b3f8f3b30e570d431815583d
riverqueue (0.12.0)
riverqueue-activerecord (0.12.0)
riverqueue-rails (0.12.0)
riverqueue (0.13.0)
riverqueue-activerecord (0.13.0)
riverqueue-rails (0.13.0)
rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
Expand Down
2 changes: 1 addition & 1 deletion ruby/rails/riverqueue-rails/riverqueue-rails.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Gem::Specification.new do |s|
s.name = "riverqueue-rails"
s.version = "0.12.0"
s.version = "0.13.0"
s.summary = "Active Job and Rails integration for River."
s.authors = ["Blake Gentry", "Brandur Leach"]
s.files = Dir.glob("lib/**/*") + ["README.md"]
Expand Down
2 changes: 1 addition & 1 deletion ruby/riverqueue.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Gem::Specification.new do |s|
s.name = "riverqueue"
s.version = "0.12.0"
s.version = "0.13.0"
s.summary = "A fast, reliable job queue for Ruby backed by PostgreSQL or SQLite."
s.description = "Insert and work River jobs in Ruby using the same schema and state machine as River's Go client. Use with riverqueue-activerecord or riverqueue-sequel."
s.authors = ["Blake Gentry", "Brandur Leach"]
Expand Down
Loading