rack 1.6.13 → 2.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/COPYING +1 -1
- data/HISTORY.md +138 -8
- data/README.rdoc +18 -28
- data/Rakefile +6 -14
- data/SPEC +3 -3
- data/contrib/rack_logo.svg +164 -111
- data/example/protectedlobster.rb +1 -1
- data/example/protectedlobster.ru +1 -1
- data/lib/rack.rb +70 -21
- data/lib/rack/auth/abstract/request.rb +5 -1
- data/lib/rack/auth/digest/params.rb +2 -3
- data/lib/rack/auth/digest/request.rb +1 -1
- data/lib/rack/body_proxy.rb +14 -9
- data/lib/rack/builder.rb +3 -3
- data/lib/rack/chunked.rb +5 -5
- data/lib/rack/{commonlogger.rb → common_logger.rb} +3 -3
- data/lib/rack/{conditionalget.rb → conditional_get.rb} +0 -0
- data/lib/rack/content_length.rb +2 -2
- data/lib/rack/deflater.rb +4 -39
- data/lib/rack/directory.rb +66 -54
- data/lib/rack/etag.rb +5 -4
- data/lib/rack/events.rb +154 -0
- data/lib/rack/file.rb +64 -40
- data/lib/rack/handler.rb +3 -25
- data/lib/rack/handler/cgi.rb +15 -16
- data/lib/rack/handler/fastcgi.rb +13 -14
- data/lib/rack/handler/lsws.rb +11 -11
- data/lib/rack/handler/scgi.rb +15 -15
- data/lib/rack/handler/thin.rb +3 -0
- data/lib/rack/handler/webrick.rb +24 -26
- data/lib/rack/head.rb +15 -17
- data/lib/rack/lint.rb +40 -40
- data/lib/rack/lobster.rb +1 -1
- data/lib/rack/lock.rb +15 -10
- data/lib/rack/logger.rb +2 -2
- data/lib/rack/media_type.rb +38 -0
- data/lib/rack/{methodoverride.rb → method_override.rb} +6 -6
- data/lib/rack/mime.rb +18 -5
- data/lib/rack/mock.rb +36 -54
- data/lib/rack/multipart.rb +35 -6
- data/lib/rack/multipart/generator.rb +5 -5
- data/lib/rack/multipart/parser.rb +273 -157
- data/lib/rack/multipart/uploaded_file.rb +1 -2
- data/lib/rack/{nulllogger.rb → null_logger.rb} +1 -1
- data/lib/rack/query_parser.rb +192 -0
- data/lib/rack/recursive.rb +8 -8
- data/lib/rack/request.rb +394 -305
- data/lib/rack/response.rb +130 -57
- data/lib/rack/rewindable_input.rb +1 -12
- data/lib/rack/runtime.rb +10 -18
- data/lib/rack/sendfile.rb +5 -7
- data/lib/rack/server.rb +30 -23
- data/lib/rack/session/abstract/id.rb +108 -138
- data/lib/rack/session/cookie.rb +26 -28
- data/lib/rack/session/memcache.rb +8 -14
- data/lib/rack/session/pool.rb +14 -21
- data/lib/rack/show_exceptions.rb +386 -0
- data/lib/rack/{showstatus.rb → show_status.rb} +3 -3
- data/lib/rack/static.rb +30 -5
- data/lib/rack/tempfile_reaper.rb +2 -2
- data/lib/rack/urlmap.rb +15 -14
- data/lib/rack/utils.rb +136 -211
- data/rack.gemspec +10 -9
- data/test/builder/an_underscore_app.rb +5 -0
- data/test/builder/options.ru +1 -1
- data/test/cgi/test.fcgi +1 -0
- data/test/cgi/test.gz +0 -0
- data/test/helper.rb +34 -0
- data/test/multipart/filename_with_encoded_words +7 -0
- data/test/multipart/filename_with_single_quote +7 -0
- data/test/multipart/quoted +15 -0
- data/test/multipart/rack-logo.png +0 -0
- data/test/multipart/unity3d_wwwform +11 -0
- data/test/registering_handler/rack/handler/registering_myself.rb +1 -1
- data/test/spec_auth_basic.rb +27 -19
- data/test/spec_auth_digest.rb +47 -46
- data/test/spec_body_proxy.rb +27 -27
- data/test/spec_builder.rb +51 -41
- data/test/spec_cascade.rb +24 -22
- data/test/spec_cgi.rb +49 -67
- data/test/spec_chunked.rb +37 -35
- data/test/{spec_commonlogger.rb → spec_common_logger.rb} +23 -21
- data/test/{spec_conditionalget.rb → spec_conditional_get.rb} +29 -28
- data/test/spec_config.rb +3 -2
- data/test/spec_content_length.rb +18 -17
- data/test/spec_content_type.rb +13 -12
- data/test/spec_deflater.rb +85 -49
- data/test/spec_directory.rb +87 -27
- data/test/spec_etag.rb +32 -31
- data/test/spec_events.rb +133 -0
- data/test/spec_fastcgi.rb +50 -72
- data/test/spec_file.rb +120 -77
- data/test/spec_handler.rb +19 -34
- data/test/spec_head.rb +15 -14
- data/test/spec_lint.rb +164 -199
- data/test/spec_lobster.rb +24 -23
- data/test/spec_lock.rb +79 -39
- data/test/spec_logger.rb +4 -3
- data/test/spec_media_type.rb +42 -0
- data/test/{spec_methodoverride.rb → spec_method_override.rb} +34 -35
- data/test/spec_mime.rb +19 -19
- data/test/spec_mock.rb +206 -144
- data/test/spec_multipart.rb +322 -200
- data/test/{spec_nulllogger.rb → spec_null_logger.rb} +5 -4
- data/test/spec_recursive.rb +17 -14
- data/test/spec_request.rb +771 -605
- data/test/spec_response.rb +215 -112
- data/test/spec_rewindable_input.rb +50 -40
- data/test/spec_runtime.rb +11 -10
- data/test/spec_sendfile.rb +30 -35
- data/test/spec_server.rb +78 -52
- data/test/spec_session_abstract_id.rb +11 -33
- data/test/spec_session_abstract_session_hash.rb +45 -0
- data/test/spec_session_cookie.rb +99 -67
- data/test/spec_session_memcache.rb +63 -101
- data/test/spec_session_pool.rb +48 -84
- data/test/{spec_showexceptions.rb → spec_show_exceptions.rb} +23 -28
- data/test/{spec_showstatus.rb → spec_show_status.rb} +36 -35
- data/test/spec_static.rb +71 -32
- data/test/spec_tempfile_reaper.rb +11 -10
- data/test/spec_thin.rb +55 -50
- data/test/spec_urlmap.rb +79 -78
- data/test/spec_utils.rb +441 -346
- data/test/spec_version.rb +2 -8
- data/test/spec_webrick.rb +93 -71
- data/test/static/foo.html +1 -0
- data/test/testrequest.rb +1 -1
- data/test/unregistered_handler/rack/handler/unregistered.rb +1 -1
- data/test/unregistered_handler/rack/handler/unregistered_long_one.rb +1 -1
- metadata +60 -40
- data/KNOWN-ISSUES +0 -44
- data/lib/rack/backports/uri/common_18.rb +0 -56
- data/lib/rack/backports/uri/common_192.rb +0 -52
- data/lib/rack/backports/uri/common_193.rb +0 -29
- data/lib/rack/handler/evented_mongrel.rb +0 -8
- data/lib/rack/handler/mongrel.rb +0 -106
- data/lib/rack/handler/swiftiplied_mongrel.rb +0 -8
- data/lib/rack/showexceptions.rb +0 -387
- data/lib/rack/utils/okjson.rb +0 -600
- data/test/spec_mongrel.rb +0 -182
- data/test/spec_session_persisted_secure_secure_session_hash.rb +0 -73
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.
|
|
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
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
40
|
+
it "be a WEBrick" do
|
|
25
41
|
GET("/test")
|
|
26
|
-
status.
|
|
27
|
-
response["SERVER_SOFTWARE"].
|
|
28
|
-
response["HTTP_VERSION"].
|
|
29
|
-
response["SERVER_PROTOCOL"].
|
|
30
|
-
response["SERVER_PORT"].
|
|
31
|
-
response["SERVER_NAME"].
|
|
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
|
-
|
|
50
|
+
it "have rack headers" do
|
|
35
51
|
GET("/test")
|
|
36
|
-
response["rack.version"].
|
|
37
|
-
response["rack.multithread"].
|
|
38
|
-
response["rack.multiprocess"]
|
|
39
|
-
response["rack.run_once"]
|
|
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
|
-
|
|
58
|
+
it "have CGI headers on GET" do
|
|
43
59
|
GET("/test")
|
|
44
|
-
response["REQUEST_METHOD"].
|
|
45
|
-
response["SCRIPT_NAME"].
|
|
46
|
-
response["REQUEST_PATH"].
|
|
47
|
-
response["PATH_INFO"].
|
|
48
|
-
response["QUERY_STRING"].
|
|
49
|
-
response["test.postdata"].
|
|
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"].
|
|
53
|
-
response["SCRIPT_NAME"].
|
|
54
|
-
response["REQUEST_PATH"].
|
|
55
|
-
response["PATH_INFO"].
|
|
56
|
-
response["QUERY_STRING"].
|
|
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"].
|
|
60
|
-
response["SCRIPT_NAME"].
|
|
61
|
-
response["REQUEST_PATH"].
|
|
62
|
-
response["PATH_INFO"].
|
|
63
|
-
response["QUERY_STRING"].
|
|
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
|
-
|
|
82
|
+
it "have CGI headers on POST" do
|
|
67
83
|
POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
|
|
68
|
-
status.
|
|
69
|
-
response["REQUEST_METHOD"].
|
|
70
|
-
response["SCRIPT_NAME"].
|
|
71
|
-
response["REQUEST_PATH"].
|
|
72
|
-
response["PATH_INFO"].
|
|
73
|
-
response["QUERY_STRING"].
|
|
74
|
-
response["HTTP_X_TEST_HEADER"].
|
|
75
|
-
response["test.postdata"].
|
|
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
|
-
|
|
94
|
+
it "support HTTP auth" do
|
|
79
95
|
GET("/test", {:user => "ruth", :passwd => "secret"})
|
|
80
|
-
response["HTTP_AUTHORIZATION"].
|
|
96
|
+
response["HTTP_AUTHORIZATION"].must_equal "Basic cnV0aDpzZWNyZXQ="
|
|
81
97
|
end
|
|
82
98
|
|
|
83
|
-
|
|
99
|
+
it "set status" do
|
|
84
100
|
GET("/test?secret")
|
|
85
|
-
status.
|
|
86
|
-
response["rack.url_scheme"].
|
|
101
|
+
status.must_equal 403
|
|
102
|
+
response["rack.url_scheme"].must_equal "http"
|
|
87
103
|
end
|
|
88
104
|
|
|
89
|
-
|
|
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.
|
|
101
|
-
res.get_fields("set-cookie").
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
116
|
-
|
|
117
|
-
throw :done
|
|
132
|
+
assert_kind_of WEBrick::HTTPServer, server
|
|
133
|
+
queue.push(server)
|
|
118
134
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
server = queue.pop
|
|
138
|
+
server.shutdown
|
|
139
|
+
t.join
|
|
122
140
|
end
|
|
123
141
|
|
|
124
|
-
|
|
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.
|
|
138
|
-
res["www-authenticate"].
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
179
|
+
res.body.must_equal "David\r\nDavid\r\nDavid\r\nDavid\r\nDavid\r\n"
|
|
162
180
|
}
|
|
163
181
|
end
|
|
164
182
|
|
|
165
|
-
|
|
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"].
|
|
178
|
-
res["Content-Length"].
|
|
179
|
-
res.body.
|
|
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.
|
|
15
|
+
size = body.bytesize
|
|
16
16
|
[status, {"Content-Type" => "text/yaml", "Content-Length" => size.to_s}, [body]]
|
|
17
17
|
end
|
|
18
18
|
|
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:
|
|
4
|
+
version: 2.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
7
|
+
- Leah Neukirchen
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-11-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
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
|
|
49
|
-
email:
|
|
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/
|
|
88
|
-
- lib/rack/
|
|
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/
|
|
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/
|
|
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/
|
|
132
|
-
- lib/rack/
|
|
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/
|
|
193
|
-
- test/
|
|
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/
|
|
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/
|
|
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,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
|
-
- test/spec_session_persisted_secure_secure_session_hash.rb
|
|
225
242
|
- test/spec_session_pool.rb
|
|
226
|
-
- test/
|
|
227
|
-
- test/
|
|
243
|
+
- test/spec_show_exceptions.rb
|
|
244
|
+
- test/spec_show_status.rb
|
|
228
245
|
- test/spec_static.rb
|
|
229
246
|
- test/spec_tempfile_reaper.rb
|
|
230
247
|
- test/spec_thin.rb
|
|
@@ -233,11 +250,12 @@ files:
|
|
|
233
250
|
- test/spec_version.rb
|
|
234
251
|
- test/spec_webrick.rb
|
|
235
252
|
- test/static/another/index.html
|
|
253
|
+
- test/static/foo.html
|
|
236
254
|
- test/static/index.html
|
|
237
255
|
- test/testrequest.rb
|
|
238
256
|
- test/unregistered_handler/rack/handler/unregistered.rb
|
|
239
257
|
- test/unregistered_handler/rack/handler/unregistered_long_one.rb
|
|
240
|
-
homepage:
|
|
258
|
+
homepage: https://rack.github.io/
|
|
241
259
|
licenses:
|
|
242
260
|
- MIT
|
|
243
261
|
metadata: {}
|
|
@@ -249,14 +267,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
249
267
|
requirements:
|
|
250
268
|
- - ">="
|
|
251
269
|
- !ruby/object:Gem::Version
|
|
252
|
-
version:
|
|
270
|
+
version: 2.2.2
|
|
253
271
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
254
272
|
requirements:
|
|
255
273
|
- - ">="
|
|
256
274
|
- !ruby/object:Gem::Version
|
|
257
275
|
version: '0'
|
|
258
276
|
requirements: []
|
|
259
|
-
|
|
277
|
+
rubyforge_project:
|
|
278
|
+
rubygems_version: 2.7.6
|
|
260
279
|
signing_key:
|
|
261
280
|
specification_version: 4
|
|
262
281
|
summary: a modular Ruby webserver interface
|
|
@@ -265,45 +284,46 @@ 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
|
-
- test/spec_session_persisted_secure_secure_session_hash.rb
|
|
286
305
|
- test/spec_fastcgi.rb
|
|
306
|
+
- test/spec_common_logger.rb
|
|
287
307
|
- test/spec_builder.rb
|
|
288
308
|
- test/spec_config.rb
|
|
289
|
-
- test/spec_mongrel.rb
|
|
290
309
|
- test/spec_utils.rb
|
|
291
310
|
- test/spec_sendfile.rb
|
|
292
311
|
- test/spec_lobster.rb
|
|
293
312
|
- test/spec_lint.rb
|
|
313
|
+
- test/spec_conditional_get.rb
|
|
294
314
|
- test/spec_tempfile_reaper.rb
|
|
295
315
|
- test/spec_mock.rb
|
|
296
|
-
- test/spec_conditionalget.rb
|
|
297
316
|
- test/spec_server.rb
|
|
298
317
|
- test/spec_directory.rb
|
|
299
318
|
- test/spec_webrick.rb
|
|
300
319
|
- test/spec_response.rb
|
|
301
320
|
- test/spec_file.rb
|
|
321
|
+
- test/spec_show_status.rb
|
|
302
322
|
- test/spec_body_proxy.rb
|
|
303
323
|
- test/spec_logger.rb
|
|
304
324
|
- test/spec_auth_digest.rb
|
|
305
325
|
- test/spec_urlmap.rb
|
|
306
|
-
- test/
|
|
326
|
+
- test/spec_events.rb
|
|
307
327
|
- test/spec_cascade.rb
|
|
308
328
|
- test/spec_auth_basic.rb
|
|
309
329
|
- test/spec_head.rb
|