We want to enqueue jobs, but do not want to blow up the app with sidekiq and it’s dependencies.
Usage
RawSidekiq.enqueue("XyzJob", [1,2,3], :namespace => "custom")
Code
# https://grosser.it/2013/01/17/enqueue-into-sidekiq-via-pure-redis-without-loading-sidekiq require "json" require "redis" require "securerandom" class RawSidekiq def self.enqueue(queue, klass, args, options={}) payload = { 'class' => klass, 'args' => args, 'jid' => SecureRandom.hex(12), #'retry' => true }.to_json conn = Redis.new conn.multi do conn.sadd([options[:namespace], "queues"].compact.join(":"), queue) conn.lpush([options[:namespace], "queue", queue].compact.join(":"), payload) end end end
Don’t forget adding ‘retry’ => true so you get automatic error retry.
Left that out on purpose 😀