rack 1.5.5 → 1.6.0.beta

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.

Potentially problematic release.


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

Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/KNOWN-ISSUES +14 -0
  3. data/README.rdoc +10 -6
  4. data/Rakefile +3 -4
  5. data/SPEC +59 -23
  6. data/lib/rack.rb +2 -1
  7. data/lib/rack/auth/abstract/request.rb +1 -1
  8. data/lib/rack/auth/basic.rb +1 -1
  9. data/lib/rack/auth/digest/md5.rb +1 -1
  10. data/lib/rack/backports/uri/common_18.rb +1 -1
  11. data/lib/rack/builder.rb +19 -4
  12. data/lib/rack/cascade.rb +2 -2
  13. data/lib/rack/chunked.rb +12 -1
  14. data/lib/rack/commonlogger.rb +13 -5
  15. data/lib/rack/conditionalget.rb +14 -2
  16. data/lib/rack/content_length.rb +5 -1
  17. data/lib/rack/deflater.rb +52 -13
  18. data/lib/rack/directory.rb +8 -2
  19. data/lib/rack/etag.rb +14 -6
  20. data/lib/rack/file.rb +10 -14
  21. data/lib/rack/handler.rb +2 -0
  22. data/lib/rack/handler/fastcgi.rb +4 -1
  23. data/lib/rack/handler/mongrel.rb +8 -2
  24. data/lib/rack/handler/scgi.rb +4 -1
  25. data/lib/rack/handler/thin.rb +8 -2
  26. data/lib/rack/handler/webrick.rb +46 -6
  27. data/lib/rack/head.rb +7 -2
  28. data/lib/rack/lint.rb +73 -25
  29. data/lib/rack/lobster.rb +8 -3
  30. data/lib/rack/methodoverride.rb +14 -3
  31. data/lib/rack/mime.rb +1 -15
  32. data/lib/rack/mock.rb +15 -7
  33. data/lib/rack/multipart.rb +2 -2
  34. data/lib/rack/multipart/parser.rb +107 -53
  35. data/lib/rack/multipart/uploaded_file.rb +2 -2
  36. data/lib/rack/nulllogger.rb +21 -2
  37. data/lib/rack/request.rb +38 -24
  38. data/lib/rack/response.rb +5 -0
  39. data/lib/rack/sendfile.rb +10 -5
  40. data/lib/rack/server.rb +45 -17
  41. data/lib/rack/session/abstract/id.rb +7 -6
  42. data/lib/rack/session/cookie.rb +17 -7
  43. data/lib/rack/session/memcache.rb +4 -4
  44. data/lib/rack/session/pool.rb +3 -6
  45. data/lib/rack/showexceptions.rb +20 -11
  46. data/lib/rack/showstatus.rb +1 -1
  47. data/lib/rack/static.rb +27 -30
  48. data/lib/rack/tempfile_reaper.rb +22 -0
  49. data/lib/rack/urlmap.rb +17 -3
  50. data/lib/rack/utils.rb +78 -47
  51. data/lib/rack/utils/okjson.rb +90 -91
  52. data/rack.gemspec +3 -3
  53. data/test/multipart/filename_and_no_name +6 -0
  54. data/test/multipart/invalid_character +6 -0
  55. data/test/spec_builder.rb +13 -4
  56. data/test/spec_chunked.rb +16 -0
  57. data/test/spec_commonlogger.rb +36 -0
  58. data/test/spec_content_length.rb +3 -1
  59. data/test/spec_deflater.rb +283 -148
  60. data/test/spec_etag.rb +11 -2
  61. data/test/spec_file.rb +11 -3
  62. data/test/spec_head.rb +2 -0
  63. data/test/spec_lobster.rb +1 -1
  64. data/test/spec_mock.rb +8 -0
  65. data/test/spec_multipart.rb +111 -49
  66. data/test/spec_request.rb +109 -25
  67. data/test/spec_response.rb +30 -0
  68. data/test/spec_server.rb +20 -5
  69. data/test/spec_session_cookie.rb +45 -2
  70. data/test/spec_session_memcache.rb +1 -1
  71. data/test/spec_showexceptions.rb +29 -36
  72. data/test/spec_showstatus.rb +19 -0
  73. data/test/spec_tempfile_reaper.rb +63 -0
  74. data/test/spec_urlmap.rb +23 -0
  75. data/test/spec_utils.rb +60 -10
  76. data/test/spec_webrick.rb +41 -0
  77. metadata +12 -9
  78. data/test/cgi/lighttpd.errors +0 -1
  79. data/test/multipart/three_files_three_fields +0 -31
