PhoenixKit.Install.ObanConfig (phoenix_kit v1.7.206)

Copy Markdown View Source

Handles Oban configuration for PhoenixKit installation.

This module provides functionality to:

  • Configure Oban for background job processing
  • Set up required queues (default, file_processing)
  • Add Oban.Plugins.Pruner for job cleanup
  • Add Oban to application supervisor tree
  • Ensure configuration exists during updates

Summary

Functions

Adds or verifies Oban configuration.

Adds Oban to the parent application's supervision tree.

Whether the given config content has a config :app, Oban block that lacks a prefix: key.

Checks if Oban configuration exists in config.exs.

Checks if Oban supervisor is configured in application.ex.

Functions

add_oban_configuration(igniter, prefix \\ nil)

Adds or verifies Oban configuration.

This function ensures that Oban is properly configured for PhoenixKit's background job processing, including:

  1. Repo configuration (auto-detected from PhoenixKit config)
  2. Required queues for file processing
  3. Pruner plugin for automatic job cleanup

Parameters

  • igniter - The igniter context

Returns

Updated igniter with Oban configuration and notices.

add_oban_supervisor(igniter)

Adds Oban to the parent application's supervision tree.

This function ensures that Oban starts automatically when the application starts, with correct positioning in the supervisor tree:

  • AFTER PhoenixKit.Supervisor (PhoenixKit services available)
  • BEFORE Endpoint (Oban ready before HTTP requests)

Important

Oban MUST start AFTER PhoenixKit.Supervisor because PhoenixKit.Supervisor depends on Repo, and Oban also depends on Repo. The correct order is:

  1. Repo (database connection)
  2. PhoenixKit.Supervisor (uses Repo for Settings)
  3. Oban (uses Repo for job persistence)

Parameters

  • igniter - The igniter context

Returns

Updated igniter with Oban added to application supervisor.

oban_block_missing_prefix?(content)

@spec oban_block_missing_prefix?(String.t()) :: boolean()

Whether the given config content has a config :app, Oban block that lacks a prefix: key.

Scoped to the Oban block on purpose: a whole-file scan is defeated by the config :phoenix_kit, prefix: "..." entry (which matches a naive prefix: grep) and false-positives on unrelated config. Any prefix: inside the block counts — including computed values like System.get_env(...). Returns false when the content has no Oban block at all (nothing to judge).

oban_config_exists?(igniter)

Checks if Oban configuration exists in config.exs.

Parameters

  • igniter - The igniter context for detecting parent app name

Returns

Boolean indicating if configuration exists.

oban_supervisor_exists?(igniter)

Checks if Oban supervisor is configured in application.ex.

Parameters

  • igniter - The igniter context for detecting parent app name

Returns

Boolean indicating if Oban supervisor exists in application.ex.