rack 1.6.13 → 2.0.9

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 +4 -4
  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 +3 -3
  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/auth/abstract/request.rb +5 -1
  11. data/lib/rack/auth/digest/params.rb +2 -3
  12. data/lib/rack/auth/digest/request.rb +1 -1
  13. data/lib/rack/body_proxy.rb +14 -9
  14. data/lib/rack/builder.rb +3 -3
  15. data/lib/rack/chunked.rb +5 -5
  16. data/lib/rack/{commonlogger.rb → common_logger.rb} +3 -3
  17. data/lib/rack/content_length.rb +2 -2
  18. data/lib/rack/deflater.rb +4 -39
  19. data/lib/rack/directory.rb +66 -54
  20. data/lib/rack/etag.rb +5 -4
  21. data/lib/rack/events.rb +154 -0
  22. data/lib/rack/file.rb +64 -40
  23. data/lib/rack/handler/cgi.rb +15 -16
  24. data/lib/rack/handler/fastcgi.rb +13 -14
  25. data/lib/rack/handler/lsws.rb +11 -11
  26. data/lib/rack/handler/scgi.rb +15 -15
  27. data/lib/rack/handler/thin.rb +3 -0
  28. data/lib/rack/handler/webrick.rb +24 -26
  29. data/lib/rack/handler.rb +3 -25
  30. data/lib/rack/head.rb +15 -17
  31. data/lib/rack/lint.rb +40 -40
  32. data/lib/rack/lobster.rb +1 -1
  33. data/lib/rack/lock.rb +15 -10
  34. data/lib/rack/logger.rb +2 -2
  35. data/lib/rack/media_type.rb +38 -0
  36. data/lib/rack/{methodoverride.rb → method_override.rb} +6 -6
  37. data/lib/rack/mime.rb +18 -5
  38. data/lib/rack/mock.rb +36 -54
  39. data/lib/rack/multipart/generator.rb +5 -5
  40. data/lib/rack/multipart/parser.rb +270 -157
  41. data/lib/rack/multipart/uploaded_file.rb +1 -2
  42. data/lib/rack/multipart.rb +35 -6
  43. data/lib/rack/{nulllogger.rb → null_logger.rb} +1 -1
  44. data/lib/rack/query_parser.rb +192 -0
  45. data/lib/rack/recursive.rb +8 -8
  46. data/lib/rack/request.rb +394 -305
  47. data/lib/rack/response.rb +130 -57
  48. data/lib/rack/rewindable_input.rb +1 -12
  49. data/lib/rack/runtime.rb +10 -18
  50. data/lib/rack/sendfile.rb +5 -7
  51. data/lib/rack/server.rb +30 -23
  52. data/lib/rack/session/abstract/id.rb +110 -75
  53. data/lib/rack/session/cookie.rb +24 -17
  54. data/lib/rack/session/memcache.rb +9 -9
  55. data/lib/rack/session/pool.rb +8 -8
  56. data/lib/rack/show_exceptions.rb +386 -0
  57. data/lib/rack/{showstatus.rb → show_status.rb} +3 -3
  58. data/lib/rack/static.rb +30 -5
  59. data/lib/rack/tempfile_reaper.rb +2 -2
  60. data/lib/rack/urlmap.rb +15 -14
  61. data/lib/rack/utils.rb +138 -211
  62. data/lib/rack.rb +70 -21
  63. data/rack.gemspec +10 -9
  64. data/test/builder/an_underscore_app.rb +5 -0
  65. data/test/builder/options.ru +1 -1
  66. data/test/cgi/test.fcgi +1 -0
  67. data/test/cgi/test.gz +0 -0
  68. data/test/helper.rb +34 -0
  69. data/test/multipart/filename_with_encoded_words +7 -0
  70. data/test/multipart/filename_with_single_quote +7 -0
  71. data/test/multipart/quoted +15 -0
  72. data/test/multipart/rack-logo.png +0 -0
  73. data/test/multipart/unity3d_wwwform +11 -0
  74. data/test/registering_handler/rack/handler/registering_myself.rb +1 -1
  75. data/test/spec_auth_basic.rb +27 -19
  76. data/test/spec_auth_digest.rb +47 -46
  77. data/test/spec_body_proxy.rb +27 -27
  78. data/test/spec_builder.rb +51 -41
  79. data/test/spec_cascade.rb +24 -22
  80. data/test/spec_cgi.rb +49 -67
  81. data/test/spec_chunked.rb +37 -35
  82. data/test/{spec_commonlogger.rb → spec_common_logger.rb} +23 -21
  83. data/test/{spec_conditionalget.rb → spec_conditional_get.rb} +29 -28
  84. data/test/spec_config.rb +3 -2
  85. data/test/spec_content_length.rb +18 -17
  86. data/test/spec_content_type.rb +13 -12
  87. data/test/spec_deflater.rb +85 -49
  88. data/test/spec_directory.rb +87 -27
  89. data/test/spec_etag.rb +32 -31
  90. data/test/spec_events.rb +133 -0
  91. data/test/spec_fastcgi.rb +50 -72
  92. data/test/spec_file.rb +120 -77
  93. data/test/spec_handler.rb +19 -34
  94. data/test/spec_head.rb +15 -14
  95. data/test/spec_lint.rb +164 -199
  96. data/test/spec_lobster.rb +24 -23
  97. data/test/spec_lock.rb +79 -39
  98. data/test/spec_logger.rb +4 -3
  99. data/test/spec_media_type.rb +42 -0
  100. data/test/{spec_methodoverride.rb → spec_method_override.rb} +34 -35
  101. data/test/spec_mime.rb +19 -19
  102. data/test/spec_mock.rb +206 -144
  103. data/test/spec_multipart.rb +322 -200
  104. data/test/{spec_nulllogger.rb → spec_null_logger.rb} +5 -4
  105. data/test/spec_recursive.rb +17 -14
  106. data/test/spec_request.rb +780 -605
  107. data/test/spec_response.rb +233 -112
  108. data/test/spec_rewindable_input.rb +50 -40
  109. data/test/spec_runtime.rb +11 -10
  110. data/test/spec_sendfile.rb +30 -35
  111. data/test/spec_server.rb +78 -52
  112. data/test/spec_session_abstract_id.rb +11 -33
  113. data/test/spec_session_abstract_session_hash.rb +45 -0
  114. data/test/spec_session_cookie.rb +99 -67
  115. data/test/spec_session_memcache.rb +67 -68
  116. data/test/spec_session_pool.rb +52 -51
  117. data/test/{spec_showexceptions.rb → spec_show_exceptions.rb} +23 -28
  118. data/test/{spec_showstatus.rb → spec_show_status.rb} +36 -35
  119. data/test/spec_static.rb +71 -32
  120. data/test/spec_tempfile_reaper.rb +11 -10
  121. data/test/spec_thin.rb +55 -50
  122. data/test/spec_urlmap.rb +79 -78
  123. data/test/spec_utils.rb +441 -346
  124. data/test/spec_version.rb +2 -8
  125. data/test/spec_webrick.rb +93 -71
  126. data/test/static/foo.html +1 -0
  127. data/test/testrequest.rb +1 -1
  128. data/test/unregistered_handler/rack/handler/unregistered.rb +1 -1
  129. data/test/unregistered_handler/rack/handler/unregistered_long_one.rb +1 -1
  130. metadata +57 -36
  131. data/KNOWN-ISSUES +0 -44
  132. data/lib/rack/backports/uri/common_18.rb +0 -56
  133. data/lib/rack/backports/uri/common_192.rb +0 -52
  134. data/lib/rack/backports/uri/common_193.rb +0 -29
  135. data/lib/rack/handler/evented_mongrel.rb +0 -8
  136. data/lib/rack/handler/mongrel.rb +0 -106
  137. data/lib/rack/handler/swiftiplied_mongrel.rb +0 -8
  138. data/lib/rack/showexceptions.rb +0 -387
  139. data/lib/rack/utils/okjson.rb +0 -600
  140. data/test/spec_mongrel.rb +0 -182
  141. /data/lib/rack/{conditionalget.rb → conditional_get.rb} +0 -0
