rack 1.5.2 → 1.5.3
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.
- checksums.yaml +7 -0
- data/Rakefile +1 -1
- data/lib/rack.rb +1 -1
- data/lib/rack/request.rb +3 -1
- data/lib/rack/sendfile.rb +1 -1
- data/lib/rack/utils/okjson.rb +91 -90
- data/rack.gemspec +1 -1
- data/test/spec_request.rb +20 -0
- metadata +56 -74
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e7aa32fd28459ce2c2e164f12fb33c2599493a01
|
4
|
+
data.tar.gz: 3335d110a0d071412aae13ac81072f5ddbf59806
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: efa5a3a838fca1bafcd280c7aa149ccbb0b96bc9b5137eb4b98d22da87f065c283aa2f84241223ec156771e5fc6c450c88ce1a78bd9bece75d33f4947097fc5c
|
7
|
+
data.tar.gz: 1ccd7cb881db9bb604337d2f00b25d784b263eaba81e9f357d9335413adbe98385621026200716288b96e86c412cacf79d3bf689318905d58687c6fd5b628297
|
data/Rakefile
CHANGED
data/lib/rack.rb
CHANGED
data/lib/rack/request.rb
CHANGED
@@ -100,6 +100,8 @@ module Rack
|
|
100
100
|
port.to_i
|
101
101
|
elsif @env.has_key?("HTTP_X_FORWARDED_HOST")
|
102
102
|
DEFAULT_PORTS[scheme]
|
103
|
+
elsif @env.has_key?("HTTP_X_FORWARDED_PROTO")
|
104
|
+
DEFAULT_PORTS[@env['HTTP_X_FORWARDED_PROTO']]
|
103
105
|
else
|
104
106
|
@env["SERVER_PORT"].to_i
|
105
107
|
end
|
@@ -196,7 +198,7 @@ module Rack
|
|
196
198
|
def POST
|
197
199
|
if @env["rack.input"].nil?
|
198
200
|
raise "Missing rack.input"
|
199
|
-
elsif @env["rack.request.form_input"].
|
201
|
+
elsif @env["rack.request.form_input"].equal? @env["rack.input"]
|
200
202
|
@env["rack.request.form_hash"]
|
201
203
|
elsif form_data? || parseable_data?
|
202
204
|
@env["rack.request.form_input"] = @env["rack.input"]
|
data/lib/rack/sendfile.rb
CHANGED
data/lib/rack/utils/okjson.rb
CHANGED
@@ -21,16 +21,14 @@
|
|
21
21
|
# THE SOFTWARE.
|
22
22
|
|
23
23
|
# See https://github.com/kr/okjson for updates.
|
24
|
-
# Imported from the above repo @ d4e8643ad92e14b37d11326855499c7e4108ed17
|
25
|
-
# Namespace modified for vendoring under Rack::Utils
|
26
24
|
|
27
25
|
require 'stringio'
|
28
26
|
|
29
27
|
# Some parts adapted from
|
30
|
-
#
|
31
|
-
#
|
28
|
+
# https://golang.org/src/encoding/json/decode.go and
|
29
|
+
# https://golang.org/src/unicode/utf8/utf8.go
|
32
30
|
module Rack::Utils::OkJson
|
33
|
-
Upstream = '
|
31
|
+
Upstream = '43'
|
34
32
|
extend self
|
35
33
|
|
36
34
|
|
@@ -52,12 +50,49 @@ module Rack::Utils::OkJson
|
|
52
50
|
end
|
53
51
|
|
54
52
|
|
53
|
+
# Encodes x into a json text. It may contain only
|
54
|
+
# Array, Hash, String, Numeric, true, false, nil.
|
55
|
+
# (Note, this list excludes Symbol.)
|
56
|
+
# X itself must be an Array or a Hash.
|
57
|
+
# No other value can be encoded, and an error will
|
58
|
+
# be raised if x contains any other value, such as
|
59
|
+
# Nan, Infinity, Symbol, and Proc, or if a Hash key
|
60
|
+
# is not a String.
|
61
|
+
# Strings contained in x must be valid UTF-8.
|
62
|
+
def encode(x)
|
63
|
+
case x
|
64
|
+
when Hash then objenc(x)
|
65
|
+
when Array then arrenc(x)
|
66
|
+
else
|
67
|
+
raise Error, 'root value must be an Array or a Hash'
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
def valenc(x)
|
73
|
+
case x
|
74
|
+
when Hash then objenc(x)
|
75
|
+
when Array then arrenc(x)
|
76
|
+
when String then strenc(x)
|
77
|
+
when Numeric then numenc(x)
|
78
|
+
when true then "true"
|
79
|
+
when false then "false"
|
80
|
+
when nil then "null"
|
81
|
+
else
|
82
|
+
raise Error, "cannot encode #{x.class}: #{x.inspect}"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
private
|
88
|
+
|
89
|
+
|
55
90
|
# Parses a "json text" in the sense of RFC 4627.
|
56
91
|
# Returns the parsed value and any trailing tokens.
|
57
92
|
# Note: this is almost the same as valparse,
|
58
93
|
# except that it does not accept atomic values.
|
59
94
|
def textparse(ts)
|
60
|
-
if ts.length
|
95
|
+
if ts.length <= 0
|
61
96
|
raise Error, 'empty'
|
62
97
|
end
|
63
98
|
|
@@ -74,7 +109,7 @@ module Rack::Utils::OkJson
|
|
74
109
|
# Parses a "value" in the sense of RFC 4627.
|
75
110
|
# Returns the parsed value and any trailing tokens.
|
76
111
|
def valparse(ts)
|
77
|
-
if ts.length
|
112
|
+
if ts.length <= 0
|
78
113
|
raise Error, 'empty'
|
79
114
|
end
|
80
115
|
|
@@ -203,21 +238,19 @@ module Rack::Utils::OkJson
|
|
203
238
|
# it is the lexeme.
|
204
239
|
def tok(s)
|
205
240
|
case s[0]
|
206
|
-
when ?{
|
207
|
-
when ?}
|
208
|
-
when ?:
|
209
|
-
when ?,
|
210
|
-
when ?[
|
211
|
-
when ?]
|
212
|
-
when ?n
|
213
|
-
when ?t
|
214
|
-
when ?f
|
215
|
-
when ?"
|
216
|
-
when Spc then [:space, s[0,1], s[0,1]]
|
217
|
-
|
218
|
-
|
219
|
-
when ?\r then [:space, s[0,1], s[0,1]]
|
220
|
-
else numtok(s)
|
241
|
+
when ?{ then ['{', s[0,1], s[0,1]]
|
242
|
+
when ?} then ['}', s[0,1], s[0,1]]
|
243
|
+
when ?: then [':', s[0,1], s[0,1]]
|
244
|
+
when ?, then [',', s[0,1], s[0,1]]
|
245
|
+
when ?[ then ['[', s[0,1], s[0,1]]
|
246
|
+
when ?] then [']', s[0,1], s[0,1]]
|
247
|
+
when ?n then nulltok(s)
|
248
|
+
when ?t then truetok(s)
|
249
|
+
when ?f then falsetok(s)
|
250
|
+
when ?" then strtok(s)
|
251
|
+
when Spc, ?\t, ?\n, ?\r then [:space, s[0,1], s[0,1]]
|
252
|
+
else
|
253
|
+
numtok(s)
|
221
254
|
end
|
222
255
|
end
|
223
256
|
|
@@ -230,12 +263,12 @@ module Rack::Utils::OkJson
|
|
230
263
|
def numtok(s)
|
231
264
|
m = /-?([1-9][0-9]+|[0-9])([.][0-9]+)?([eE][+-]?[0-9]+)?/.match(s)
|
232
265
|
if m && m.begin(0) == 0
|
233
|
-
if m[
|
234
|
-
[:val, m[0], Integer(m[
|
266
|
+
if !m[2] && !m[3]
|
267
|
+
[:val, m[0], Integer(m[0])]
|
235
268
|
elsif m[2]
|
236
269
|
[:val, m[0], Float(m[0])]
|
237
270
|
else
|
238
|
-
[:val, m[0], Integer(m[
|
271
|
+
[:val, m[0], Integer(m[1])*(10**m[3][1..-1].to_i(10))]
|
239
272
|
end
|
240
273
|
else
|
241
274
|
[]
|
@@ -267,17 +300,14 @@ module Rack::Utils::OkJson
|
|
267
300
|
def unquote(q)
|
268
301
|
q = q[1...-1]
|
269
302
|
a = q.dup # allocate a big enough string
|
270
|
-
rubydoesenc = false
|
271
303
|
# In ruby >= 1.9, a[w] is a codepoint, not a byte.
|
272
|
-
if
|
304
|
+
if rubydoesenc?
|
273
305
|
a.force_encoding('UTF-8')
|
274
|
-
rubydoesenc = true
|
275
306
|
end
|
276
307
|
r, w = 0, 0
|
277
308
|
while r < q.length
|
278
309
|
c = q[r]
|
279
|
-
|
280
|
-
when c == ?\\
|
310
|
+
if c == ?\\
|
281
311
|
r += 1
|
282
312
|
if r >= q.length
|
283
313
|
raise Error, "string literal ends with a \"\\\": \"#{q}\""
|
@@ -310,7 +340,7 @@ module Rack::Utils::OkJson
|
|
310
340
|
end
|
311
341
|
end
|
312
342
|
end
|
313
|
-
if rubydoesenc
|
343
|
+
if rubydoesenc?
|
314
344
|
a[w] = '' << uchar
|
315
345
|
w += 1
|
316
346
|
else
|
@@ -319,7 +349,7 @@ module Rack::Utils::OkJson
|
|
319
349
|
else
|
320
350
|
raise Error, "invalid escape char #{q[r]} in \"#{q}\""
|
321
351
|
end
|
322
|
-
|
352
|
+
elsif c == ?" || c < Spc
|
323
353
|
raise Error, "invalid character in string literal \"#{q}\""
|
324
354
|
else
|
325
355
|
# Copy anything else byte-for-byte.
|
@@ -340,15 +370,14 @@ module Rack::Utils::OkJson
|
|
340
370
|
# bytes in string a at position i.
|
341
371
|
# Returns the number of bytes written.
|
342
372
|
def ucharenc(a, i, u)
|
343
|
-
|
344
|
-
when u <= Uchar1max
|
373
|
+
if u <= Uchar1max
|
345
374
|
a[i] = (u & 0xff).chr
|
346
375
|
1
|
347
|
-
|
376
|
+
elsif u <= Uchar2max
|
348
377
|
a[i+0] = (Utag2 | ((u>>6)&0xff)).chr
|
349
378
|
a[i+1] = (Utagx | (u&Umaskx)).chr
|
350
379
|
2
|
351
|
-
|
380
|
+
elsif u <= Uchar3max
|
352
381
|
a[i+0] = (Utag3 | ((u>>12)&0xff)).chr
|
353
382
|
a[i+1] = (Utagx | ((u>>6)&Umaskx)).chr
|
354
383
|
a[i+2] = (Utagx | (u&Umaskx)).chr
|
@@ -385,50 +414,15 @@ module Rack::Utils::OkJson
|
|
385
414
|
|
386
415
|
|
387
416
|
def nibble(c)
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
when ?A <= c && c <= ?Z then c.ord - ?A.ord + 10
|
417
|
+
if ?0 <= c && c <= ?9 then c.ord - ?0.ord
|
418
|
+
elsif ?a <= c && c <= ?z then c.ord - ?a.ord + 10
|
419
|
+
elsif ?A <= c && c <= ?Z then c.ord - ?A.ord + 10
|
392
420
|
else
|
393
421
|
raise Error, "invalid hex code #{c}"
|
394
422
|
end
|
395
423
|
end
|
396
424
|
|
397
425
|
|
398
|
-
# Encodes x into a json text. It may contain only
|
399
|
-
# Array, Hash, String, Numeric, true, false, nil.
|
400
|
-
# (Note, this list excludes Symbol.)
|
401
|
-
# X itself must be an Array or a Hash.
|
402
|
-
# No other value can be encoded, and an error will
|
403
|
-
# be raised if x contains any other value, such as
|
404
|
-
# Nan, Infinity, Symbol, and Proc, or if a Hash key
|
405
|
-
# is not a String.
|
406
|
-
# Strings contained in x must be valid UTF-8.
|
407
|
-
def encode(x)
|
408
|
-
case x
|
409
|
-
when Hash then objenc(x)
|
410
|
-
when Array then arrenc(x)
|
411
|
-
else
|
412
|
-
raise Error, 'root value must be an Array or a Hash'
|
413
|
-
end
|
414
|
-
end
|
415
|
-
|
416
|
-
|
417
|
-
def valenc(x)
|
418
|
-
case x
|
419
|
-
when Hash then objenc(x)
|
420
|
-
when Array then arrenc(x)
|
421
|
-
when String then strenc(x)
|
422
|
-
when Numeric then numenc(x)
|
423
|
-
when true then "true"
|
424
|
-
when false then "false"
|
425
|
-
when nil then "null"
|
426
|
-
else
|
427
|
-
raise Error, "cannot encode #{x.class}: #{x.inspect}"
|
428
|
-
end
|
429
|
-
end
|
430
|
-
|
431
|
-
|
432
426
|
def objenc(x)
|
433
427
|
'{' + x.map{|k,v| keyenc(k) + ':' + valenc(v)}.join(',') + '}'
|
434
428
|
end
|
@@ -453,9 +447,6 @@ module Rack::Utils::OkJson
|
|
453
447
|
t.putc(?")
|
454
448
|
r = 0
|
455
449
|
|
456
|
-
# In ruby >= 1.9, s[r] is a codepoint, not a byte.
|
457
|
-
rubydoesenc = s.class.method_defined?(:encoding)
|
458
|
-
|
459
450
|
while r < s.length
|
460
451
|
case s[r]
|
461
452
|
when ?" then t.print('\\"')
|
@@ -467,15 +458,20 @@ module Rack::Utils::OkJson
|
|
467
458
|
when ?\t then t.print('\\t')
|
468
459
|
else
|
469
460
|
c = s[r]
|
470
|
-
|
471
|
-
|
461
|
+
# In ruby >= 1.9, s[r] is a codepoint, not a byte.
|
462
|
+
if rubydoesenc?
|
472
463
|
begin
|
473
|
-
c.ord
|
464
|
+
# c.ord will raise an error if c is invalid UTF-8
|
465
|
+
if c.ord < Spc.ord
|
466
|
+
c = "\\u%04x" % [c.ord]
|
467
|
+
end
|
474
468
|
t.write(c)
|
475
469
|
rescue
|
476
470
|
t.write(Ustrerr)
|
477
471
|
end
|
478
|
-
|
472
|
+
elsif c < Spc
|
473
|
+
t.write("\\u%04x" % c)
|
474
|
+
elsif Spc <= c && c <= ?~
|
479
475
|
t.putc(c)
|
480
476
|
else
|
481
477
|
n = ucharcopy(t, s, r) # ensure valid UTF-8 output
|
@@ -567,6 +563,11 @@ module Rack::Utils::OkJson
|
|
567
563
|
end
|
568
564
|
|
569
565
|
|
566
|
+
def rubydoesenc?
|
567
|
+
::String.method_defined?(:force_encoding)
|
568
|
+
end
|
569
|
+
|
570
|
+
|
570
571
|
class Utf8Error < ::StandardError
|
571
572
|
end
|
572
573
|
|
@@ -575,15 +576,15 @@ module Rack::Utils::OkJson
|
|
575
576
|
end
|
576
577
|
|
577
578
|
|
578
|
-
Utagx =
|
579
|
-
Utag2 =
|
580
|
-
Utag3 =
|
581
|
-
Utag4 =
|
582
|
-
Utag5 =
|
583
|
-
Umaskx =
|
584
|
-
Umask2 =
|
585
|
-
Umask3 =
|
586
|
-
Umask4 =
|
579
|
+
Utagx = 0b1000_0000
|
580
|
+
Utag2 = 0b1100_0000
|
581
|
+
Utag3 = 0b1110_0000
|
582
|
+
Utag4 = 0b1111_0000
|
583
|
+
Utag5 = 0b1111_1000
|
584
|
+
Umaskx = 0b0011_1111
|
585
|
+
Umask2 = 0b0001_1111
|
586
|
+
Umask3 = 0b0000_1111
|
587
|
+
Umask4 = 0b0000_0111
|
587
588
|
Uchar1max = (1<<7) - 1
|
588
589
|
Uchar2max = (1<<11) - 1
|
589
590
|
Uchar3max = (1<<16) - 1
|
data/rack.gemspec
CHANGED
data/test/spec_request.rb
CHANGED
@@ -93,6 +93,11 @@ describe Rack::Request do
|
|
93
93
|
req = Rack::Request.new \
|
94
94
|
Rack::MockRequest.env_for("/", "HTTP_HOST" => "localhost:81", "HTTP_X_FORWARDED_HOST" => "example.org", "SERVER_PORT" => "9393")
|
95
95
|
req.port.should.equal 80
|
96
|
+
|
97
|
+
req = Rack::Request.new \
|
98
|
+
Rack::MockRequest.env_for("/", "HTTP_HOST" => "localhost", "HTTP_X_FORWARDED_PROTO" => "https", "SERVER_PORT" => "80")
|
99
|
+
|
100
|
+
req.port.should.equal 443
|
96
101
|
end
|
97
102
|
|
98
103
|
should "figure out the correct host with port" do
|
@@ -859,6 +864,21 @@ EOF
|
|
859
864
|
lambda{ req.POST }.should.not.raise("input re-processed!")
|
860
865
|
end
|
861
866
|
|
867
|
+
should "use form_hash when form_input is a Tempfile" do
|
868
|
+
input = "{foo: 'bar'}"
|
869
|
+
|
870
|
+
rack_input = Tempfile.new("rackspec")
|
871
|
+
rack_input.write(input)
|
872
|
+
rack_input.rewind
|
873
|
+
|
874
|
+
req = Rack::Request.new Rack::MockRequest.env_for("/",
|
875
|
+
"rack.request.form_hash" => {'foo' => 'bar'},
|
876
|
+
"rack.request.form_input" => rack_input,
|
877
|
+
:input => rack_input)
|
878
|
+
|
879
|
+
req.POST.should.equal(req.env['rack.request.form_hash'])
|
880
|
+
end
|
881
|
+
|
862
882
|
should "conform to the Rack spec" do
|
863
883
|
app = lambda { |env|
|
864
884
|
content = Rack::Request.new(env).POST["file"].inspect
|
metadata
CHANGED
@@ -1,68 +1,64 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 5
|
9
|
-
- 2
|
10
|
-
version: 1.5.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.5.3
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Christian Neukirchen
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2015-05-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: bacon
|
22
|
-
|
23
|
-
|
24
|
-
none: false
|
25
|
-
requirements:
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
26
17
|
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
32
20
|
type: :development
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: rake
|
36
21
|
prerelease: false
|
37
|
-
|
38
|
-
|
39
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
40
31
|
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
version: "0"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
46
34
|
type: :development
|
47
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
48
41
|
description: |
|
49
42
|
Rack provides a minimal, modular and adaptable interface for developing
|
50
43
|
web applications in Ruby. By wrapping HTTP requests and responses in
|
51
44
|
the simplest way possible, it unifies and distills the API for web
|
52
45
|
servers, web frameworks, and software in between (the so-called
|
53
46
|
middleware) into a single method call.
|
54
|
-
|
55
|
-
Also see http://rack.github.com/.
|
56
47
|
|
48
|
+
Also see http://rack.github.com/.
|
57
49
|
email: chneukirchen@gmail.com
|
58
|
-
executables:
|
50
|
+
executables:
|
59
51
|
- rackup
|
60
52
|
extensions: []
|
61
|
-
|
62
|
-
extra_rdoc_files:
|
53
|
+
extra_rdoc_files:
|
63
54
|
- README.rdoc
|
64
55
|
- KNOWN-ISSUES
|
65
|
-
files:
|
56
|
+
files:
|
57
|
+
- COPYING
|
58
|
+
- KNOWN-ISSUES
|
59
|
+
- README.rdoc
|
60
|
+
- Rakefile
|
61
|
+
- SPEC
|
66
62
|
- bin/rackup
|
67
63
|
- contrib/rack.png
|
68
64
|
- contrib/rack.svg
|
@@ -71,6 +67,7 @@ files:
|
|
71
67
|
- example/lobster.ru
|
72
68
|
- example/protectedlobster.rb
|
73
69
|
- example/protectedlobster.ru
|
70
|
+
- lib/rack.rb
|
74
71
|
- lib/rack/auth/abstract/handler.rb
|
75
72
|
- lib/rack/auth/abstract/request.rb
|
76
73
|
- lib/rack/auth/basic.rb
|
@@ -94,6 +91,7 @@ files:
|
|
94
91
|
- lib/rack/directory.rb
|
95
92
|
- lib/rack/etag.rb
|
96
93
|
- lib/rack/file.rb
|
94
|
+
- lib/rack/handler.rb
|
97
95
|
- lib/rack/handler/cgi.rb
|
98
96
|
- lib/rack/handler/evented_mongrel.rb
|
99
97
|
- lib/rack/handler/fastcgi.rb
|
@@ -103,7 +101,6 @@ files:
|
|
103
101
|
- lib/rack/handler/swiftiplied_mongrel.rb
|
104
102
|
- lib/rack/handler/thin.rb
|
105
103
|
- lib/rack/handler/webrick.rb
|
106
|
-
- lib/rack/handler.rb
|
107
104
|
- lib/rack/head.rb
|
108
105
|
- lib/rack/lint.rb
|
109
106
|
- lib/rack/lobster.rb
|
@@ -112,10 +109,10 @@ files:
|
|
112
109
|
- lib/rack/methodoverride.rb
|
113
110
|
- lib/rack/mime.rb
|
114
111
|
- lib/rack/mock.rb
|
112
|
+
- lib/rack/multipart.rb
|
115
113
|
- lib/rack/multipart/generator.rb
|
116
114
|
- lib/rack/multipart/parser.rb
|
117
115
|
- lib/rack/multipart/uploaded_file.rb
|
118
|
-
- lib/rack/multipart.rb
|
119
116
|
- lib/rack/nulllogger.rb
|
120
117
|
- lib/rack/recursive.rb
|
121
118
|
- lib/rack/reloader.rb
|
@@ -133,9 +130,9 @@ files:
|
|
133
130
|
- lib/rack/showstatus.rb
|
134
131
|
- lib/rack/static.rb
|
135
132
|
- lib/rack/urlmap.rb
|
136
|
-
- lib/rack/utils/okjson.rb
|
137
133
|
- lib/rack/utils.rb
|
138
|
-
- lib/rack.rb
|
134
|
+
- lib/rack/utils/okjson.rb
|
135
|
+
- rack.gemspec
|
139
136
|
- test/builder/anything.rb
|
140
137
|
- test/builder/comment.ru
|
141
138
|
- test/builder/end.ru
|
@@ -230,46 +227,31 @@ files:
|
|
230
227
|
- test/testrequest.rb
|
231
228
|
- test/unregistered_handler/rack/handler/unregistered.rb
|
232
229
|
- test/unregistered_handler/rack/handler/unregistered_long_one.rb
|
233
|
-
- COPYING
|
234
|
-
- KNOWN-ISSUES
|
235
|
-
- rack.gemspec
|
236
|
-
- Rakefile
|
237
|
-
- README.rdoc
|
238
|
-
- SPEC
|
239
230
|
homepage: http://rack.github.com/
|
240
|
-
licenses:
|
231
|
+
licenses:
|
241
232
|
- MIT
|
233
|
+
metadata: {}
|
242
234
|
post_install_message:
|
243
235
|
rdoc_options: []
|
244
|
-
|
245
|
-
require_paths:
|
236
|
+
require_paths:
|
246
237
|
- lib
|
247
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
248
|
-
|
249
|
-
requirements:
|
238
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
239
|
+
requirements:
|
250
240
|
- - ">="
|
251
|
-
- !ruby/object:Gem::Version
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
version: "0"
|
256
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
|
-
none: false
|
258
|
-
requirements:
|
241
|
+
- !ruby/object:Gem::Version
|
242
|
+
version: '0'
|
243
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
244
|
+
requirements:
|
259
245
|
- - ">="
|
260
|
-
- !ruby/object:Gem::Version
|
261
|
-
|
262
|
-
segments:
|
263
|
-
- 0
|
264
|
-
version: "0"
|
246
|
+
- !ruby/object:Gem::Version
|
247
|
+
version: '0'
|
265
248
|
requirements: []
|
266
|
-
|
267
249
|
rubyforge_project: rack
|
268
|
-
rubygems_version:
|
250
|
+
rubygems_version: 2.4.6
|
269
251
|
signing_key:
|
270
|
-
specification_version:
|
252
|
+
specification_version: 4
|
271
253
|
summary: a modular Ruby webserver interface
|
272
|
-
test_files:
|
254
|
+
test_files:
|
273
255
|
- test/spec_auth_basic.rb
|
274
256
|
- test/spec_auth_digest.rb
|
275
257
|
- test/spec_body_proxy.rb
|