rack 1.6.12 → 2.0.7

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rack might be problematic. Click here for more details.

Files changed (141) hide show
  1. checksums.yaml +5 -5
  2. data/COPYING +1 -1
  3. data/HISTORY.md +138 -8
  4. data/README.rdoc +18 -28
  5. data/Rakefile +6 -14
  6. data/SPEC +10 -11
  7. data/contrib/rack_logo.svg +164 -111
  8. data/example/protectedlobster.rb +1 -1
  9. data/example/protectedlobster.ru +1 -1
  10. data/lib/rack.rb +70 -21
  11. data/lib/rack/auth/abstract/request.rb +5 -1
  12. data/lib/rack/auth/digest/params.rb +2 -3
  13. data/lib/rack/auth/digest/request.rb +1 -1
  14. data/lib/rack/body_proxy.rb +14 -9
  15. data/lib/rack/builder.rb +3 -3
  16. data/lib/rack/chunked.rb +5 -5
  17. data/lib/rack/{commonlogger.rb → common_logger.rb} +3 -3
  18. data/lib/rack/{conditionalget.rb → conditional_get.rb} +0 -0
  19. data/lib/rack/content_length.rb +2 -2
  20. data/lib/rack/deflater.rb +4 -39
  21. data/lib/rack/directory.rb +66 -54
  22. data/lib/rack/etag.rb +5 -4
  23. data/lib/rack/events.rb +154 -0
  24. data/lib/rack/file.rb +64 -40
  25. data/lib/rack/handler.rb +3 -25
  26. data/lib/rack/handler/cgi.rb +15 -16
  27. data/lib/rack/handler/fastcgi.rb +13 -14
  28. data/lib/rack/handler/lsws.rb +11 -11
  29. data/lib/rack/handler/scgi.rb +15 -15
  30. data/lib/rack/handler/thin.rb +3 -0
  31. data/lib/rack/handler/webrick.rb +24 -26
  32. data/lib/rack/head.rb +15 -17
  33. data/lib/rack/lint.rb +40 -40
  34. data/lib/rack/lobster.rb +1 -1
  35. data/lib/rack/lock.rb +15 -10
  36. data/lib/rack/logger.rb +2 -2
  37. data/lib/rack/media_type.rb +38 -0
  38. data/lib/rack/{methodoverride.rb → method_override.rb} +6 -6
  39. data/lib/rack/mime.rb +18 -5
  40. data/lib/rack/mock.rb +36 -54
  41. data/lib/rack/multipart.rb +35 -6
  42. data/lib/rack/multipart/generator.rb +5 -5
  43. data/lib/rack/multipart/parser.rb +270 -157
  44. data/lib/rack/multipart/uploaded_file.rb +1 -2
  45. data/lib/rack/{nulllogger.rb → null_logger.rb} +1 -1
  46. data/lib/rack/query_parser.rb +192 -0
  47. data/lib/rack/recursive.rb +8 -8
  48. data/lib/rack/request.rb +394 -305
  49. data/lib/rack/response.rb +130 -57
  50. data/lib/rack/rewindable_input.rb +1 -12
  51. data/lib/rack/runtime.rb +10 -18
  52. data/lib/rack/sendfile.rb +5 -7
  53. data/lib/rack/server.rb +30 -23
  54. data/lib/rack/session/abstract/id.rb +108 -138
  55. data/lib/rack/session/cookie.rb +26 -28
  56. data/lib/rack/session/memcache.rb +8 -14
  57. data/lib/rack/session/pool.rb +14 -21
  58. data/lib/rack/show_exceptions.rb +386 -0
  59. data/lib/rack/{showstatus.rb → show_status.rb} +3 -3
  60. data/lib/rack/static.rb +30 -5
  61. data/lib/rack/tempfile_reaper.rb +2 -2
  62. data/lib/rack/urlmap.rb +15 -14
  63. data/lib/rack/utils.rb +136 -211
  64. data/rack.gemspec +10 -9
  65. data/test/builder/an_underscore_app.rb +5 -0
  66. data/test/builder/options.ru +1 -1
  67. data/test/cgi/test.fcgi +1 -0
  68. data/test/cgi/test.gz +0 -0
  69. data/test/helper.rb +34 -0
  70. data/test/multipart/filename_with_encoded_words +7 -0
  71. data/test/multipart/filename_with_single_quote +7 -0
  72. data/test/multipart/quoted +15 -0
  73. data/test/multipart/rack-logo.png +0 -0
  74. data/test/multipart/unity3d_wwwform +11 -0
  75. data/test/registering_handler/rack/handler/registering_myself.rb +1 -1
  76. data/test/spec_auth_basic.rb +27 -19
  77. data/test/spec_auth_digest.rb +47 -46
  78. data/test/spec_body_proxy.rb +27 -27
  79. data/test/spec_builder.rb +51 -41
  80. data/test/spec_cascade.rb +24 -22
  81. data/test/spec_cgi.rb +49 -67
  82. data/test/spec_chunked.rb +37 -35
  83. data/test/{spec_commonlogger.rb → spec_common_logger.rb} +23 -21
  84. data/test/{spec_conditionalget.rb → spec_conditional_get.rb} +29 -28
  85. data/test/spec_config.rb +3 -2
  86. data/test/spec_content_length.rb +18 -17
  87. data/test/spec_content_type.rb +13 -12
  88. data/test/spec_deflater.rb +85 -49
  89. data/test/spec_directory.rb +87 -27
  90. data/test/spec_etag.rb +32 -31
  91. data/test/spec_events.rb +133 -0
  92. data/test/spec_fastcgi.rb +50 -72
  93. data/test/spec_file.rb +120 -77
  94. data/test/spec_handler.rb +19 -34
  95. data/test/spec_head.rb +15 -14
  96. data/test/spec_lint.rb +164 -199
  97. data/test/spec_lobster.rb +24 -23
  98. data/test/spec_lock.rb +79 -39
  99. data/test/spec_logger.rb +4 -3
  100. data/test/spec_media_type.rb +42 -0
  101. data/test/{spec_methodoverride.rb → spec_method_override.rb} +34 -35
  102. data/test/spec_mime.rb +19 -19
  103. data/test/spec_mock.rb +206 -144
  104. data/test/spec_multipart.rb +322 -200
  105. data/test/{spec_nulllogger.rb → spec_null_logger.rb} +5 -4
  106. data/test/spec_recursive.rb +17 -14
  107. data/test/spec_request.rb +780 -605
  108. data/test/spec_response.rb +215 -112
  109. data/test/spec_rewindable_input.rb +50 -40
  110. data/test/spec_runtime.rb +11 -10
  111. data/test/spec_sendfile.rb +30 -35
  112. data/test/spec_server.rb +78 -52
  113. data/test/spec_session_abstract_id.rb +11 -33
  114. data/test/spec_session_abstract_session_hash.rb +45 -0
  115. data/test/spec_session_cookie.rb +99 -67
  116. data/test/spec_session_memcache.rb +63 -101
  117. data/test/spec_session_pool.rb +48 -84
  118. data/test/{spec_showexceptions.rb → spec_show_exceptions.rb} +23 -28
  119. data/test/{spec_showstatus.rb → spec_show_status.rb} +36 -35
  120. data/test/spec_static.rb +71 -32
  121. data/test/spec_tempfile_reaper.rb +11 -10
  122. data/test/spec_thin.rb +55 -50
  123. data/test/spec_urlmap.rb +79 -78
  124. data/test/spec_utils.rb +441 -346
  125. data/test/spec_version.rb +2 -8
  126. data/test/spec_webrick.rb +93 -71
  127. data/test/static/foo.html +1 -0
  128. data/test/testrequest.rb +1 -1
  129. data/test/unregistered_handler/rack/handler/unregistered.rb +1 -1
  130. data/test/unregistered_handler/rack/handler/unregistered_long_one.rb +1 -1
  131. metadata +92 -70
  132. data/KNOWN-ISSUES +0 -44
  133. data/lib/rack/backports/uri/common_18.rb +0 -56
  134. data/lib/rack/backports/uri/common_192.rb +0 -52
  135. data/lib/rack/backports/uri/common_193.rb +0 -29
  136. data/lib/rack/handler/evented_mongrel.rb +0 -8
  137. data/lib/rack/handler/mongrel.rb +0 -106
  138. data/lib/rack/handler/swiftiplied_mongrel.rb +0 -8
  139. data/lib/rack/showexceptions.rb +0 -387
  140. data/lib/rack/utils/okjson.rb +0 -600
  141. data/test/spec_mongrel.rb +0 -182
