rack 1.6.11 → 2.0.1

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 (143) hide show
  1. checksums.yaml +5 -5
  2. data/COPYING +1 -1
  3. data/HISTORY.md +138 -8
  4. data/README.rdoc +17 -25
  5. data/Rakefile +6 -14
  6. data/SPEC +8 -9
  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/{conditionalget.rb → conditional_get.rb} +0 -0
  18. data/lib/rack/content_length.rb +2 -2
  19. data/lib/rack/deflater.rb +4 -4
  20. data/lib/rack/directory.rb +66 -54
  21. data/lib/rack/etag.rb +4 -3
  22. data/lib/rack/events.rb +154 -0
  23. data/lib/rack/file.rb +63 -39
  24. data/lib/rack/handler/cgi.rb +15 -16
  25. data/lib/rack/handler/fastcgi.rb +13 -14
  26. data/lib/rack/handler/lsws.rb +11 -11
  27. data/lib/rack/handler/scgi.rb +15 -15
  28. data/lib/rack/handler/thin.rb +3 -0
  29. data/lib/rack/handler/webrick.rb +22 -24
  30. data/lib/rack/handler.rb +3 -25
  31. data/lib/rack/head.rb +15 -17
  32. data/lib/rack/lint.rb +38 -38
  33. data/lib/rack/lobster.rb +1 -1
  34. data/lib/rack/lock.rb +6 -10
  35. data/lib/rack/logger.rb +2 -2
  36. data/lib/rack/media_type.rb +38 -0
  37. data/lib/rack/{methodoverride.rb → method_override.rb} +4 -11
  38. data/lib/rack/mime.rb +18 -5
  39. data/lib/rack/mock.rb +35 -53
  40. data/lib/rack/multipart/generator.rb +5 -5
  41. data/lib/rack/multipart/parser.rb +272 -158
  42. data/lib/rack/multipart/uploaded_file.rb +1 -2
  43. data/lib/rack/multipart.rb +35 -6
  44. data/lib/rack/{nulllogger.rb → null_logger.rb} +1 -1
  45. data/lib/rack/query_parser.rb +192 -0
  46. data/lib/rack/recursive.rb +8 -8
  47. data/lib/rack/request.rb +383 -307
  48. data/lib/rack/response.rb +129 -56
  49. data/lib/rack/rewindable_input.rb +1 -12
  50. data/lib/rack/runtime.rb +10 -18
  51. data/lib/rack/sendfile.rb +5 -7
  52. data/lib/rack/server.rb +31 -25
  53. data/lib/rack/session/abstract/id.rb +108 -72
  54. data/lib/rack/session/cookie.rb +25 -18
  55. data/lib/rack/session/memcache.rb +2 -2
  56. data/lib/rack/session/pool.rb +9 -9
  57. data/lib/rack/show_exceptions.rb +386 -0
  58. data/lib/rack/{showstatus.rb → show_status.rb} +3 -3
  59. data/lib/rack/static.rb +30 -5
  60. data/lib/rack/tempfile_reaper.rb +2 -2
  61. data/lib/rack/urlmap.rb +15 -14
  62. data/lib/rack/utils.rb +135 -210
  63. data/lib/rack.rb +70 -21
  64. data/rack.gemspec +7 -5
  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_null_byte → filename_with_single_quote} +1 -1
  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 +36 -34
  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 +66 -40
  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 +107 -77
  94. data/test/spec_handler.rb +19 -34
  95. data/test/spec_head.rb +15 -14
  96. data/test/spec_lint.rb +162 -197
  97. data/test/spec_lobster.rb +24 -23
  98. data/test/spec_lock.rb +69 -39
  99. data/test/spec_logger.rb +4 -3
  100. data/test/spec_media_type.rb +42 -0
  101. data/test/spec_method_override.rb +83 -0
  102. data/test/spec_mime.rb +19 -19
  103. data/test/spec_mock.rb +196 -151
  104. data/test/spec_multipart.rb +317 -201
  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 +768 -607
  108. data/test/spec_response.rb +214 -111
  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 +28 -0
  115. data/test/spec_session_cookie.rb +97 -65
  116. data/test/spec_session_memcache.rb +60 -61
  117. data/test/spec_session_pool.rb +45 -44
  118. data/test/spec_show_exceptions.rb +80 -0
  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 +91 -67
  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 +103 -68
  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_methodoverride.rb +0 -111
  142. data/test/spec_mongrel.rb +0 -182
  143. data/test/spec_showexceptions.rb +0 -98
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: b455a83d19e7b00bb4feb2287b28116434155cf52ea772cb9b532495f49938cc
4
- data.tar.gz: 99a947eaf73e0207a642c92398e26062d5dc508455c72447e865a6aaec86dc5b
2
+ SHA1:
3
+ metadata.gz: f4e9c67e795c425f3e8faa0d0fe8d48daba757e5
4
+ data.tar.gz: bf8c0c20c6310e7bd53e8b20c8c4946b1205eb65
5
5
  SHA512:
6
- metadata.gz: ecc84a2788ac063238c547ea118a1e14624ace7ebc683cbf34842e57f5d4ac6fd843c4be0c3e717d7351da297a5e664f7b93255c2b37f3a73dc0939a4eb5596f
7
- data.tar.gz: ff727aec584e743839a3a9c3fbe9f88d3c6c481b3f9fdf6f472a182b6caef19de7835c9a5222359fe5bb296eab79030df880e220756693fbc244b7fd5f05756c
6
+ metadata.gz: 5540bc2b6de513db3c5c494e6e32229087fb20040c4670a8c2215a9ea5a04b010ac9b5143cc3703ab73df0417234a416e49370fb3eafc85bde1c569e521c0612
7
+ data.tar.gz: f2af8aa5ee53427248393dd707ca34428d18b064c3081a3db663cd0f1e6f35e4b18ce54f607f7cea3c56569ef2552240dd55d0c4ff7006e0e2ab80db3800a933
data/COPYING CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2007-2015 Christian Neukirchen <purl.org/net/chneukirchen>
1
+ Copyright (c) 2007-2016 Christian Neukirchen <purl.org/net/chneukirchen>
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to
data/HISTORY.md CHANGED
@@ -14,21 +14,149 @@ Sun Dec 4 18:48:03 2015 Jeremy Daer <jeremydaer@gmail.com>
14
14
  Thanks to Ben Toews (@mastahyeti) and Bob Long (@bobjflong) for
15
15
  updating to drafts 5 and 7.
16
16
 
17
- Wed Jun 24 12:13:37 2015 Aaron Patterson <tenderlove@ruby-lang.org>
17
+ Tue Nov 3 16:17:26 2015 Aaron Patterson <tenderlove@ruby-lang.org>
18
18
 
19
- * Fix Ruby 1.8 backwards compatibility
19
+ * Add `Rack::Events` middleware for adding event based middleware:
20
+ middleware that does not care about the response body, but only cares
21
+ about doing work at particular points in the request / response
22
+ lifecycle.
20
23
 
21
- Fri Jun 19 07:14:50 2015 Matthew Draper <matthew@trebex.net>
24
+ Thu Oct 8 14:58:46 2015 Aaron Patterson <tenderlove@ruby-lang.org>
22
25
 
