Sha256: cce6989d71ac2b6e4a598d655079c678243ce8fc7c7d97e2554155cae2063c12

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

module Quebert
  module Controller
    # 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

        begin
          @job = Job.from_json(beanstalk_job.body)
        rescue Job::Delete
          beanstalk_job.delete
        rescue Job::Release
          beanstalk_job.release nil, @job.delay
        rescue Job::Bury
          beanstalk_job.bury
        rescue Exception => e
          beanstalk_job.bury
          raise e  
        end
      end
      
      def perform
        begin
          result = job.perform!
          beanstalk_job.delete
          result
        rescue Job::Delete
          beanstalk_job.delete
        rescue Job::Release
          beanstalk_job.release nil, @job.delay
        rescue Job::Bury
          beanstalk_job.bury
        rescue Exception => e
          beanstalk_job.bury
          raise e
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
quebert-0.0.8 lib/quebert/controller/beanstalk.rb