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