23
- * Work around a Rails incompatibility in our private API
26
+ * Add `Rack::Request#authority` to calculate the authority under which
27
+ the response is being made (this will be handy for h2 pushes).
28
+
29
+ Tue Oct 6 13:19:04 2015 Aaron Patterson <tenderlove@ruby-lang.org>
30
+
31
+ * Add `Rack::Response::Helpers#cache_control` and `cache_control=`.
32
+ Use this for setting cache control headers on your response objects.
33
+
34
+ Tue Oct 6 13:12:21 2015 Aaron Patterson <tenderlove@ruby-lang.org>
35
+
36
+ * Add `Rack::Response::Helpers#etag` and `etag=`. Use this for
37
+ setting etag values on the response.
38
+
39
+ Sun Oct 3 18:25:03 2015 Jeremy Daer <jeremydaer@gmail.com>
40
+
41
+ * Introduce `Rack::Response::Helpers#add_header` to add a value to a
42
+ multi-valued response header. Implemented in terms of other
43
+ `Response#*_header` methods, so it's available to any response-like
44
+ class that includes the `Helpers` module.
45
+
46
+ * Add `Rack::Request#add_header` to match.
47
+
48
+ Fri Sep 4 18:34:53 2015 Aaron Patterson <tenderlove@ruby-lang.org>
49
+
50
+ * `Rack::Session::Abstract::ID` IS DEPRECATED. Please switch to
51
+ `Rack::Session::Abstract::Persisted`.
52
+ `Rack::Session::Abstract::Persisted` uses a request object rather than
53
+ the `env` hash.
54
+
55
+ Fri Sep 4 17:32:12 2015 Aaron Patterson <tenderlove@ruby-lang.org>
56
+
57
+ * Pull `ENV` access inside the request object in to a module. This
58
+ will help with legacy Request objects that are ENV based but don't
59
+ want to inherit from Rack::Request
60
+
61
+ Fri Sep 4 16:09:11 2015 Aaron Patterson <tenderlove@ruby-lang.org>
62
+
63
+ * Move most methods on the `Rack::Request` to a module
64
+ `Rack::Request::Helpers` and use public API to get values from the
65
+ request object. This enables users to mix `Rack::Request::Helpers` in
66
+ to their own objects so they can implement
67
+ `(get|set|fetch|each)_header` as they see fit (for example a proxy
68
+ object).
69
+
70
+ Fri Sep 4 14:15:32 2015 Aaron Patterson <tenderlove@ruby-lang.org>
71
+
72
+ * Files and directories with + in the name are served correctly.
73
+ Rather than unescaping paths like a form, we unescape with a URI
74
+ parser using `Rack::Utils.unescape_path`. Fixes #265
75
+
76
+ Thu Aug 27 15:43:48 2015 Aaron Patterson <tenderlove@ruby-lang.org>
77
+
78
+ * Tempfiles are automatically closed in the case that there were too
79
+ many posted.
80
+
81
+ Thu Aug 27 11:00:03 2015 Aaron Patterson <tenderlove@ruby-lang.org>
82
+
83
+ * Added methods for manipulating response headers that don't assume
84
+ they're stored as a Hash. Response-like classes may include the
85
+ Rack::Response::Helpers module if they define these methods:
86
+
87
+ * Rack::Response#has_header?
88
+ * Rack::Response#get_header
89
+ * Rack::Response#set_header
90
+ * Rack::Response#delete_header
91
+
92
+ Mon Aug 24 18:05:23 2015 Aaron Patterson <tenderlove@ruby-lang.org>
93
+
94
+ * Introduce Util.get_byte_ranges that will parse the value of the
95
+ HTTP_RANGE string passed to it without depending on the `env` hash.
96
+ `byte_ranges` is deprecated in favor of this method.
97
+
98
+ Sat Aug 22 17:49:49 2015 Aaron Patterson <tenderlove@ruby-lang.org>
99
+
100
+ * Change Session internals to use Request objects for looking up
101
+ session information. This allows us to only allocate one request
102
+ object when dealing with session objects (rather than doing it every
103
+ time we need to manipulate cookies, etc).
104
+
105
+ Fri Aug 21 16:30:51 2015 Aaron Patterson <tenderlove@ruby-lang.org>
106
+
107
+ * Add `Rack::Request#initialize_copy` so that the env is duped when
108
+ the request gets duped.
109
+
110
+ Thu Aug 20 16:20:58 2015 Aaron Patterson <tenderlove@ruby-lang.org>
111
+
112
+ * Added methods for manipulating request specific data. This includes
113
+ data set as CGI parameters, and just any arbitrary data the user wants
114
+ to associate with a particular request. New methods:
115
+
116
+ * Rack::Request#has_header?
117
+ * Rack::Request#get_header
118
+ * Rack::Request#fetch_header
119
+ * Rack::Request#each_header
120
+ * Rack::Request#set_header
121
+ * Rack::Request#delete_header
122
+
123
+ Thu Jun 18 16:00:05 2015 Aaron Patterson <tenderlove@ruby-lang.org>
124
+
125
+ * lib/rack/utils.rb: add a method for constructing "delete" cookie
126
+ headers. This allows us to construct cookie headers without depending
127
+ on the side effects of mutating a hash.
24
128
 