@@ -139,5 +139,46 @@ describe Rack::Handler::WEBrick do
139
139
  }
140
140
  end
141
141
 
142
+ should "support Rack partial hijack" do
143
+ io_lambda = lambda{ |io|
144
+ 5.times do
145
+ io.write "David\r\n"
146
+ end
147
+ io.close
148
+ }
149
+
150
+ @server.mount "/partial", Rack::Handler::WEBrick,
151
+ Rack::Lint.new(lambda{ |req|
152
+ [
153
+ 200,
154
+ {"rack.hijack" => io_lambda},
155
+ [""]
156
+ ]
157
+ })
158
+
159
+ Net::HTTP.start(@host, @port){ |http|
160
+ res = http.get("/partial")
161
+ res.body.should.equal "David\r\nDavid\r\nDavid\r\nDavid\r\nDavid\r\n"
162
+ }
163
+ end
164
+
165
+ should "produce correct HTTP semantics with and without app chunking" do
166
+ @server.mount "/chunked", Rack::Handler::WEBrick,
167
+ Rack::Lint.new(lambda{ |req|
168
+ [
169
+ 200,
170
+ {"Transfer-Encoding" => "chunked"},
171
+ ["7\r\nchunked\r\n0\r\n\r\n"]
172
+ ]
173
+ })
174
+
175
+ Net::HTTP.start(@host, @port){ |http|
176
+ res = http.get("/chunked")
177
+ res["Transfer-Encoding"].should.equal "chunked"
178
+ res["Content-Length"].should.equal nil
179
+ res.body.should.equal "chunked"
180
+ }
181
+ end
182
+
142
183
  @server.shutdown
143
184
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.5
4
+ version: 1.6.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Neukirchen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-18 00:00:00.000000000 Z
11
+ date: 2014-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bacon
@@ -45,7 +45,7 @@ description: |
45
45
  servers, web frameworks, and software in between (the so-called
46
46
  middleware) into a single method call.
47
47
 
48
- Also see http://rack.github.com/.
48
+ Also see http://rack.github.io/.
49
49
  email: chneukirchen@gmail.com
50
50
  executables:
51
51
  - rackup
@@ -129,6 +129,7 @@ files:
129
129
  - lib/rack/showexceptions.rb
130
130
  - lib/rack/showstatus.rb
131
131
  - lib/rack/static.rb
132
+ - lib/rack/tempfile_reaper.rb
132
133
  - lib/rack/urlmap.rb
133
134
  - lib/rack/utils.rb
134
135
  - lib/rack/utils/okjson.rb
@@ -145,7 +146,6 @@ files:
145
146
  - test/cgi/assets/javascripts/app.js
146
147
  - test/cgi/assets/stylesheets/app.css
147
148
  - test/cgi/lighttpd.conf
148
- - test/cgi/lighttpd.errors
149
149
  - test/cgi/rackup_stub.rb
150
150
  - test/cgi/sample_rackup.ru
151
151
  - test/cgi/test
@@ -160,6 +160,7 @@ files:
160
160
  - test/multipart/fail_16384_nofile
161
161
  - test/multipart/file1.txt
162
162
  - test/multipart/filename_and_modification_param
