Sha256: 06ad658bbff0396d1202d8e62541117547111223bbfe5e31b712002513dc9e7e

Contents?: true

Size: 750 Bytes

Versions: 4

Compression:

Stored size: 750 Bytes

Contents

module Quebert
  module Consumer
    # Handle interactions between a job and a Beanstalk queue.
    class Beanstalk < Base
      attr_reader :beanstalk_job, :queue, :job
      
      def initialize(beanstalk_job, queue)
        @beanstalk_job, @queue = beanstalk_job, queue
        @job = Job.from_json(beanstalk_job.body)
      end
      
      def perform
        begin
          result = job.perform(*job.args)
          beanstalk_job.delete
          result
        rescue Job::Delete
          beanstalk_job.delete
        rescue Job::Release
          beanstalk_job.release
        rescue Job::Bury
          beanstalk_job.bury
        rescue Exception => e
          beanstalk_job.bury
          raise e
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
quebert-0.0.4 lib/quebert/consumer/beanstalk.rb
quebert-0.0.3 lib/quebert/consumer/beanstalk.rb
quebert-0.0.1 lib/quebert/consumer/beanstalk.rb
quebert-0.0.0 lib/quebert/consumer/beanstalk.rb