25
129
  Fri Jun 12 11:37:41 2015 Aaron Patterson <tenderlove@ruby-lang.org>
26
130
 
27
131
  * Prevent extremely deep parameters from being parsed. CVE-2015-3225
28
132
 
29
- ### December 18th, Thirty sixth public release 1.6.0
30
-
31
- ### February 7th, Thirty fifth public release 1.5.2
133
+ ### May 6th, 2015, Thirty seventh public release 1.6.1
134
+ - Fix CVE-2014-9490, denial of service attack in OkJson ([8cd610](https://github.com/rack/rack/commit/8cd61062954f70e0a03e2855704e95ff4bdd4f6e))
135
+ - Use a monotonic time for Rack::Runtime, if available ([d170b2](https://github.com/rack/rack/commit/d170b2363c949dce60871f9d5a6bfc83da2bedb5))
136
+ - RACK_MULTIPART_LIMIT changed to RACK_MULTIPART_PART_LIMIT (RACK_MULTIPART_LIMIT is deprecated and will be removed in 1.7.0) ([c096c5](https://github.com/rack/rack/commit/c096c50c00230d8eee13ad5f79ad027d9a3f3ca9))
137
+ - See the full [git history](https://github.com/rack/rack/compare/1.6.0...1.6.1) and [milestone tag](https://github.com/rack/rack/issues?utf8=%E2%9C%93&q=milestone%3A%22Rack+1.6%22)
138
+
139
+ ### May 6th, 2015, Thirty seventh public release 1.5.3
140
+ - Fix CVE-2014-9490, denial of service attack in OkJson ([99f725](https://github.com/rack/rack/commit/99f725b583b357376ffbb7b3b042c5daa3106ad6))
141
+ - Backport bug fixes to 1.5 series ([#585](https://github.com/rack/rack/pull/585), [#711](https://github.com/rack/rack/pull/711), [#756](https://github.com/rack/rack/pull/756))
142
+ - See the full [git history](https://github.com/rack/rack/compare/1.5.2...1.5.3) and [milestone tag](https://github.com/rack/rack/issues?utf8=%E2%9C%93&q=milestone%3A%22Rack+1.5.3%22)
143
+
144
+ ### December 18th, 2014, Thirty sixth public release 1.6.0
145
+ - Response#unauthorized? helper ([#580](https://github.com/rack/rack/pull/580))
146
+ - Deflater now accepts an options hash to control compression on a per-request level ([#457](https://github.com/rack/rack/pull/457))
147
+ - Builder#warmup method for app preloading ([#617](https://github.com/rack/rack/pull/617))
148
+ - Request#accept_language method to extract HTTP_ACCEPT_LANGUAGE ([#623](https://github.com/rack/rack/pull/623))
149
+ - Add quiet mode of rack server, rackup --quiet ([#674](https://github.com/rack/rack/pull/674))
150
+ - Update HTTP Status Codes to RFC 7231 ([#754](https://github.com/rack/rack/pull/754))
151
+ - Less strict header name validation according to [RFC 2616](https://tools.ietf.org/html/rfc2616) ([#399](https://github.com/rack/rack/pull/399))
152
+ - SPEC updated to specify headers conform to RFC7230 specification ([6839fc](https://github.com/rack/rack/commit/6839fc203339f021cb3267fb09cba89410f086e9))
153
+ - Etag correctly marks etags as weak ([#681](https://github.com/rack/rack/issues/681))
154
+ - Request#port supports multiple x-http-forwarded-proto values ([#669](https://github.com/rack/rack/pull/669))
155
+ - Utils#multipart_part_limit configures the maximum number of parts a request can contain ([#684](https://github.com/rack/rack/pull/684))
156
+ - Default host to localhost when in development mode ([#514](https://github.com/rack/rack/pull/514))
157
+ - Various bugfixes and performance improvements (See the full [git history](https://github.com/rack/rack/compare/1.5.2...1.6.0) and [milestone tag](https://github.com/rack/rack/issues?utf8=%E2%9C%93&q=milestone%3A%22Rack+1.6%22))
158
+
159
+ ### February 7th, 2013, Thirty fifth public release 1.5.2
32
160
  - Fix CVE-2013-0263, timing attack against Rack::Session::Cookie
33
161
  - Fix CVE-2013-0262, symlink path traversal in Rack::File
34
162
  - Add various methods to Session for enhanced Rails compatibility
@@ -38,7 +166,7 @@ Fri Jun 12 11:37:41 2015 Aaron Patterson <tenderlove@ruby-lang.org>
38
166
  - Fix a race condition that could result in overwritten pidfiles
39
167
  - Various documentation additions
40
168
 
41
- ### February 7th, Thirty fifth public release 1.4.5
169
+ ### February 7th, 2013, Thirty fifth public release 1.4.5
42
170
  - Fix CVE-2013-0263, timing attack against Rack::Session::Cookie
43
171
  - Fix CVE-2013-0262, symlink path traversal in Rack::File
44
172
 
@@ -373,3 +501,5 @@ Fri Jun 12 11:37:41 2015 Aaron Patterson <tenderlove@ruby-lang.org>
373
501
  - Removed Rails adapter, was too alpha.
374
502
 
375
503
  ### March 3rd, 2007: First public release 0.1.
504
+
505
+ /* vim: set filetype=changelog */
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = Rack, a modular Ruby webserver interface {<img src="https://secure.travis-ci.org/rack/rack.svg" alt="Build Status" />}[http://travis-ci.org/rack/rack] {<img src="https://gemnasium.com/rack/rack.svg" alt="Dependency Status" />}[https://gemnasium.com/rack/rack]
2
2
 
3
- Rack provides a minimal, modular and adaptable interface for developing
3
+ Rack provides a minimal, modular, and adaptable interface for developing
4
4
  web applications in Ruby. By wrapping HTTP requests and responses in
5
5
  the simplest way possible, it unifies and distills the API for web
6
6
  servers, web frameworks, and software in between (the so-called
@@ -12,9 +12,6 @@ which all Rack applications should conform to.
12
12
  == Supported web servers
13
13
 
14
14
  The included *handlers* connect all kinds of web servers to Rack:
15
- * Mongrel
16
- * EventedMongrel
17
- * SwiftipliedMongrel
18
15
  * WEBrick
19
16
  * FCGI
20
17
  * CGI
@@ -28,13 +25,11 @@ These web servers include Rack handlers in their distributions:
28
25
  * Glassfish v3
29
26
  * Phusion Passenger (which is mod_rack for Apache and for nginx)
30
27
  * Puma
31
- * Rainbows!
32
28
  * Reel
33
29
  * Unicorn
34
30
  * unixrack
35
31
  * uWSGI
36
32
  * yahns
37
- * Zbatery
38
33
 
39
34
  Any valid Rack app will run the same on all these handlers, without
40
35
  changing anything.
@@ -103,8 +98,8 @@ Rack::Builder DSL to configure middleware and build up applications
103
98
  easily.
104
99
 
105
100
  rackup automatically figures out the environment it is run in, and
106
- runs your application as FastCGI, CGI, or standalone with Mongrel or
107
- WEBrick---all from the same configuration.
101
+ runs your application as FastCGI, CGI, or WEBrick---all from the
102
+ same configuration.
108
103
 
109
104
  == Quick start
110
105
 
@@ -141,19 +136,17 @@ Or:
141
136
 
142
137
  bundle install # this assumes that you have installed native extensions!
143
138
 
144
- There are two rake-based test tasks:
139
+ There is a rake-based test task:
145
140
 
146
- rake test tests all the fast tests (no Handlers or Adapters)
147
- rake fulltest runs all the tests
141
+ rake test tests all the tests
148
142
 
149
- The fast testsuite has no dependencies outside of the core Ruby
143
+ The testsuite has no dependencies outside of the core Ruby
150
144
  installation and bacon.
151
145
 
152
146
  To run the test suite completely, you need:
153
147
 
154
148
  * fcgi
155
149
  * memcache-client
156
- * mongrel
157
150
  * thin
158
151
 
159
152
  The full set of tests test FCGI access with lighttpd (on port
@@ -209,7 +202,7 @@ Can also be set via the RACK_MULTIPART_PART_LIMIT environment variable.
209
202
 
210
203
  == History
211
204
 
212
- See <https://github.com/rack/HISTORY.md>.
205
+ See <https://github.com/rack/rack/blob/master/HISTORY.md>.
213
206
 
214
207
  == Contact
215
208
 
@@ -235,19 +228,19 @@ You are also welcome to join the #rack channel on irc.freenode.net.
235
228
 
236
229
  The Rack Core Team, consisting of
237
230
 
238
- * Christian Neukirchen (chneukirchen)
239
- * James Tucker (raggi)
240
- * Josh Peek (josh)
241
- * José Valim (josevalim)
242
- * Michael Fellinger (manveru)
243
- * Aaron Patterson (tenderlove)
244
- * Santiago Pastorino (spastorino)
245
- * Konstantin Haase (rkh)
231
+ * Christian Neukirchen (chneukirchen[https://github.com/chneukirchen])
232
+ * James Tucker (raggi[https://github.com/raggi])
233
+ * Josh Peek (josh[https://github.com/josh])
234
+ * José Valim (josevalim[https://github.com/josevalim])
235
+ * Michael Fellinger (manveru[https://github.com/manveru])
236
+ * Aaron Patterson (tenderlove[https://github.com/tenderlove])
237
+ * Santiago Pastorino (spastorino[https://github.com/spastorino])
238
+ * Konstantin Haase (rkh[https://github.com/rkh])
246
239
 
247
240
  and the Rack Alumnis
248
241
 
249
- * Ryan Tomayko (rtomayko)
250
- * Scytrin dai Kinthra (scytrin)
242
+ * Ryan Tomayko (rtomayko[https://github.com/rtomayko])
243
+ * Scytrin dai Kinthra (scytrin[https://github.com/scytrin])
251
244
 
252
245
  would like to thank:
253
246
 
@@ -309,4 +302,3 @@ rack-devel mailing list:: <https://groups.google.com/group/rack-devel>
309
302
  Rack's Rubyforge project:: <http://rubyforge.org/projects/rack>
310
303
 
311
304
  Christian Neukirchen:: <http://chneukirchen.org/>
312
-
data/Rakefile CHANGED
@@ -36,7 +36,7 @@ task :officialrelease_really => %w[SPEC dist gem] do
36
36
  end
37
37
 
38
38
  def release
39
- "rack-#{File.read("rack.gemspec")[/s.version *= *"(.*?)"/, 1]}"
39
+ "rack-" + File.read('lib/rack.rb')[/RELEASE += +([\"\'])([\d][\w\.]+)\1/, 2]
40
40
  end
41
41
 
42
42
  desc "Make binaries executable"
@@ -52,7 +52,7 @@ file '.git/index'
52
52
  file "ChangeLog" => '.git/index' do
53
53
  File.open("ChangeLog", "w") { |out|
54
54
  log = `git log -z`
55
- log.force_encoding(Encoding::BINARY) if log.respond_to?(:force_encoding)
55
+ log.force_encoding(Encoding::BINARY)
56
56
  log.split("\0").map { |chunk|
57
57
  author = chunk[/Author: (.*)/, 1].strip
58
58
  date = chunk[/Date: (.*)/, 1].strip
@@ -82,22 +82,14 @@ end
82
82
 
83
83
  desc "Run all the fast + platform agnostic tests"
84
84
  task :test => 'SPEC' do
85
- opts = ENV['TEST'] || '-a'
86
- specopts = ENV['TESTOPTS'] ||
87
- "-q -t '^(?!Rack::Adapter|Rack::Session::Memcache|Rack::Server|Rack::Handler)'"
85
+ opts = ENV['TEST'] || ''
86
+ specopts = ENV['TESTOPTS']
88
87
 
89
- sh "bacon -w -I./lib:./test #{opts} #{specopts}"
88
+ sh "ruby -I./lib:./test -S minitest #{opts} #{specopts} test/gemloader.rb test/spec*.rb"
90
89
  end
91
90
 
92
91
  desc "Run all the tests we run on CI"
93
- task :ci => :fulltest
94
-
95
- desc "Run all the tests"
96
- task :fulltest => %w[SPEC chmod] do
97
- opts = ENV['TEST'] || '-a'
98
- specopts = ENV['TESTOPTS'] || '-q'
99
- sh "bacon -r./test/gemloader -I./lib:./test -w #{opts} #{specopts}"
100
- end
92
+ task :ci => :test
101
93
 
102
94
  task :gem => ["SPEC"] do
103
95
  sh "gem build rack.gemspec"
data/SPEC CHANGED
@@ -35,7 +35,7 @@ below.
35
35
  empty string, if the request URL targets
36
36
  the application root and does not have a
37
37
  trailing slash. This value may be
38
- percent-encoded when I originating from
38
+ percent-encoded when originating from
39
39
  a URL.
40
40
  <tt>QUERY_STRING</tt>:: The portion of the request URL that
41
41
  follows the <tt>?</tt>, if any. May be
@@ -60,8 +60,8 @@ below.
60
60
  the presence or absence of the
61
61
  appropriate HTTP header in the
62
62
  request. See
63
- <a href="https://tools.ietf.org/html/rfc3875#section-4.1.18">
64
- RFC3875 section 4.1.18</a> for
63
+ {https://tools.ietf.org/html/rfc3875#section-4.1.18
64
+ RFC3875 section 4.1.18} for
65
65
  specific behavior.
66
66
  In addition to this, the Rack environment must include these
67
67
  Rack-specific variables:
@@ -98,13 +98,12 @@ Rack-specific variables:
98
98
  Additional environment specifications have approved to
99
99
  standardized middleware APIs. None of these are required to
100
100
  be implemented by the server.
101
- <tt>rack.session</tt>:: A hash like interface for storing
102
- request session data.
101
+ <tt>rack.session</tt>:: A hash like interface for storing request session data.
103
102
  The store must implement:
104
- store(key, value) (aliased as []=);
105
- fetch(key, default = nil) (aliased as []);
106
- delete(key);
107
- clear;
103
+ store(key, value) (aliased as []=);
104
+ fetch(key, default = nil) (aliased as []);
105
+ delete(key);
106
+ clear;
108
107
  <tt>rack.logger</tt>:: A common object interface for logging messages.
109
108
  The object must implement:
110
109
  info(message, &block)