Minimialist background jobs backed by ActiveJob and ActiveRecord.
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