data/test/spec_version.rb CHANGED
@@ -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
data/test/spec_webrick.rb CHANGED
@@ -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!
data/test/testrequest.rb CHANGED
@@ -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.13
4
+ version: 2.0.9
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
11
  date: 2020-02-08 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,12 +236,13 @@ 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_persisted_secure_secure_session_hash.rb
225
243
  - test/spec_session_pool.rb
226
- - test/spec_showexceptions.rb
227
- - test/spec_showstatus.rb
244
+ - test/spec_show_exceptions.rb
245
+ - test/spec_show_status.rb
228
246
  - test/spec_static.rb
229
247
  - test/spec_tempfile_reaper.rb
230
248
  - test/spec_thin.rb
@@ -233,11 +251,12 @@ files:
233
251
  - test/spec_version.rb
234
252
  - test/spec_webrick.rb
235
253
  - test/static/another/index.html
254
+ - test/static/foo.html
236
255
  - test/static/index.html
237
256
  - test/testrequest.rb
238
257
  - test/unregistered_handler/rack/handler/unregistered.rb
239
258
  - test/unregistered_handler/rack/handler/unregistered_long_one.rb
240
- homepage: http://rack.github.io/
259
+ homepage: https://rack.github.io/
241
260
  licenses:
242
261
  - MIT
243
262
  metadata: {}
@@ -249,7 +268,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
249
268
  requirements:
250
269
  - - ">="
