Sha256: f0ec6f75f592d1b18baa1c0bcd385248f69178a4cbdcff7071e769688c5e8bc5

Contents?: true

Size: 833 Bytes

Versions: 2

Compression:

Stored size: 833 Bytes

Contents

require 'rack'
require 'sidekiq/hierarchy/http'

module Sidekiq
  module Hierarchy
    module Rack
      class Middleware
        # transform from http header to rack names
        JID_HEADER_KEY = "HTTP_#{Sidekiq::Hierarchy::Http::JID_HEADER.upcase.gsub('-','_')}".freeze
        WORKFLOW_HEADER_KEY = "HTTP_#{Sidekiq::Hierarchy::Http::WORKFLOW_HEADER.upcase.gsub('-','_')}".freeze

        def initialize(app)
          @app = app
        end

        def call(env)
          Sidekiq::Hierarchy.current_jid = env[JID_HEADER_KEY]
          Sidekiq::Hierarchy.current_workflow = Workflow.find_by_jid(env[WORKFLOW_HEADER_KEY]) if env[WORKFLOW_HEADER_KEY]
          @app.call(env)
        ensure
          Sidekiq::Hierarchy.current_workflow = nil
          Sidekiq::Hierarchy.current_jid = nil
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sidekiq-hierarchy-0.1.2 lib/sidekiq/hierarchy/rack/middleware.rb
sidekiq-hierarchy-0.1.1 lib/sidekiq/hierarchy/rack/middleware.rb