Sha256: 6b71f360f89b5a5b0f47ac25f4d44ab4b7cf8954be89c32428e5d57574dcf409

Contents?: true

Size: 1.51 KB

Versions: 205

Compression:

Stored size: 1.51 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(env["CONTENT_LENGTH"])
        name = name.force_encoding("UTF-8") if name.respond_to? :force_encoding
        name = name[/name=([^&]*)/, 1] || "World"
        [200, {}, ["Good to meet you, #{name}!"]]
      when ['GET', '/compute']
        if env['SERVER_PORT'] == 80 && env["SCRIPT_NAME"] == ""
          [200, {}, [""]]
        else
          [401, {}, [""]]
        end
      when ['GET', '/error']
        env['rack.errors'].puts('Error!')
        [500, {}, ['']]
      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

205 entries across 194 versions & 15 rubygems

Version Path
docspring-3.0.0 vendor/bundle/ruby/3.3.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.16 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.15 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.14 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.13 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.12 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.11 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.10 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.9 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.8 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.7 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.6 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.5 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.4 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.3 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.2 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
fluent-plugin-google-cloud-logging-on-prem-0.1.0 vendor/ruby/3.1.0/gems/webmock-3.18.1/spec/support/my_rack_app.rb
cloudsmith-api-2.0.1 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-2.0.0 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb
cloudsmith-api-1.142.3 vendor/bundle/ruby/2.6.0/gems/webmock-1.24.6/spec/support/my_rack_app.rb