@@ -1,17 +1,11 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ require 'minitest/autorun'
2
3
  require 'rack'
3
4
 
4
5
  describe Rack do
5
6
  describe 'version' do
6
7
  it 'defaults to a hard-coded api version' do
7
- Rack.version.should.equal("1.3")
8
- end
9
- end
10
- describe 'release' do
11
- it 'matches version in .gemspec' do
12
- gemspec_path = File.join(File.dirname(File.expand_path(__FILE__)), '../rack.gemspec')
13
- gemspec = Gem::Specification.load(gemspec_path)
14
- Rack.release.split('.').take(2).should.equal gemspec.version.to_s.split('.').take(2)
8
+ Rack.version.must_equal "1.3"
15
9
  end
16
10
  end
17
11
  end
@@ -1,92 +1,108 @@
1
+ require 'minitest/autorun'
1
2
  require 'rack/mock'
3
+ require 'thread'
2
4
  require File.expand_path('../testrequest', __FILE__)
3
5
 
4
6
  Thread.abort_on_exception = true
5
7
 
6
8
  describe Rack::Handler::WEBrick do
7
- extend TestRequest::Helpers
9
+ include TestRequest::Helpers
8
10
 
11
+ before do
9
12
  @server = WEBrick::HTTPServer.new(:Host => @host='127.0.0.1',
10
13
  :Port => @port=9202,
11
14
  :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN),
