Module: Axn::Async::BatchEnqueue

Extended by:
ActiveSupport::Concern
Defined in:
lib/axn/async/batch_enqueue.rb,
lib/axn/async/batch_enqueue/config.rb

Overview

BatchEnqueue provides declarative batch enqueueing for Axn actions.

Fields with ‘model:` declarations are automatically inferred for iteration. Use `enqueues_each` to override defaults, add filtering, or iterate non-model fields. All Axn classes have `enqueue_all` defined, which validates configuration and executes iteration asynchronously via EnqueueAllOrchestrator.

Examples:

Auto-inference from model: (no enqueues_each needed)

class SyncCompany
  include Axn
  async :sidekiq

  expects :company, model: Company  # Auto-inferred: Company.all

  def call
    # sync logic
  end
end

SyncCompany.enqueue_all  # Automatically iterates Company.all

With explicit source override

enqueues_each :company, from: -> { Company.active }

With extraction (passes company_id instead of company object)

enqueues_each :company_id, from: -> { Company.active }, via: :id

With filter block

enqueues_each :company do |company|
  company.active? && !company.in_exit?
end

Override on enqueue_all call

# Override with enumerable (replaces source)
SyncCompany.enqueue_all(company: Company.active.limit(10))

# Override with scalar (makes it static, no iteration)
SyncCompany.enqueue_all(company: Company.find(123))

Multi-field cross-product

enqueues_each :user, from: -> { User.active }
enqueues_each :company, from: -> { Company.active }
# Produces user_count × company_count jobs

Defined Under Namespace

Modules: DSL Classes: Config