Class: ActiveJob::QueueAdapters::PostburnerAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/postburner/active_job/adapter.rb

Overview

Note:

Do NOT set ‘config.active_job.queue_name_prefix` - Postburner handles prefixing automatically via #expand_tube_name.

Postburner adapter for ActiveJob.

Provides dual-mode job execution:

  • **Default mode**: Fast execution via Beanstalkd only

  • **Tracked mode** (opt-in): Full PostgreSQL audit trail

## Queue Name Prefixing

Postburner automatically prefixes all queue names with ‘postburner.env.` to create Beanstalkd tube names. This means:

  • ‘queue_as :default` → tube `postburner.production.default`

  • ‘queue_as :mailers` → tube `postburner.production.mailers`

The same base queue names are used across:

  • ActiveJob: ‘queue_as :default`

  • Postburner::Job: ‘queue ’default’‘

  • config/postburner.yml: ‘queues: [default]`

All refer to the same Beanstalkd tube after prefixing.

## Usage

Examples:

Configure in Rails

# config/application.rb
config.active_job.queue_adapter = :postburner

Default job (fast)

class SendEmail < ApplicationJob
  queue_as :mailers  # → postburner.production.mailers

  def perform(user_id)
    # No PostgreSQL overhead, executes quickly
  end
end

Tracked job (opt-in for audit trail)

class ProcessPayment < ApplicationJob
  include Postburner::Tracked
  queue_as :critical  # → postburner.production.critical

  def perform(payment_id)
    log "Processing payment..."
    # Full audit trail: logs, timing, errors
  end
end

Instance Method Summary collapse

Instance Method Details

#enqueue(job) ⇒ void

This method returns an undefined value.

Enqueues a job for immediate execution.

Parameters:

  • job (ActiveJob::Base)

    The job to enqueue



62
63
64
# File 'lib/postburner/active_job/adapter.rb', line 62

def enqueue(job)
  enqueue_at(job, nil)
end

#enqueue_after_transaction_commit?Boolean

Indicates whether the adapter supports enqueuing after transaction commit.

Returns true because Postburner uses Beanstalkd (external queue), which means jobs are safely enqueued outside the database transaction. This allows Rails to automatically defer job enqueuing until after the current database transaction commits.

Returns:

  • (Boolean)

    Always returns true



90
91
92
# File 'lib/postburner/active_job/adapter.rb', line 90

def enqueue_after_transaction_commit?
  true
end

#enqueue_at(job, timestamp) ⇒ void

This method returns an undefined value.

Enqueues a job for execution at a specific time.

Parameters:

  • job (ActiveJob::Base)

    The job to enqueue

  • timestamp (Time, nil)

    When to execute the job (nil = immediate)



73
74
75
76
77
78
79
# File 'lib/postburner/active_job/adapter.rb', line 73

def enqueue_at(job, timestamp)
  if tracked?(job)
    enqueue_tracked(job, timestamp)
  else
    enqueue_default(job, timestamp)
  end
end