12
15
  :AccessLog => [])
13
16
  @server.mount "/test", Rack::Handler::WEBrick,
14
17
  Rack::Lint.new(TestRequest.new)
15
- Thread.new { @server.start }
18
+ @thread = Thread.new { @server.start }
16
19
  trap(:INT) { @server.shutdown }
20
+ @status_thread = Thread.new do
21
+ seconds = 10
22
+ wait_time = 0.1
23
+ until is_running? || seconds <= 0
24
+ seconds -= wait_time
25
+ sleep wait_time
26
+ end
27
+ raise "Server never reached status 'Running'" unless is_running?
28
+ end
29
+ end
17
30
 
18
- should "respond" do
19
- lambda {
20
- GET("/test")
21
- }.should.not.raise
31
+ def is_running?
32
+ @server.status == :Running
33
+ end
34
+
35
+ it "respond" do
36
+ GET("/test")
37
+ status.must_equal 200
22
38
  end
23
39
 
24
- should "be a WEBrick" do
40
+ it "be a WEBrick" do
25
41
  GET("/test")
26
- status.should.equal 200
27
- response["SERVER_SOFTWARE"].should =~ /WEBrick/
28
- response["HTTP_VERSION"].should.equal "HTTP/1.1"
29
- response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
30
- response["SERVER_PORT"].should.equal "9202"
31
- response["SERVER_NAME"].should.equal "127.0.0.1"
42
+ status.must_equal 200
43
+ response["SERVER_SOFTWARE"].must_match(/WEBrick/)
44
+ response["HTTP_VERSION"].must_equal "HTTP/1.1"
45
+ response["SERVER_PROTOCOL"].must_equal "HTTP/1.1"
46
+ response["SERVER_PORT"].must_equal "9202"
47
+ response["SERVER_NAME"].must_equal "127.0.0.1"
32
48
  end
33
49
 
34
- should "have rack headers" do
50
+ it "have rack headers" do
35
51
  GET("/test")
36
- response["rack.version"].should.equal [1,3]
37
- response["rack.multithread"].should.be.true
38
- response["rack.multiprocess"].should.be.false
39
- response["rack.run_once"].should.be.false
52
+ response["rack.version"].must_equal [1,3]
53
+ response["rack.multithread"].must_equal true
54
+ assert_equal false, response["rack.multiprocess"]
55
+ assert_equal false, response["rack.run_once"]
40
56
  end
41
57
 
42
- should "have CGI headers on GET" do
58
+ it "have CGI headers on GET" do
43
59
  GET("/test")
44
- response["REQUEST_METHOD"].should.equal "GET"
45
- response["SCRIPT_NAME"].should.equal "/test"
46
- response["REQUEST_PATH"].should.equal "/test"
47
- response["PATH_INFO"].should.be.equal ""
48
- response["QUERY_STRING"].should.equal ""
49
- response["test.postdata"].should.equal ""
60
+ response["REQUEST_METHOD"].must_equal "GET"
61
+ response["SCRIPT_NAME"].must_equal "/test"
62
+ response["REQUEST_PATH"].must_equal "/test"
63
+ response["PATH_INFO"].must_equal ""
64
+ response["QUERY_STRING"].must_equal ""
65
+ response["test.postdata"].must_equal ""
50
66
 
51
67
  GET("/test/foo?quux=1")