251
270
  - !ruby/object:Gem::Version
252
- version: '0'
271
+ version: 2.2.2
253
272
  required_rubygems_version: !ruby/object:Gem::Requirement
254
273
  requirements:
255
274
  - - ">="
@@ -265,45 +284,47 @@ test_files:
265
284
  - test/spec_deflater.rb
266
285
  - test/spec_static.rb
267
286
  - test/spec_session_cookie.rb
268
- - test/spec_commonlogger.rb
269
287
  - test/spec_session_pool.rb
270
- - test/spec_methodoverride.rb
271
288
  - test/spec_etag.rb
272
289
  - test/spec_version.rb
273
290
  - test/spec_handler.rb
274
291
  - test/spec_thin.rb
275
- - test/spec_showexceptions.rb
276
292
  - test/spec_session_abstract_id.rb
277
293
  - test/spec_mime.rb
278
294
  - test/spec_recursive.rb
295
+ - test/spec_null_logger.rb
296
+ - test/spec_media_type.rb
279
297
  - test/spec_cgi.rb
298
+ - test/spec_method_override.rb
280
299
  - test/spec_content_type.rb
300
+ - test/spec_session_abstract_session_hash.rb
281
301
  - test/spec_request.rb
282
- - test/spec_showstatus.rb
283
302
  - test/spec_chunked.rb
303
+ - test/spec_show_exceptions.rb
284
304
  - test/spec_runtime.rb
285
305
  - test/spec_session_persisted_secure_secure_session_hash.rb
286
306
  - test/spec_fastcgi.rb
307
+ - test/spec_common_logger.rb
287
308
  - test/spec_builder.rb
288
309
  - test/spec_config.rb
289
- - test/spec_mongrel.rb
290
310
  - test/spec_utils.rb
291
311
  - test/spec_sendfile.rb
292
312
  - test/spec_lobster.rb
293
313
  - test/spec_lint.rb
314
+ - test/spec_conditional_get.rb
294
315
  - test/spec_tempfile_reaper.rb
295
316
  - test/spec_mock.rb
296
- - test/spec_conditionalget.rb
297
317
  - test/spec_server.rb
298
318
  - test/spec_directory.rb
299
319
  - test/spec_webrick.rb
300
320
  - test/spec_response.rb
301
321
  - test/spec_file.rb
322
+ - test/spec_show_status.rb
302
323
  - test/spec_body_proxy.rb
303
324
  - test/spec_logger.rb
304
325
  - test/spec_auth_digest.rb
305
326
  - test/spec_urlmap.rb
306
- - test/spec_nulllogger.rb
327
+ - test/spec_events.rb
307
328
  - test/spec_cascade.rb
308
329
  - test/spec_auth_basic.rb
309
330
  - test/spec_head.rb
data/KNOWN-ISSUES DELETED
@@ -1,44 +0,0 @@
1
- = Known issues with Rack and ECMA-262
2
-
3
- * Many users expect the escape() function defined in ECMA-262 to be compatible
4
- with URI. Confusion is especially strong because the documentation for the
5
- escape function includes a reference to the URI specifications. ECMA-262
6
- escape is not however a URI escape function, it is a javascript escape
7
- function, and is not fully compatible. Most notably, for characters outside of
8
- the BMP. Users should use the more correct encodeURI functions.
9
-
10
- = Known issues with Rack and Web servers
11
-
12
- * Lighttpd sets wrong SCRIPT_NAME and PATH_INFO if you mount your
13
- FastCGI app at "/". This can be fixed by using this middleware:
14
-
15
- class LighttpdScriptNameFix
16
- def initialize(app)
17
- @app = app
18
- end
19
-
20
- def call(env)
21
- env["PATH_INFO"] = env["SCRIPT_NAME"].to_s + env["PATH_INFO"].to_s
22
- env["SCRIPT_NAME"] = ""
23
- @app.call(env)
24
- end
25
- end
26
-
27
- Of course, use this only when your app runs at "/".
28
-
29
- Since lighttpd 1.4.23, you also can use the "fix-root-scriptname" flag
30
- in fastcgi.server.
31
-
32
- = Known conflicts regarding parameter parsing
33
-
34
- * Many users have differing opinions about parameter parsing. The current
35
- parameter parsers in Rack are based on a combination of the HTTP and CGI
36
- specs, and are intended to round-trip encoding and decoding. There are some
37
- choices that may be viewed as deficiencies, specifically:
38
- - Rack does not create implicit arrays for multiple instances of a parameter
39
- - Rack returns nil when a value is not given
40
- - Rack does not support multi-type keys in parameters
41
- These issues or choices, will not be fixed before 2.0, if at all. They are
42
- very major breaking changes. Users are free to write alternative parameter
43
- parsers, and their own Request and Response wrappers. Moreover, users are
44
- encouraged to do so.