163
+ - test/multipart/filename_and_no_name
163
164
  - test/multipart/filename_with_escaped_quotes
164
165
  - test/multipart/filename_with_escaped_quotes_and_modification_param
165
166
  - test/multipart/filename_with_percent_escaped_quotes
@@ -168,12 +169,12 @@ files:
168
169
  - test/multipart/filename_with_unescaped_percentages3
169
170
  - test/multipart/filename_with_unescaped_quotes
170
171
  - test/multipart/ie
172
+ - test/multipart/invalid_character
171
173
  - test/multipart/mixed_files
172
174
  - test/multipart/nested
173
175
  - test/multipart/none
174
176
  - test/multipart/semicolon
175
177
  - test/multipart/text
176
- - test/multipart/three_files_three_fields
177
178
  - test/multipart/webkit
178
179
  - test/rackup/config.ru
179
180
  - test/registering_handler/rack/handler/registering_myself.rb
@@ -220,6 +221,7 @@ files:
220
221
  - test/spec_showexceptions.rb
221
222
  - test/spec_showstatus.rb
222
223
  - test/spec_static.rb
224
+ - test/spec_tempfile_reaper.rb
223
225
  - test/spec_thin.rb
224
226
  - test/spec_urlmap.rb
225
227
  - test/spec_utils.rb
@@ -229,7 +231,7 @@ files:
229
231
  - test/testrequest.rb
230
232
  - test/unregistered_handler/rack/handler/unregistered.rb
231
233
  - test/unregistered_handler/rack/handler/unregistered_long_one.rb
232
- homepage: http://rack.github.com/
234
+ homepage: http://rack.github.io/
233
235
  licenses:
234
236
  - MIT
235
237
  metadata: {}
@@ -244,12 +246,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
244
246
  version: '0'
245
247
  required_rubygems_version: !ruby/object:Gem::Requirement
246
248
  requirements:
247
- - - ">="
249
+ - - ">"
248
250
  - !ruby/object:Gem::Version
249
- version: '0'
251
+ version: 1.3.1
250
252
  requirements: []
251
253
  rubyforge_project: rack
252
- rubygems_version: 2.4.5
254
+ rubygems_version: 2.2.2
253
255
  signing_key:
254
256
  specification_version: 4
255
257
  summary: a modular Ruby webserver interface
@@ -297,6 +299,7 @@ test_files:
297
299
  - test/spec_showexceptions.rb
298
300
  - test/spec_showstatus.rb
299
301
  - test/spec_static.rb
302
+ - test/spec_tempfile_reaper.rb
300
303
  - test/spec_thin.rb
301
304
  - test/spec_urlmap.rb
302
305
  - test/spec_utils.rb
@@ -1 +0,0 @@
1
- 2015-06-16 14:11:43: (log.c.164) server started
@@ -1,31 +0,0 @@
1
- --AaB03x
2
- content-disposition: form-data; name="reply"
3
-
4
- yes
5
- --AaB03x
6
- content-disposition: form-data; name="to"
7
-
8
- people
9
- --AaB03x
10
- content-disposition: form-data; name="from"
11
-
12
- others
13
- --AaB03x
14
- content-disposition: form-data; name="fileupload1"; filename="file1.jpg"
15
- Content-Type: image/jpeg
16
- Content-Transfer-Encoding: base64
17
-
18
- /9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
19
- --AaB03x
20
- content-disposition: form-data; name="fileupload2"; filename="file2.jpg"
21
- Content-Type: image/jpeg
22
- Content-Transfer-Encoding: base64
23
-
24
- /9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
25
- --AaB03x
26
- content-disposition: form-data; name="fileupload3"; filename="file3.jpg"
27
- Content-Type: image/jpeg
28
- Content-Transfer-Encoding: base64
29
-
30
- /9j/4AAQSkZJRgABAQAAAQABAAD//gA+Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcg
31
- --AaB03x--