52
- response["REQUEST_METHOD"].should.equal "GET"
53
- response["SCRIPT_NAME"].should.equal "/test"
54
- response["REQUEST_PATH"].should.equal "/test/foo"
55
- response["PATH_INFO"].should.equal "/foo"
56
- response["QUERY_STRING"].should.equal "quux=1"
68
+ response["REQUEST_METHOD"].must_equal "GET"
69
+ response["SCRIPT_NAME"].must_equal "/test"
70
+ response["REQUEST_PATH"].must_equal "/test/foo"
71
+ response["PATH_INFO"].must_equal "/foo"
72
+ response["QUERY_STRING"].must_equal "quux=1"
57
73
 
58
74
  GET("/test/foo%25encoding?quux=1")
59
- response["REQUEST_METHOD"].should.equal "GET"
60
- response["SCRIPT_NAME"].should.equal "/test"
61
- response["REQUEST_PATH"].should.equal "/test/foo%25encoding"
62
- response["PATH_INFO"].should.equal "/foo%25encoding"
63
- response["QUERY_STRING"].should.equal "quux=1"
75
+ response["REQUEST_METHOD"].must_equal "GET"
76
+ response["SCRIPT_NAME"].must_equal "/test"
77
+ response["REQUEST_PATH"].must_equal "/test/foo%25encoding"
78
+ response["PATH_INFO"].must_equal "/foo%25encoding"
79
+ response["QUERY_STRING"].must_equal "quux=1"
64
80
  end
65
81
 
66
- should "have CGI headers on POST" do
82
+ it "have CGI headers on POST" do
67
83
  POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
68
- status.should.equal 200
69
- response["REQUEST_METHOD"].should.equal "POST"
70
- response["SCRIPT_NAME"].should.equal "/test"
71
- response["REQUEST_PATH"].should.equal "/test"
72
- response["PATH_INFO"].should.equal ""
73
- response["QUERY_STRING"].should.equal ""
74
- response["HTTP_X_TEST_HEADER"].should.equal "42"
75
- response["test.postdata"].should.equal "rack-form-data=23"
84
+ status.must_equal 200
85
+ response["REQUEST_METHOD"].must_equal "POST"
86
+ response["SCRIPT_NAME"].must_equal "/test"
87
+ response["REQUEST_PATH"].must_equal "/test"
88
+ response["PATH_INFO"].must_equal ""
89
+ response["QUERY_STRING"].must_equal ""
90
+ response["HTTP_X_TEST_HEADER"].must_equal "42"
91
+ response["test.postdata"].must_equal "rack-form-data=23"
76
92
  end
77
93
 
78
- should "support HTTP auth" do
94
+ it "support HTTP auth" do
79
95
  GET("/test", {:user => "ruth", :passwd => "secret"})
80
- response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
96
+ response["HTTP_AUTHORIZATION"].must_equal "Basic cnV0aDpzZWNyZXQ="
81
97
  end
82
98
 
83
- should "set status" do
99
+ it "set status" do
84
100
  GET("/test?secret")
85
- status.should.equal 403
86
- response["rack.url_scheme"].should.equal "http"
101
+ status.must_equal 403
102
+ response["rack.url_scheme"].must_equal "http"
87
103
  end
88
104
 
89
- should "correctly set cookies" do
105
+ it "correctly set cookies" do
90
106
  @server.mount "/cookie-test", Rack::Handler::WEBrick,
