Sha256: a61cc4f80495b84b5688ba89503514461a90c669d7eb2457ee7eab5c61874de0
Contents?: true
Size: 1.11 KB
Versions: 4
Compression:
Stored size: 1.11 KB
Contents
require 'json' module Quebert class Job attr_reader :args NotImplemented = Class.new(StandardError) Action = Class.new(Exception) Bury = Class.new(Action) Delete = Class.new(Action) Release = Class.new(Action) def initialize(args=[]) @args = args.dup.freeze end def perform(*args) raise NotImplemented end def self.enqueue(*args) backend.put(self, *args) end def to_json self.class.to_json(self) end def self.to_json(job, *args) args, job = job.args, job.class if job.respond_to?(:args) JSON.generate('job' => job.name, 'args' => args) end def self.from_json(json) if data = JSON.parse(json) Support.constantize(data['job']).new(data['args']) end end def self.backend=(backend) @backend = backend end def self.backend @backend || Quebert.configuration.backend end protected def delete! raise Delete end def release! raise Release end def bury! raise Bury end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
quebert-0.0.4 | lib/quebert/job.rb |
quebert-0.0.3 | lib/quebert/job.rb |
quebert-0.0.1 | lib/quebert/job.rb |
quebert-0.0.0 | lib/quebert/job.rb |