Sha256: 5a2955b23131730ae196e39b05aa131c7a19864796164655411b74f682f6ab2f

Contents?: true

Size: 1.3 KB

Versions: 11

Compression:

Stored size: 1.3 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}!"]]
      when ['GET', '/compute']
        if env['SERVER_PORT'] == 80 && env["SCRIPT_NAME"] == ""
          [200, {}, [""]]
        else
          [401, {}, [""]]
        end
      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

11 entries across 11 versions & 3 rubygems

Version Path
solidus_backend-1.0.0.pre3 vendor/bundle/gems/webmock-1.8.11/spec/support/my_rack_app.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/webmock-1.8.11/spec/support/my_rack_app.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/webmock-1.8.11/spec/support/my_rack_app.rb
simple-client-0.0.3 vendor/bundle/ruby/1.9.1/gems/webmock-1.8.8/spec/support/my_rack_app.rb
webmock-1.9.0 spec/support/my_rack_app.rb
webmock-1.8.11 spec/support/my_rack_app.rb
webmock-1.8.10 spec/support/my_rack_app.rb
webmock-1.8.9 spec/support/my_rack_app.rb
simple-client-0.0.2 vendor/bundle/ruby/1.8/gems/webmock-1.8.8/spec/support/my_rack_app.rb
webmock-1.8.8 spec/support/my_rack_app.rb
webmock-1.8.7 spec/support/my_rack_app.rb