github sorentwo/oban v2.16.0

latest release: v2.16.1
7 months ago

🐑 Oban Instance Module

New facade modules allow you to call Oban functions on instances with custom names, e.g. not Oban, without passing a t: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"} #=> false

The 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]

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, and log query options in use Oban.Testing

Don't miss a new oban release

NewReleases is sending notifications on new releases.