Sha256: 7da1a8ceacfed5dcfb5863203dbbf2ca565d3fa6a0094818f2335f66e4fe28ba

Contents?: true

Size: 483 Bytes

Versions: 135

Compression:

Stored size: 483 Bytes

Contents

require 'thread'
require 'rack/body_proxy'

module Rack
  class Lock
    FLAG = 'rack.multithread'.freeze

    def initialize(app, mutex = Mutex.new)
      @app, @mutex = app, mutex
    end

    def call(env)
      old, env[FLAG] = env[FLAG], false
      @mutex.lock
      response = @app.call(env)
      response[2] = BodyProxy.new(response[2]) { @mutex.unlock }
      response
    rescue Exception
      @mutex.unlock
      raise
    ensure
      env[FLAG] = old
    end
  end
end

Version data entries

135 entries across 114 versions & 14 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.7.4 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.7.3 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
candlepin-api-0.4.0 bundle/ruby/1.8/gems/rack-1.3.5/lib/rack/lock.rb
candlepin-api-0.4.0 bundle/ruby/gems/rack-1.3.5/lib/rack/lock.rb
candlepin-api-0.4.0 bundle/ruby/1.9.1/gems/rack-1.3.5/lib/rack/lock.rb
classiccms-0.7.2 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.7.1 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.7.0 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
rack-1.3.10 lib/rack/lock.rb
rack-1.3.9 lib/rack/lock.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb
rack-1.3.8 lib/rack/lock.rb
rack-1.3.7 lib/rack/lock.rb
challah-0.9.0 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.6.9 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.3/vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.2/vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.3/vendor/bundle/gems/jquery_regex-0.0.2/vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
jquery_regex-0.0.3 vendor/bundle/gems/jquery_regex-0.0.1/vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb