Sha256: 4050d273d21e998f1f2a97ea2c8ca15133d6f46f4c439f33b58a423bed9fbfa8
Contents?: true
Size: 1.23 KB
Versions: 2
Compression:
Stored size: 1.23 KB
Contents
require 'logger' module Quebert class Worker attr_accessor :exception_handler, :logger, :backend def initialize yield self if block_given? end # Start the worker backend and intercept exceptions if a handler is provided def start logger.info "Worker pid##{Process.pid} started with #{backend.class.name} backend" while consumer = backend.reserve do begin log consumer.job, "performing with args #{consumer.job.args.inspect}" consumer.perform log consumer.job, "complete" rescue Exception => e log consumer.job, "fault #{e}", :error exception_handler ? exception_handler.call(e) : raise(e) end end end protected # Setup a bunch of stuff with Quebert config defaults the we can override later. def logger @logger ||= Quebert.logger end def backend @backend ||= Quebert.config.backend end def exception_handler @exception_handler ||= Quebert.config.worker.exception_handler end # Making logging jobs a tiny bit easier.. def log(job, message, level=:info) logger.send(level, "#{job.class.name}##{job.object_id}: #{message}") end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
quebert-0.0.4 | lib/quebert/worker.rb |
quebert-0.0.3 | lib/quebert/worker.rb |