module Jobber

Public Instance Methods

config() click to toggle source
# File lib/rails_com/utils/jobber.rb, line 66
def config
  @config ||= Rails.application.config_for('jobber')
end
deliver(job, *arguments) click to toggle source
# File lib/rails_com/utils/jobber.rb, line 4
def deliver(job, *arguments)
  msg = job_data(job, arguments)

  r = redis_pool.with do |conn|
    conn.pipelined do
      conn.lpush(queue_key, JSON.dump(msg))
      conn.lrange(queue_key, 0, 0)
    end
  end
  JSON.load(r[1].first)
end
job_data(job, args, at: nil) click to toggle source
# File lib/rails_com/utils/jobber.rb, line 16
def job_data(job, args, at: nil)
  {
    class: 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper',
    wrapped: job,
    queue: config['queue'],
    args: [ {
      job_class: job,
      job_id: SecureRandom.uuid,
      queue_name: config['queue'],
      priority: nil,
      arguments: args,
      locale: 'en'
    } ],
    retry: true,
    jid: SecureRandom.hex(12),
    created_at: Time.now.to_f,
    enqueued_at: Time.now.to_f
  }
end
ljobs(size = 1) click to toggle source
# File lib/rails_com/utils/jobber.rb, line 45
def ljobs(size = 1)
  result = redis_pool.with do |conn|
    conn.lrange(queue_key, 0, size - 1)
  end
  result.map do |r|
    JSON.load(r)
  end
end
queue_key() click to toggle source
# File lib/rails_com/utils/jobber.rb, line 54
def queue_key
  @queue_key ||= "queue:#{config['queue']}"
end
redis() click to toggle source
# File lib/rails_com/utils/jobber.rb, line 62
def redis
  Redis.new(url: config['url'])
end
redis_pool() click to toggle source
# File lib/rails_com/utils/jobber.rb, line 58
def redis_pool
  @redis_pool ||= ConnectionPool.new(size: 5, timeout: 5) { Redis.new(url: config['url']) }
end
rjobs(size = 1) click to toggle source
# File lib/rails_com/utils/jobber.rb, line 36
def rjobs(size = 1)
  result = redis_pool.with do |conn|
    conn.lrange(queue_key, -size, -1)
  end
  result.map do |r|
    JSON.load(r)
  end
end