Gem Version Code Climate Build Status Dependency Status

Sidejobs

Versatile async database based jobs for rails.

Why

I did this gem to:

  • Avoid the need to install another admin interface.
  • Simplify the job api by having close integration to rails.
  • Using sql instead of redis to never lose jobs.

Install

Put this line in your Gemfile:

gem 'sidejobs'

Then bundle:

$ bundle

Configuration

Generate the sidejobs configuration and migration file:

$ bundle exec rails g sidejobs:install

Set the global settings:

Sidejobs.configure do |config|
  config.max_attempts = 3
  config.sleep_delay = 15
  config.batch_size = 20
end

Run the migration to create the sidejobs table:

$ bundle exec rake db:migrate

Assign the sidejobs adapter to the environments:

Rails.application.configure do
  config.active_job.queue_adapter = :sidejobs
end

Usage

Daemon

To control the daemon, use the rake tasks:

$ bundle exec rake sidejobs:start
$ bundle exec rake sidejobs:stop
$ bundle exec rake sidejobs:restart

Queue

You can deliver mails using deliver_later:

UserMailer.invite('[email protected]').deliver_later

Or perform jobs using perform_later:

SendNewsletterJob.perform_later

Management

No admin interface, all is done using Sidejobs::Job model:

Sidejobs::Job.failing.where('attempts > ?', 3).destroy_all

Credits

This gem is maintained and funded by mmontossi.

License

It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.