91
107
  Rack::Lint.new(lambda { |req|
92
108
  res = Rack::Response.new
@@ -97,14 +113,15 @@ describe Rack::Handler::WEBrick do
97
113
 
98
114
  Net::HTTP.start(@host, @port) { |http|
99
115
  res = http.get("/cookie-test")
100
- res.code.to_i.should.equal 200
101
- res.get_fields("set-cookie").should.equal ["one=1", "two=2"]
116
+ res.code.to_i.must_equal 200
117
+ res.get_fields("set-cookie").must_equal ["one=1", "two=2"]
102
118
  }
103
119
  end
104
120
 
105
- should "provide a .run" do
106
- block_ran = false
107
- catch(:done) {
121
+ it "provide a .run" do
122
+ queue = Queue.new
123
+
124
+ t = Thread.new do
108
125
  Rack::Handler::WEBrick.run(lambda {},
109
126
  {
110
127
  :Host => '127.0.0.1',
@@ -112,16 +129,17 @@ describe Rack::Handler::WEBrick do
112
129
  :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN),
113
130
  :AccessLog => []}) { |server|
114
131
  block_ran = true
115
- server.should.be.kind_of WEBrick::HTTPServer
116
- @s = server
117
- throw :done
132
+ assert_kind_of WEBrick::HTTPServer, server
133
+ queue.push(server)
118
134
  }
119
- }
120
- block_ran.should.be.true
121
- @s.shutdown
135
+ end
136
+
137
+ server = queue.pop
138
+ server.shutdown
139
+ t.join
122
140
  end
123
141
 
124
- should "return repeated headers" do
142
+ it "return repeated headers" do
125
143
  @server.mount "/headers", Rack::Handler::WEBrick,
126
144
  Rack::Lint.new(lambda { |req|
127
145
  [
@@ -134,12 +152,12 @@ describe Rack::Handler::WEBrick do
134
152
 
135
153
  Net::HTTP.start(@host, @port) { |http|
136
154
  res = http.get("/headers")
137
- res.code.to_i.should.equal 401
138
- res["www-authenticate"].should.equal "Bar realm=X, Baz realm=Y"
155
+ res.code.to_i.must_equal 401
156
+ res["www-authenticate"].must_equal "Bar realm=X, Baz realm=Y"
139
157
  }
140
158
  end
141
159
 
142
- should "support Rack partial hijack" do
160
+ it "support Rack partial hijack" do
143
161
  io_lambda = lambda{ |io|
144
162
  5.times do
145
163
  io.write "David\r\n"
@@ -151,18 +169,18 @@ describe Rack::Handler::WEBrick do
151
169
  Rack::Lint.new(lambda{ |req|
152
170
  [
153
171
  200,
154
- {"rack.hijack" => io_lambda},
172
+ [ [ "rack.hijack", io_lambda ] ],
155
173
  [""]
156
174
  ]
157
175
  })
158
176
 
159
177
  Net::HTTP.start(@host, @port){ |http|
160
178
  res = http.get("/partial")
161
- res.body.should.equal "David\r\nDavid\r\nDavid\r\nDavid\r\nDavid\r\n"
179
+ res.body.must_equal "David\r\nDavid\r\nDavid\r\nDavid\r\nDavid\r\n"
162
180
  }
163
181
  end
164
182
 
165
- should "produce correct HTTP semantics with and without app chunking" do
183
+ it "produce correct HTTP semantics with and without app chunking" do
166
184
  @server.mount "/chunked", Rack::Handler::WEBrick,
167
185
  Rack::Lint.new(lambda{ |req|
168
186
  [
@@ -174,11 +192,15 @@ describe Rack::Handler::WEBrick do
174
192
 
175
193
  Net::HTTP.start(@host, @port){ |http|
176
194
  res = http.get("/chunked")
177
- res["Transfer-Encoding"].should.equal "chunked"
178
- res["Content-Length"].should.equal nil
179
- res.body.should.equal "chunked"
195
+ res["Transfer-Encoding"].must_equal "chunked"
196
+ res["Content-Length"].must_be_nil
197
+ res.body.must_equal "chunked"
180
198
  }
181
199
  end
182
200
 
201
+ after do
202
+ @status_thread.join
183
203
  @server.shutdown
204
+ @thread.join
205
+ end
184
206
  end
@@ -0,0 +1 @@
1
+ foo.html!
@@ -12,7 +12,7 @@ class TestRequest
12
12
  # This may in the future want to replace with a dummy value instead.
13
13
  minienv.delete_if { |k,v| NOSERIALIZE.any? { |c| v.kind_of?(c) } }
14
14
  body = minienv.to_yaml
15
- size = body.respond_to?(:bytesize) ? body.bytesize : body.size
15
+ size = body.bytesize
16
16
  [status, {"Content-Type" => "text/yaml", "Content-Length" => size.to_s}, [body]]
17
17
  end
18
18
 
@@ -4,4 +4,4 @@ module Rack
4
4
  class Unregistered
5
5
  end
6
6
  end
7
- end
7
+ end
@@ -4,4 +4,4 @@ module Rack
4
4
  class UnregisteredLongOne
5
5
  end
6
6
  end
7
- end
7
+ end
metadata CHANGED
@@ -1,17 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.12
4
+ version: 2.0.7
5
5
  platform: ruby
6
6
  authors:
7
- - Christian Neukirchen
7
+ - Leah Neukirchen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-18 00:00:00.000000000 Z
11
+ date: 2019-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bacon
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest-sprint
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - ">="
@@ -45,19 +59,17 @@ description: |
45
59
  servers, web frameworks, and software in between (the so-called
46
60
  middleware) into a single method call.
47
61
 
48
- Also see http://rack.github.io/.
49
- email: chneukirchen@gmail.com
62
+ Also see https://rack.github.io/.
63
+ email: leah@vuxu.org
50
64
  executables:
51
65
  - rackup
52
66
  extensions: []
53
67
  extra_rdoc_files:
54
68
  - README.rdoc
55
- - KNOWN-ISSUES
56
69
  - HISTORY.md
57
70
  files:
58
71
  - COPYING
59
72
  - HISTORY.md
60
- - KNOWN-ISSUES
61
73
  - README.rdoc
62
74
  - Rakefile
63
75
  - SPEC
@@ -77,30 +89,25 @@ files:
77
89
  - lib/rack/auth/digest/nonce.rb
78
90
  - lib/rack/auth/digest/params.rb
79
91
  - lib/rack/auth/digest/request.rb
80
- - lib/rack/backports/uri/common_18.rb
81
- - lib/rack/backports/uri/common_192.rb
82
- - lib/rack/backports/uri/common_193.rb
83
92
  - lib/rack/body_proxy.rb
84
93
  - lib/rack/builder.rb
85
94
  - lib/rack/cascade.rb
86
95
  - lib/rack/chunked.rb
87
- - lib/rack/commonlogger.rb
88
- - lib/rack/conditionalget.rb
96
+ - lib/rack/common_logger.rb
97
+ - lib/rack/conditional_get.rb
89
98
  - lib/rack/config.rb
90
99
  - lib/rack/content_length.rb
91
100
  - lib/rack/content_type.rb
92
101
  - lib/rack/deflater.rb
93
102
  - lib/rack/directory.rb
94
103
  - lib/rack/etag.rb
104
+ - lib/rack/events.rb
95
105
  - lib/rack/file.rb
96
106
  - lib/rack/handler.rb
97
107
  - lib/rack/handler/cgi.rb
98
- - lib/rack/handler/evented_mongrel.rb
99
108
  - lib/rack/handler/fastcgi.rb
100
109
  - lib/rack/handler/lsws.rb
101
- - lib/rack/handler/mongrel.rb
102
110
  - lib/rack/handler/scgi.rb
103
- - lib/rack/handler/swiftiplied_mongrel.rb
104
111
  - lib/rack/handler/thin.rb
105
112
  - lib/rack/handler/webrick.rb
106
113
  - lib/rack/head.rb
@@ -108,14 +115,16 @@ files:
108
115
  - lib/rack/lobster.rb
109
116
  - lib/rack/lock.rb
110
117
  - lib/rack/logger.rb
111
- - lib/rack/methodoverride.rb
118
+ - lib/rack/media_type.rb
119
+ - lib/rack/method_override.rb
112
120
  - lib/rack/mime.rb
113
121
  - lib/rack/mock.rb
114
122
  - lib/rack/multipart.rb
115
123
  - lib/rack/multipart/generator.rb
116
124
  - lib/rack/multipart/parser.rb
117
125
  - lib/rack/multipart/uploaded_file.rb
118
- - lib/rack/nulllogger.rb
126
+ - lib/rack/null_logger.rb
127
+ - lib/rack/query_parser.rb
119
128
  - lib/rack/recursive.rb
120
129
  - lib/rack/reloader.rb
121
130
  - lib/rack/request.rb
@@ -128,14 +137,14 @@ files:
128
137
  - lib/rack/session/cookie.rb
129
138
  - lib/rack/session/memcache.rb
130
139
  - lib/rack/session/pool.rb
131
- - lib/rack/showexceptions.rb
132
- - lib/rack/showstatus.rb
140
+ - lib/rack/show_exceptions.rb
141
+ - lib/rack/show_status.rb
133
142
  - lib/rack/static.rb
134
143
  - lib/rack/tempfile_reaper.rb
135
144
  - lib/rack/urlmap.rb
136
145
  - lib/rack/utils.rb
137
- - lib/rack/utils/okjson.rb
138
146
  - rack.gemspec
147
+ - test/builder/an_underscore_app.rb
139
148
  - test/builder/anything.rb
140
149
  - test/builder/comment.ru
141
150
  - test/builder/end.ru
@@ -153,8 +162,10 @@ files:
153
162
  - test/cgi/test
154
163
  - test/cgi/test+directory/test+file
155
164
  - test/cgi/test.fcgi
165
+ - test/cgi/test.gz
156
166
  - test/cgi/test.ru
157
167
  - test/gemloader.rb
168
+ - test/helper.rb
158
169
  - test/multipart/bad_robots
159
170
  - test/multipart/binary
160
171
  - test/multipart/content_type_and_no_filename
@@ -163,10 +174,12 @@ files:
163
174
  - test/multipart/file1.txt
164
175
  - test/multipart/filename_and_modification_param
165
176
  - test/multipart/filename_and_no_name
177
+ - test/multipart/filename_with_encoded_words
166
178
  - test/multipart/filename_with_escaped_quotes
167
179
  - test/multipart/filename_with_escaped_quotes_and_modification_param
168
180
  - test/multipart/filename_with_null_byte
169
181
  - test/multipart/filename_with_percent_escaped_quotes
182
+ - test/multipart/filename_with_single_quote
170
183
  - test/multipart/filename_with_unescaped_percentages
171
184
  - test/multipart/filename_with_unescaped_percentages2
172
185
  - test/multipart/filename_with_unescaped_percentages3
@@ -176,9 +189,12 @@ files:
176
189
  - test/multipart/mixed_files
177
190
  - test/multipart/nested
178
191
  - test/multipart/none
192
+ - test/multipart/quoted
193
+ - test/multipart/rack-logo.png
179
194
  - test/multipart/semicolon
180
195
  - test/multipart/text
181
196
  - test/multipart/three_files_three_fields
197
+ - test/multipart/unity3d_wwwform
182
198
  - test/multipart/webkit
183
199
  - test/rackup/config.ru
184
200
  - test/registering_handler/rack/handler/registering_myself.rb
@@ -189,14 +205,15 @@ files:
189
205
  - test/spec_cascade.rb
190
206
  - test/spec_cgi.rb
191
207
  - test/spec_chunked.rb
192
- - test/spec_commonlogger.rb
193
- - test/spec_conditionalget.rb
208
+ - test/spec_common_logger.rb
209
+ - test/spec_conditional_get.rb
194
210
  - test/spec_config.rb
195
211
  - test/spec_content_length.rb
196
212
  - test/spec_content_type.rb
197
213
  - test/spec_deflater.rb
198
214
  - test/spec_directory.rb
199
215
  - test/spec_etag.rb
216
+ - test/spec_events.rb
200
217
  - test/spec_fastcgi.rb
201
218
  - test/spec_file.rb
202
219
  - test/spec_handler.rb
@@ -205,12 +222,12 @@ files:
205
222
  - test/spec_lobster.rb
206
223
  - test/spec_lock.rb
207
224
  - test/spec_logger.rb
208
- - test/spec_methodoverride.rb
225
+ - test/spec_media_type.rb
226
+ - test/spec_method_override.rb
209
227
  - test/spec_mime.rb
210
228
  - test/spec_mock.rb
211
- - test/spec_mongrel.rb
212
229
  - test/spec_multipart.rb
213
- - test/spec_nulllogger.rb
230
+ - test/spec_null_logger.rb
214
231
  - test/spec_recursive.rb
215
232
  - test/spec_request.rb
216
233
  - test/spec_response.rb
@@ -219,11 +236,12 @@ files:
219
236
  - test/spec_sendfile.rb
220
237
  - test/spec_server.rb
221
238
  - test/spec_session_abstract_id.rb
239
+ - test/spec_session_abstract_session_hash.rb
222
240
  - test/spec_session_cookie.rb
223
241
  - test/spec_session_memcache.rb
224
242
  - test/spec_session_pool.rb
225
- - test/spec_showexceptions.rb
226
- - test/spec_showstatus.rb
243
+ - test/spec_show_exceptions.rb
244
+ - test/spec_show_status.rb
227
245
  - test/spec_static.rb
228
246
  - test/spec_tempfile_reaper.rb
229
247
  - test/spec_thin.rb
@@ -232,11 +250,12 @@ files:
232
250
  - test/spec_version.rb
233
251
  - test/spec_webrick.rb
234
252
  - test/static/another/index.html
253
+ - test/static/foo.html
235
254
  - test/static/index.html
236
255
  - test/testrequest.rb
237
256
  - test/unregistered_handler/rack/handler/unregistered.rb
238
257
  - test/unregistered_handler/rack/handler/unregistered_long_one.rb
239
- homepage: http://rack.github.io/
258
+ homepage: https://rack.github.io/
240
259
  licenses:
241
260
  - MIT
242
261
  metadata: {}
@@ -248,64 +267,67 @@ required_ruby_version: !ruby/object:Gem::Requirement
248
267
  requirements:
249
268
  - - ">="
250
269
  - !ruby/object:Gem::Version
251
- version: '0'
270
+ version: 2.2.2
252
271
  required_rubygems_version: !ruby/object:Gem::Requirement
253
272
  requirements:
254
273
  - - ">="
255
274
  - !ruby/object:Gem::Version
256
275
  version: '0'
257
276
  requirements: []
258
- rubygems_version: 3.0.3
277
+ rubyforge_project:
278
+ rubygems_version: 2.6.13
259
279
  signing_key:
260
280
  specification_version: 4
261
281
  summary: a modular Ruby webserver interface
262
282
  test_files:
263
- - test/spec_multipart.rb
283
+ - test/spec_auth_basic.rb
284
+ - test/spec_auth_digest.rb
285
+ - test/spec_body_proxy.rb
286
+ - test/spec_builder.rb
287
+ - test/spec_cascade.rb
288
+ - test/spec_cgi.rb
289
+ - test/spec_chunked.rb
290
+ - test/spec_common_logger.rb
291
+ - test/spec_conditional_get.rb
292
+ - test/spec_config.rb
293
+ - test/spec_content_length.rb
294
+ - test/spec_content_type.rb
264
295
  - test/spec_deflater.rb
265
- - test/spec_static.rb
266
- - test/spec_session_cookie.rb
267
- - test/spec_commonlogger.rb
268
- - test/spec_session_pool.rb
269
- - test/spec_methodoverride.rb
296
+ - test/spec_directory.rb
270
297
  - test/spec_etag.rb
271
- - test/spec_version.rb
298
+ - test/spec_events.rb
299
+ - test/spec_fastcgi.rb
300
+ - test/spec_file.rb
272
301
  - test/spec_handler.rb
273
- - test/spec_thin.rb
274
- - test/spec_showexceptions.rb
275
- - test/spec_session_abstract_id.rb
302
+ - test/spec_head.rb
303
+ - test/spec_lint.rb
304
+ - test/spec_lobster.rb
305
+ - test/spec_lock.rb
306
+ - test/spec_logger.rb
307
+ - test/spec_media_type.rb
308
+ - test/spec_method_override.rb
276
309
  - test/spec_mime.rb
310
+ - test/spec_mock.rb
311
+ - test/spec_multipart.rb
312
+ - test/spec_null_logger.rb
277
313
  - test/spec_recursive.rb
278
- - test/spec_cgi.rb
279
- - test/spec_content_type.rb
280
314
  - test/spec_request.rb
281
- - test/spec_showstatus.rb
282
- - test/spec_chunked.rb
315
+ - test/spec_response.rb
316
+ - test/spec_rewindable_input.rb
283
317
  - test/spec_runtime.rb
284
- - test/spec_fastcgi.rb
285
- - test/spec_builder.rb
286
- - test/spec_config.rb
287
- - test/spec_mongrel.rb
288
- - test/spec_utils.rb
289
318
  - test/spec_sendfile.rb
290
- - test/spec_lobster.rb
291
- - test/spec_lint.rb
292
- - test/spec_tempfile_reaper.rb
293
- - test/spec_mock.rb
294
- - test/spec_conditionalget.rb
295
319
  - test/spec_server.rb
296
- - test/spec_directory.rb
297
- - test/spec_webrick.rb
298
- - test/spec_response.rb
299
- - test/spec_file.rb
300
- - test/spec_body_proxy.rb
301
- - test/spec_logger.rb
302
- - test/spec_auth_digest.rb
303
- - test/spec_urlmap.rb
304
- - test/spec_nulllogger.rb
305
- - test/spec_cascade.rb
306
- - test/spec_auth_basic.rb
307
- - test/spec_head.rb
308
- - test/spec_lock.rb
309
- - test/spec_rewindable_input.rb
320
+ - test/spec_session_abstract_id.rb
321
+ - test/spec_session_abstract_session_hash.rb
322
+ - test/spec_session_cookie.rb
310
323
  - test/spec_session_memcache.rb
311
- - test/spec_content_length.rb
324
+ - test/spec_session_pool.rb
325
+ - test/spec_show_exceptions.rb
326
+ - test/spec_show_status.rb
327
+ - test/spec_static.rb
328
+ - test/spec_tempfile_reaper.rb
329
+ - test/spec_thin.rb
330
+ - test/spec_urlmap.rb
331
+ - test/spec_utils.rb
332
+ - test/spec_version.rb
333
+ - test/spec_webrick.rb