class Shoryuken::Batch::Middleware::ServerMiddleware

Public Instance Methods

call(_worker, _queue, sqs_msg, _body) { || ... } click to toggle source
# File lib/shoryuken/batch/middleware.rb, line 19
def call(_worker, _queue, sqs_msg, _body)
  msg = JSON.parse(sqs_msg.body)

  if (bid = msg.delete('bid'))
    begin
      Thread.current[:bid] = Shoryuken::Batch.new(bid)
      yield
      Thread.current[:bid] = nil
      Batch.process_successful_job(bid, msg['job_id'])
    rescue
      Batch.process_failed_job(bid, msg['job_id'])
      raise
    ensure
      Thread.current[:bid] = nil
    end
  else
    yield
  end
end