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
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/rails-uploader-0.0.1/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/rails-uploader-0.0.1/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb
rails-uploader-0.0.4 vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.3.8 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
challah-0.6.1 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.3.7 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.3.6 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.3.5 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.3.4 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.3.3 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.3.2 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.3.1 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.3.0 vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb
sunrise-cms-0.3.0.rc vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb
sunrise-cms-0.3.0.rc vendor/bundle/ruby/1.9.1/gems/rails-uploader-0.0.1/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb
rails-uploader-0.0.1 vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb
resque-pool-0.3.0 vendor/bundle/ruby/1.8/gems/rack-1.4.1/lib/rack/lock.rb
classiccms-0.2.4.pre vendor/bundle/gems/rack-1.4.1/lib/rack/lock.rb