View Source Changelog for Oban v2.15
🌟 Looking for changes to Web or Pro? Check the Oban.Pro Changelog or the Oban.Web Changelog. 🌟
🐑 Oban Instance Module
New facade modules allow you to call Oban functions on instances with custom names, e.g. not
Oban, without passing a Oban.name/0 as the first argument.
For example, rather than calling Oban.config/1 you'd call MyOban.config/0:
MyOban.config()It also makes piping into Oban functions far more convenient:
%{some: :args}
|> MyWorker.new()
|> MyOban.insert()🧩 Partial Matches in Testing Assertions
It's now possible to match a subset of fields on args or meta with all_enqueued,
assert_enqueued, and refute_enqueued. For example, the following assertion will now pass:
# Given a job with these args: %{id: 123, mode: "active"}
assert_enqueued args: %{id: 123} #=> true
assert_enqueued args: %{mode: "active"} #=> true
assert_enqueued args: %{id: 321, mode: "active"} #=> falseThe change applies to args and meta queries for all_enqueued/2, assert_enqueued/2 and
refute_enqueued/2 helpers.
⏲️ Unique Timestamp Option
Jobs are frequently scheduled for a time far in the future and it's often desirable for to
consider scheduled jobs for uniqueness, but unique jobs only checked the :inserted_at
timestamp.
Now unique has a timestamp option that allows checking the :scheduled_at timestamp instead:
use Oban.Worker, unique: [period: 120, timestamp: :scheduled_at]v2.16.0 — 2023-09-22
Bug Fixes
[Reindexer] Correct relname match for reindexer plugin
We can safely assume all indexes start with
oban_jobs. The previous pattern was based on an outdated index format from older migrations.[Testing] Support
repo,prefix, andlogquery options inuse Oban.Testing
For changes prior to v2.16 see the v2.15 docs.