Sha256: d74a5f5fcc32671909de360b7201aead69cdaf963265b6a56438aba35d61e4fc

Contents?: true

Size: 1.13 KB

Versions: 6

Compression:

Stored size: 1.13 KB

Contents

require 'rack'

class MyRackApp
  class NonArrayResponse
    # The rack response body need not implement #join, 
    # but it must implement #each.  It need not be an Array.
    # ActionDispatch::Response, for example, exercises that fact.
    # See: http://rack.rubyforge.org/doc/SPEC.html

    def each(*args, &blk)
      ["This is not in an array!"].each(*args, &blk)
    end
  end

  def self.call(env)
    case env.values_at('REQUEST_METHOD', 'PATH_INFO')
      when ['GET', '/']
        [200, {}, ["This is my root!"]]
      when ['GET', '/greet']
        name = env['QUERY_STRING'][/name=([^&]*)/, 1] || "World"
        [200, {}, ["Hello, #{name}"]]
      when ['GET', '/non_array_response']
        [200, {}, NonArrayResponse.new]
      when ['GET', '/locked']
        [200, {}, ["Single threaded response."]]
      when ['POST', '/greet']
        name = env["rack.input"].read[/name=([^&]*)/, 1] || "World"
        [200, {}, ["Good to meet you, #{name}!"]]
      else
        [404, {}, ['']]
    end
  end
end

class MyLockedRackApp
  MUTEX = Mutex.new

  def self.call(env)
    lock = Rack::Lock.new(MyRackApp, MUTEX)
    lock.call(env)
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
webmock-1.8.5 spec/support/my_rack_app.rb
webmock-1.8.4 spec/support/my_rack_app.rb
webmock-1.8.3 spec/support/my_rack_app.rb
webmock-1.8.2 spec/support/my_rack_app.rb
webmock-1.8.1 spec/support/my_rack_app.rb
webmock-1.8.0 spec/support/my_rack_app.rb