Skip to content

Latest commit

 

History

History
72 lines (53 loc) · 1.49 KB

README.md

File metadata and controls

72 lines (53 loc) · 1.49 KB

Fleiss

Test License

Minimialist background jobs backed by ActiveJob and ActiveRecord.

Usage

Define your active jobs, as usual:

class SimpleJob < ActiveJob::Base
  queue_as :default

  def perform(*args)
    # Perform Job
  end
end

Allow jobs to expire job by specifying an optional TTL:

class ExpringJob < ActiveJob::Base
  queue_as :default
  retry_on SomeError, attempts: 1_000_000

  def perform(*args)
    # Perform Job
  end

  # This will cause the job to retry up-to 1M times
  # until the 72h TTL is reached.
  def ttl
    72.hours
  end
end

Allow to subscribe on worker perform method and detect errors

ActiveSupport::Notifications.subscribe('worker_perform.fleiss') do |event|
  break unless event.payload.key?(:exception_object)

  Raven.capture_exception(event.payload[:exception_object])
end

Include the data migration:

# db/migrate/20182412102030_create_fleiss_jobs.rb
require 'fleiss/backend/active_record/migration'

class CreateFleissJobs < ActiveRecord::Migration[5.2]
  def up
    Fleiss::Backend::ActiveRecord::Migration.migrate(:up)
  end

  def down
    Fleiss::Backend::ActiveRecord::Migration.migrate(:down)
  end
end

Run the worker:

bundle exec fleiss -I . -r config/environment