Sidekiq agnostic enqueuing using Redis
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Sidekiq agnostic enqueuing using Redis.

Sidekiq is a fantastic message processing library which has a simple and stable message format. Rubykiq aims to be a portable library to push jobs in to Sidekiq with as little overhead as possible whilst having feature parity on Sidekiq::Client's conventions.


gem 'rubykiq', '~> 1.0'
require 'rubykiq'

Features / Usage Examples

  • Redis has support for alternative drivers, Rubykiq is tested with these in mind. (eg :synchrony)
  • the :class parameter can be a Class or a String of a Class (eg push jobs to Sidekiq from anywhere, not just where you have Sidekiq classes loaded)
  • The :at parameter supports Time, Date and any Time.parse-able strings.
  • Pushing multiple and singular jobs have the same interface (simply nest args)
  • Slightly less gem dependecies, and by that I mean Sidekiq::Client without Celluloid (which is already very light!)
  • Easier configuration (IMO)
# will also detect REDIS_URL, REDIS_PROVIDER and REDISTOGO_URL ENV variables
Rubykiq.url = 'redis://'

# alternative driver support ( :ruby, :hiredis, :synchrony )
Rubykiq.driver = :synchrony

# defaults to nil
Rubykiq.namespace = 'background'

# uses 'default' queue unless specified
Rubykiq.push(class: 'Worker', args: ['foo', 1, bat: 'bar'])

# args are optionally set to empty
Rubykiq.push(class: 'Scheduler', queue: 'scheduler')

# will batch up multiple jobs
Rubykiq.push(class: 'Worker', args: [['foo'], ['bar']]) 

# at param can be a 'Time', 'Date' or any 'Time.parse'-able strings
Rubykiq.push(class: 'DelayedHourMailer', at: + 3600)
Rubykiq.push(class: 'DelayedDayMailer', at:
Rubykiq.push(class: 'DelayedMailer', at: '2013-01-01T09:00:00Z')

# alias based sugar
job = { class: 'Worker' }
Rubykiq << job

# create multiple Rubykiq clients with their own drivers
ruby_client =
hiredis_client = :hiredis)

# create multiple Rubykiq clients with their own namespaces
foo_client = 'foo')
bar_client = 'bar')


  • It's advised that using Sidekiq::Client's push method when already a dependency is better in most everyday cases
  • If you rely on any Sidekiq Middleware, Rubykiq is not aware of them so defaults will not be applied to the job hash.

Build & Dependency Status

Gem Version Build Status Code Quality Code Coverage Gittip

Supported Redis Drivers

Supported Ruby Versions

This library aims to support and is tested against the following Ruby implementations:

  • Ruby 2.1.0 (drivers: ruby, hiredis, synchrony)
  • Ruby 2.0.0 (drivers: ruby, hiredis, synchrony)
  • Ruby 1.9.3 (drivers: ruby, hiredis, synchrony)
  • JRuby (drivers: ruby)
  • Rubinius (drivers: ruby)