class Disc

Constants

VERSION

Public Class Methods

[](disque_id) click to toggle source
# File lib/disc.rb, line 54
def self.[](disque_id)
  job_data = disque.call("SHOW", disque_id)
  return nil if job_data.nil?

  job_data = Hash[*job_data]
  job_data['arguments'] = Disc.deserialize(job_data['body'])['arguments']
  job_data['class'] = Disc.deserialize(job_data['body'])['class']

  job_data
end
default_queue() click to toggle source
# File lib/disc.rb, line 26
def self.default_queue
  @default_queue ||= 'default'
end
default_queue=(queue) click to toggle source
# File lib/disc.rb, line 30
def self.default_queue=(queue)
  @default_queue = queue
end
deserialize(data) click to toggle source
# File lib/disc.rb, line 50
def self.deserialize(data)
  JSON.parse(data)
end
disque() click to toggle source
# File lib/disc.rb, line 6
def self.disque
  @disque ||= Disque.new(
    ENV.fetch('DISQUE_NODES', 'localhost:7711'),
    auth: ENV.fetch('DISQUE_AUTH', nil),
    cycle: Integer(ENV.fetch('DISQUE_CYCLE', '1000'))
  )
end
disque=(disque) click to toggle source
# File lib/disc.rb, line 14
def self.disque=(disque)
  @disque = disque
end
disque_timeout() click to toggle source
# File lib/disc.rb, line 18
def self.disque_timeout
  @disque_timeout ||= 100
end
disque_timeout=(timeout) click to toggle source
# File lib/disc.rb, line 22
def self.disque_timeout=(timeout)
  @disque_timeout = timeout
end
enqueue(klass, arguments, at: nil, queue: nil, **options) click to toggle source
# File lib/disc/testing.rb, line 28
def self.enqueue(klass,  arguments, at: nil, queue: nil, **options)
  job_attrs = { arguments: arguments, class: klass, options: options }
  if queues[queue].nil?
    queues[queue] = [job_attrs]
  else
    queues[queue] << job_attrs
  end

  job_attrs
end
enqueue!() click to toggle source
# File lib/disc/testing.rb, line 10
def self.enqueue!
  @testing_mode = 'enqueue'
end
flush() click to toggle source
# File lib/disc.rb, line 38
def self.flush
  Disc.disque.call('DEBUG', 'FLUSHALL')
end
inline!() click to toggle source
# File lib/disc/testing.rb, line 14
def self.inline!
  @testing_mode = 'inline'
end
load_job(serialized_job, disque_id = nil) click to toggle source

Receives:

A string containing data serialized by `Disc.serialize`

Returns:

An array containing:

  * An instance of the given job class
  * An array of arguments to pass to the job's `#perorm` class.
# File lib/disc.rb, line 76
def self.load_job(serialized_job, disque_id = nil)
  begin
    job_data = Disc.deserialize(serialized_job)
  rescue => err
    raise Disc::NonParsableJobError.new(err)
  end

  begin
    job_class = Object.const_get(job_data['class'])
  rescue => err
    raise Disc::UnknownJobClassError.new(err)
  end

  begin
    job_instance = job_class.new
    job_instance.disque_id = disque_id
  rescue => err
    raise Disc::NonJobClassError.new(err)
  end

  return [job_instance, job_data['arguments']]
end
on_error(exception, job) click to toggle source
# File lib/disc.rb, line 42
def self.on_error(exception, job)
  $stderr.puts exception
end
qlen(queue) click to toggle source
# File lib/disc.rb, line 34
def self.qlen(queue)
  disque.call('QLEN', queue)
end
queues() click to toggle source
# File lib/disc/testing.rb, line 2
def self.queues
  @queues ||= {}
end
serialize(args) click to toggle source
# File lib/disc.rb, line 46
def self.serialize(args)
  JSON.dump(args)
end
testing_mode() click to toggle source
# File lib/disc/testing.rb, line 6
def self.testing_mode
  @testing_mode ||= 'enqueue'
end