rack 1.4.7 → 2.1.4

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.
Files changed (183) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +77 -0
  3. data/{COPYING → MIT-LICENSE} +4 -2
  4. data/README.rdoc +122 -456
  5. data/Rakefile +32 -31
  6. data/SPEC +119 -29
  7. data/bin/rackup +1 -0
  8. data/contrib/rack_logo.svg +164 -111
  9. data/example/lobster.ru +2 -0
  10. data/example/protectedlobster.rb +4 -2
  11. data/example/protectedlobster.ru +3 -1
  12. data/lib/rack/auth/abstract/handler.rb +7 -5
  13. data/lib/rack/auth/abstract/request.rb +8 -6
  14. data/lib/rack/auth/basic.rb +5 -2
  15. data/lib/rack/auth/digest/md5.rb +10 -8
  16. data/lib/rack/auth/digest/nonce.rb +6 -3
  17. data/lib/rack/auth/digest/params.rb +5 -4
  18. data/lib/rack/auth/digest/request.rb +4 -2
  19. data/lib/rack/body_proxy.rb +11 -9
  20. data/lib/rack/builder.rb +63 -20
  21. data/lib/rack/cascade.rb +10 -9
  22. data/lib/rack/chunked.rb +45 -11
  23. data/lib/rack/{commonlogger.rb → common_logger.rb} +24 -15
  24. data/lib/rack/{conditionalget.rb → conditional_get.rb} +20 -6
  25. data/lib/rack/config.rb +7 -0
  26. data/lib/rack/content_length.rb +12 -6
  27. data/lib/rack/content_type.rb +4 -2
  28. data/lib/rack/core_ext/regexp.rb +14 -0
  29. data/lib/rack/deflater.rb +73 -42
  30. data/lib/rack/directory.rb +77 -56
  31. data/lib/rack/etag.rb +25 -13
  32. data/lib/rack/events.rb +156 -0
  33. data/lib/rack/file.rb +4 -143
  34. data/lib/rack/files.rb +178 -0
  35. data/lib/rack/handler/cgi.rb +18 -17
  36. data/lib/rack/handler/fastcgi.rb +21 -17
  37. data/lib/rack/handler/lsws.rb +14 -12
  38. data/lib/rack/handler/scgi.rb +27 -21
  39. data/lib/rack/handler/thin.rb +19 -5
  40. data/lib/rack/handler/webrick.rb +66 -24
  41. data/lib/rack/handler.rb +29 -19
  42. data/lib/rack/head.rb +21 -14
  43. data/lib/rack/lint.rb +259 -65
  44. data/lib/rack/lobster.rb +17 -10
  45. data/lib/rack/lock.rb +19 -10
  46. data/lib/rack/logger.rb +4 -2
  47. data/lib/rack/media_type.rb +43 -0
  48. data/lib/rack/method_override.rb +52 -0
  49. data/lib/rack/mime.rb +43 -6
  50. data/lib/rack/mock.rb +109 -44
  51. data/lib/rack/multipart/generator.rb +11 -12
  52. data/lib/rack/multipart/parser.rb +302 -115
  53. data/lib/rack/multipart/uploaded_file.rb +4 -3
  54. data/lib/rack/multipart.rb +40 -9
  55. data/lib/rack/null_logger.rb +39 -0
  56. data/lib/rack/query_parser.rb +218 -0
  57. data/lib/rack/recursive.rb +14 -11
  58. data/lib/rack/reloader.rb +12 -5
  59. data/lib/rack/request.rb +484 -270
  60. data/lib/rack/response.rb +196 -77
  61. data/lib/rack/rewindable_input.rb +5 -14
  62. data/lib/rack/runtime.rb +13 -6
  63. data/lib/rack/sendfile.rb +44 -20
  64. data/lib/rack/server.rb +175 -61
  65. data/lib/rack/session/abstract/id.rb +276 -133
  66. data/lib/rack/session/cookie.rb +75 -40
  67. data/lib/rack/session/memcache.rb +4 -87
  68. data/lib/rack/session/pool.rb +24 -18
  69. data/lib/rack/show_exceptions.rb +392 -0
  70. data/lib/rack/{showstatus.rb → show_status.rb} +11 -9
  71. data/lib/rack/static.rb +65 -38
  72. data/lib/rack/tempfile_reaper.rb +24 -0
  73. data/lib/rack/urlmap.rb +40 -15
  74. data/lib/rack/utils.rb +316 -285
  75. data/lib/rack.rb +78 -23
  76. data/rack.gemspec +26 -19
  77. metadata +44 -209
  78. data/KNOWN-ISSUES +0 -30
  79. data/lib/rack/backports/uri/common_18.rb +0 -56
  80. data/lib/rack/backports/uri/common_192.rb +0 -52
  81. data/lib/rack/backports/uri/common_193.rb +0 -29
  82. data/lib/rack/handler/evented_mongrel.rb +0 -8
  83. data/lib/rack/handler/mongrel.rb +0 -100
  84. data/lib/rack/handler/swiftiplied_mongrel.rb +0 -8
  85. data/lib/rack/methodoverride.rb +0 -33
  86. data/lib/rack/nulllogger.rb +0 -18
  87. data/lib/rack/showexceptions.rb +0 -378
  88. data/test/builder/anything.rb +0 -5
  89. data/test/builder/comment.ru +0 -4
  90. data/test/builder/end.ru +0 -5
  91. data/test/builder/line.ru +0 -1
  92. data/test/builder/options.ru +0 -2
  93. data/test/cgi/assets/folder/test.js +0 -1
  94. data/test/cgi/assets/fonts/font.eot +0 -1
  95. data/test/cgi/assets/images/image.png +0 -1
  96. data/test/cgi/assets/index.html +0 -1
  97. data/test/cgi/assets/javascripts/app.js +0 -1
  98. data/test/cgi/assets/stylesheets/app.css +0 -1
  99. data/test/cgi/lighttpd.conf +0 -26
  100. data/test/cgi/lighttpd.errors +0 -1
  101. data/test/cgi/rackup_stub.rb +0 -6
  102. data/test/cgi/sample_rackup.ru +0 -5
  103. data/test/cgi/test +0 -9
  104. data/test/cgi/test+directory/test+file +0 -1
  105. data/test/cgi/test.fcgi +0 -8
  106. data/test/cgi/test.ru +0 -5
  107. data/test/gemloader.rb +0 -10
  108. data/test/multipart/bad_robots +0 -259
  109. data/test/multipart/binary +0 -0
  110. data/test/multipart/content_type_and_no_filename +0 -6
  111. data/test/multipart/empty +0 -10
  112. data/test/multipart/fail_16384_nofile +0 -814
  113. data/test/multipart/file1.txt +0 -1
  114. data/test/multipart/filename_and_modification_param +0 -7
  115. data/test/multipart/filename_with_escaped_quotes +0 -6
  116. data/test/multipart/filename_with_escaped_quotes_and_modification_param +0 -7
  117. data/test/multipart/filename_with_percent_escaped_quotes +0 -6
  118. data/test/multipart/filename_with_unescaped_percentages +0 -6
  119. data/test/multipart/filename_with_unescaped_percentages2 +0 -6
  120. data/test/multipart/filename_with_unescaped_percentages3 +0 -6
  121. data/test/multipart/filename_with_unescaped_quotes +0 -6
  122. data/test/multipart/ie +0 -6
  123. data/test/multipart/mixed_files +0 -21
  124. data/test/multipart/nested +0 -10
  125. data/test/multipart/none +0 -9
  126. data/test/multipart/semicolon +0 -6
  127. data/test/multipart/text +0 -15
  128. data/test/multipart/three_files_three_fields +0 -31
  129. data/test/multipart/webkit +0 -32
  130. data/test/rackup/config.ru +0 -31
  131. data/test/registering_handler/rack/handler/registering_myself.rb +0 -8
  132. data/test/spec_auth.rb +0 -57
  133. data/test/spec_auth_basic.rb +0 -81
  134. data/test/spec_auth_digest.rb +0 -259
  135. data/test/spec_body_proxy.rb +0 -69
  136. data/test/spec_builder.rb +0 -207
  137. data/test/spec_cascade.rb +0 -61
  138. data/test/spec_cgi.rb +0 -102
  139. data/test/spec_chunked.rb +0 -87
  140. data/test/spec_commonlogger.rb +0 -57
  141. data/test/spec_conditionalget.rb +0 -102
  142. data/test/spec_config.rb +0 -22
  143. data/test/spec_content_length.rb +0 -86
  144. data/test/spec_content_type.rb +0 -45
  145. data/test/spec_deflater.rb +0 -187
  146. data/test/spec_directory.rb +0 -88
  147. data/test/spec_etag.rb +0 -98
  148. data/test/spec_fastcgi.rb +0 -107
  149. data/test/spec_file.rb +0 -200
  150. data/test/spec_handler.rb +0 -59
  151. data/test/spec_head.rb +0 -48
  152. data/test/spec_lint.rb +0 -515
  153. data/test/spec_lobster.rb +0 -58
  154. data/test/spec_lock.rb +0 -167
  155. data/test/spec_logger.rb +0 -23
  156. data/test/spec_methodoverride.rb +0 -72
  157. data/test/spec_mock.rb +0 -269
  158. data/test/spec_mongrel.rb +0 -182
  159. data/test/spec_multipart.rb +0 -479
  160. data/test/spec_nulllogger.rb +0 -23
  161. data/test/spec_recursive.rb +0 -72
  162. data/test/spec_request.rb +0 -955
  163. data/test/spec_response.rb +0 -313
  164. data/test/spec_rewindable_input.rb +0 -118
  165. data/test/spec_runtime.rb +0 -49
  166. data/test/spec_sendfile.rb +0 -90
  167. data/test/spec_server.rb +0 -121
  168. data/test/spec_session_abstract_id.rb +0 -43
  169. data/test/spec_session_cookie.rb +0 -361
  170. data/test/spec_session_memcache.rb +0 -321
  171. data/test/spec_session_pool.rb +0 -209
  172. data/test/spec_showexceptions.rb +0 -92
  173. data/test/spec_showstatus.rb +0 -84
  174. data/test/spec_static.rb +0 -145
  175. data/test/spec_thin.rb +0 -86
  176. data/test/spec_urlmap.rb +0 -213
  177. data/test/spec_utils.rb +0 -554
  178. data/test/spec_webrick.rb +0 -143
  179. data/test/static/another/index.html +0 -1
  180. data/test/static/index.html +0 -1
  181. data/test/testrequest.rb +0 -78
  182. data/test/unregistered_handler/rack/handler/unregistered.rb +0 -7
  183. data/test/unregistered_handler/rack/handler/unregistered_long_one.rb +0 -7
data/lib/rack.rb CHANGED
@@ -1,39 +1,105 @@
1
- # Copyright (C) 2007, 2008, 2009, 2010 Christian Neukirchen <purl.org/net/chneukirchen>
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright (C) 2007-2019 Leah Neukirchen <http://leahneukirchen.org/infopage.html>
2
4
  #
3
5
  # Rack is freely distributable under the terms of an MIT-style license.
4
- # See COPYING or http://www.opensource.org/licenses/mit-license.php.
6
+ # See MIT-LICENSE or https://opensource.org/licenses/MIT.
5
7
 
6
8
  # The Rack main module, serving as a namespace for all core Rack
7
9
  # modules and classes.
8
10
  #
9
11
  # All modules meant for use in your application are <tt>autoload</tt>ed here,
10
- # so it should be enough just to <tt>require rack.rb</tt> in your code.
12
+ # so it should be enough just to <tt>require 'rack'</tt> in your code.
11
13
 
12
14
  module Rack
13
15
  # The Rack protocol version number implemented.
14
- VERSION = [1,1]
16
+ VERSION = [1, 3]
15
17
 
16
18
  # Return the Rack protocol version as a dotted string.
17
19
  def self.version
18
20
  VERSION.join(".")
19
21
  end
20
22
 
23
+ RELEASE = "2.1.4"
24
+
21
25
  # Return the Rack release as a dotted string.
22
26
  def self.release
23
- "1.4.7"
27
+ RELEASE
24
28
  end
25
29
 
30
+ HTTP_HOST = 'HTTP_HOST'
31
+ HTTP_VERSION = 'HTTP_VERSION'
32
+ HTTPS = 'HTTPS'
33
+ PATH_INFO = 'PATH_INFO'
34
+ REQUEST_METHOD = 'REQUEST_METHOD'
35
+ REQUEST_PATH = 'REQUEST_PATH'
36
+ SCRIPT_NAME = 'SCRIPT_NAME'
37
+ QUERY_STRING = 'QUERY_STRING'
38
+ SERVER_PROTOCOL = 'SERVER_PROTOCOL'
39
+ SERVER_NAME = 'SERVER_NAME'
40
+ SERVER_ADDR = 'SERVER_ADDR'
41
+ SERVER_PORT = 'SERVER_PORT'
42
+ CACHE_CONTROL = 'Cache-Control'
43
+ CONTENT_LENGTH = 'Content-Length'
44
+ CONTENT_TYPE = 'Content-Type'
45
+ SET_COOKIE = 'Set-Cookie'
46
+ TRANSFER_ENCODING = 'Transfer-Encoding'
47
+ HTTP_COOKIE = 'HTTP_COOKIE'
48
+ ETAG = 'ETag'
49
+
50
+ # HTTP method verbs
51
+ GET = 'GET'
52
+ POST = 'POST'
53
+ PUT = 'PUT'
54
+ PATCH = 'PATCH'
55
+ DELETE = 'DELETE'
56
+ HEAD = 'HEAD'
57
+ OPTIONS = 'OPTIONS'
58
+ LINK = 'LINK'
59
+ UNLINK = 'UNLINK'
60
+ TRACE = 'TRACE'
61
+
62
+ # Rack environment variables
63
+ RACK_VERSION = 'rack.version'
64
+ RACK_TEMPFILES = 'rack.tempfiles'
65
+ RACK_ERRORS = 'rack.errors'
66
+ RACK_LOGGER = 'rack.logger'
67
+ RACK_INPUT = 'rack.input'
68
+ RACK_SESSION = 'rack.session'
69
+ RACK_SESSION_OPTIONS = 'rack.session.options'
70
+ RACK_SHOWSTATUS_DETAIL = 'rack.showstatus.detail'
71
+ RACK_MULTITHREAD = 'rack.multithread'
72
+ RACK_MULTIPROCESS = 'rack.multiprocess'
73
+ RACK_RUNONCE = 'rack.run_once'
74
+ RACK_URL_SCHEME = 'rack.url_scheme'
75
+ RACK_HIJACK = 'rack.hijack'
76
+ RACK_IS_HIJACK = 'rack.hijack?'
77
+ RACK_HIJACK_IO = 'rack.hijack_io'
78
+ RACK_RECURSIVE_INCLUDE = 'rack.recursive.include'
79
+ RACK_MULTIPART_BUFFER_SIZE = 'rack.multipart.buffer_size'
80
+ RACK_MULTIPART_TEMPFILE_FACTORY = 'rack.multipart.tempfile_factory'
81
+ RACK_REQUEST_FORM_INPUT = 'rack.request.form_input'
82
+ RACK_REQUEST_FORM_HASH = 'rack.request.form_hash'
83
+ RACK_REQUEST_FORM_VARS = 'rack.request.form_vars'
84
+ RACK_REQUEST_COOKIE_HASH = 'rack.request.cookie_hash'
85
+ RACK_REQUEST_COOKIE_STRING = 'rack.request.cookie_string'
86
+ RACK_REQUEST_QUERY_HASH = 'rack.request.query_hash'
87
+ RACK_REQUEST_QUERY_STRING = 'rack.request.query_string'
88
+ RACK_METHODOVERRIDE_ORIGINAL_METHOD = 'rack.methodoverride.original_method'
89
+ RACK_SESSION_UNPACKED_COOKIE_DATA = 'rack.session.unpacked_cookie_data'
90
+
26
91
  autoload :Builder, "rack/builder"
27
92
  autoload :BodyProxy, "rack/body_proxy"
28
93
  autoload :Cascade, "rack/cascade"
29
94
  autoload :Chunked, "rack/chunked"
30
- autoload :CommonLogger, "rack/commonlogger"
31
- autoload :ConditionalGet, "rack/conditionalget"
95
+ autoload :CommonLogger, "rack/common_logger"
96
+ autoload :ConditionalGet, "rack/conditional_get"
32
97
  autoload :Config, "rack/config"
33
98
  autoload :ContentLength, "rack/content_length"
34
99
  autoload :ContentType, "rack/content_type"
35
100
  autoload :ETag, "rack/etag"
36
101
  autoload :File, "rack/file"
102
+ autoload :Files, "rack/files"
37
103
  autoload :Deflater, "rack/deflater"
38
104
  autoload :Directory, "rack/directory"
39
105
  autoload :ForwardRequest, "rack/recursive"
@@ -42,17 +108,18 @@ module Rack
42
108
  autoload :Lint, "rack/lint"
43
109
  autoload :Lock, "rack/lock"
44
110
  autoload :Logger, "rack/logger"
45
- autoload :MethodOverride, "rack/methodoverride"
111
+ autoload :MethodOverride, "rack/method_override"
46
112
  autoload :Mime, "rack/mime"
47
- autoload :NullLogger, "rack/nulllogger"
113
+ autoload :NullLogger, "rack/null_logger"
48
114
  autoload :Recursive, "rack/recursive"
49
115
  autoload :Reloader, "rack/reloader"
50
116
  autoload :Runtime, "rack/runtime"
51
117
  autoload :Sendfile, "rack/sendfile"
52
118
  autoload :Server, "rack/server"
53
- autoload :ShowExceptions, "rack/showexceptions"
54
- autoload :ShowStatus, "rack/showstatus"
119
+ autoload :ShowExceptions, "rack/show_exceptions"
120
+ autoload :ShowStatus, "rack/show_status"
55
121
  autoload :Static, "rack/static"
122
+ autoload :TempfileReaper, "rack/tempfile_reaper"
56
123
  autoload :URLMap, "rack/urlmap"
57
124
  autoload :Utils, "rack/utils"
58
125
  autoload :Multipart, "rack/multipart"
@@ -73,18 +140,6 @@ module Rack
73
140
  autoload :Params, "rack/auth/digest/params"
74
141
  autoload :Request, "rack/auth/digest/request"
75
142
  end
76
-
77
- # Not all of the following schemes are "standards", but they are used often.
78
- @schemes = %w[basic digest bearer mac token oauth oauth2]
79
-
80
- def self.add_scheme scheme
81
- @schemes << scheme
82
- @schemes.uniq!
83
- end
84
-
85
- def self.schemes
86
- @schemes.dup
87
- end
88
143
  end
89
144
 
90
145
  module Session
data/rack.gemspec CHANGED
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Gem::Specification.new do |s|
2
- s.name = "rack"
3
- s.version = "1.4.7"
4
+ s.name = "rack"
5
+ s.version = File.read('lib/rack.rb')[/RELEASE += +([\"\'])([\d][\w\.]+)\1/, 2]
4
6
  s.platform = Gem::Platform::RUBY
5
7
  s.summary = "a modular Ruby webserver interface"
8
+ s.license = "MIT"
6
9
 
7
10
  s.description = <<-EOF
8
11
  Rack provides a minimal, modular and adaptable interface for developing
@@ -11,27 +14,31 @@ the simplest way possible, it unifies and distills the API for web
11
14
  servers, web frameworks, and software in between (the so-called
12
15
  middleware) into a single method call.
13
16
 
14
- Also see http://rack.github.com/.
17
+ Also see https://rack.github.io/.
15
18
  EOF
16
19
 
17
- s.files = Dir['{bin/*,contrib/*,example/*,lib/**/*,test/**/*}'] +
18
- %w(COPYING KNOWN-ISSUES rack.gemspec Rakefile README.rdoc SPEC)
20
+ s.files = Dir['{bin/*,contrib/*,example/*,lib/**/*}'] +
21
+ %w(MIT-LICENSE rack.gemspec Rakefile README.rdoc SPEC)
19
22
  s.bindir = 'bin'
20
- s.executables << 'rackup'
21
- s.require_path = 'lib'
22
- s.extra_rdoc_files = ['README.rdoc', 'KNOWN-ISSUES']
23
- s.test_files = Dir['test/spec_*.rb']
23
+ s.executables << 'rackup'
24
+ s.require_path = 'lib'
25
+ s.extra_rdoc_files = ['README.rdoc', 'CHANGELOG.md']
24
26
 
25
- s.author = 'Christian Neukirchen'
26
- s.email = 'chneukirchen@gmail.com'
27
- s.homepage = 'http://rack.github.com/'
28
- s.rubyforge_project = 'rack'
27
+ s.author = 'Leah Neukirchen'
28
+ s.email = 'leah@vuxu.org'
29
+ s.homepage = 'https://rack.github.io/'
30
+ s.required_ruby_version = '>= 2.2.2'
31
+ s.metadata = {
32
+ "bug_tracker_uri" => "https://github.com/rack/rack/issues",
33
+ "changelog_uri" => "https://github.com/rack/rack/blob/master/CHANGELOG.md",
34
+ "documentation_uri" => "https://rubydoc.info/github/rack/rack",
35
+ "homepage_uri" => "https://rack.github.io",
36
+ "mailing_list_uri" => "https://groups.google.com/forum/#!forum/rack-devel",
37
+ "source_code_uri" => "https://github.com/rack/rack"
38
+ }
29
39
 
30
- s.add_development_dependency 'bacon'
40
+ s.add_development_dependency 'minitest', "~> 5.0"
41
+ s.add_development_dependency 'minitest-sprint'
42
+ s.add_development_dependency 'minitest-global_expectations'
31
43
  s.add_development_dependency 'rake'
32
-
33
- s.add_development_dependency 'ruby-fcgi'
34
- s.add_development_dependency 'memcache-client'
35
- s.add_development_dependency 'mongrel', '>= 1.2.0.pre2'
36
- s.add_development_dependency 'thin'
37
44
  end
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.7
4
+ version: 2.1.4
5
5
  platform: ruby
6
6
  authors:
7
- - Christian Neukirchen
8
- autorequire:
7
+ - Leah Neukirchen
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-18 00:00:00.000000000 Z
11
+ date: 2020-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bacon
14
+ name: minitest
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '5.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '5.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: minitest-sprint
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: ruby-fcgi
42
+ name: minitest-global_expectations
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,35 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: memcache-client
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: mongrel
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: 1.2.0.pre2
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: 1.2.0.pre2
83
- - !ruby/object:Gem::Dependency
84
- name: thin
56
+ name: rake
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - ">="
@@ -101,17 +73,17 @@ description: |
101
73
  servers, web frameworks, and software in between (the so-called
102
74
  middleware) into a single method call.
103
75
 
104
- Also see http://rack.github.com/.
105
- email: chneukirchen@gmail.com
76
+ Also see https://rack.github.io/.
77
+ email: leah@vuxu.org
106
78
  executables:
107
79
  - rackup
108
80
  extensions: []
109
81
  extra_rdoc_files:
110
82
  - README.rdoc
111
- - KNOWN-ISSUES
83
+ - CHANGELOG.md
112
84
  files:
113
- - COPYING
114
- - KNOWN-ISSUES
85
+ - CHANGELOG.md
86
+ - MIT-LICENSE
115
87
  - README.rdoc
116
88
  - Rakefile
117
89
  - SPEC
@@ -131,30 +103,27 @@ files:
131
103
  - lib/rack/auth/digest/nonce.rb
132
104
  - lib/rack/auth/digest/params.rb
133
105
  - lib/rack/auth/digest/request.rb
134
- - lib/rack/backports/uri/common_18.rb
135
- - lib/rack/backports/uri/common_192.rb
136
- - lib/rack/backports/uri/common_193.rb
137
106
  - lib/rack/body_proxy.rb
138
107
  - lib/rack/builder.rb
139
108
  - lib/rack/cascade.rb
140
109
  - lib/rack/chunked.rb
141
- - lib/rack/commonlogger.rb
142
- - lib/rack/conditionalget.rb
110
+ - lib/rack/common_logger.rb
111
+ - lib/rack/conditional_get.rb
143
112
  - lib/rack/config.rb
144
113
  - lib/rack/content_length.rb
145
114
  - lib/rack/content_type.rb
115
+ - lib/rack/core_ext/regexp.rb
146
116
  - lib/rack/deflater.rb
147
117
  - lib/rack/directory.rb
148
118
  - lib/rack/etag.rb
119
+ - lib/rack/events.rb
149
120
  - lib/rack/file.rb
121
+ - lib/rack/files.rb
150
122
  - lib/rack/handler.rb
151
123
  - lib/rack/handler/cgi.rb
152
- - lib/rack/handler/evented_mongrel.rb
153
124
  - lib/rack/handler/fastcgi.rb
154
125
  - lib/rack/handler/lsws.rb
155
- - lib/rack/handler/mongrel.rb
156
126
  - lib/rack/handler/scgi.rb
157
- - lib/rack/handler/swiftiplied_mongrel.rb
158
127
  - lib/rack/handler/thin.rb
159
128
  - lib/rack/handler/webrick.rb
160
129
  - lib/rack/head.rb
@@ -162,14 +131,16 @@ files:
162
131
  - lib/rack/lobster.rb
163
132
  - lib/rack/lock.rb
164
133
  - lib/rack/logger.rb
165
- - lib/rack/methodoverride.rb
134
+ - lib/rack/media_type.rb
135
+ - lib/rack/method_override.rb
166
136
  - lib/rack/mime.rb
167
137
  - lib/rack/mock.rb
168
138
  - lib/rack/multipart.rb
169
139
  - lib/rack/multipart/generator.rb
170
140
  - lib/rack/multipart/parser.rb
171
141
  - lib/rack/multipart/uploaded_file.rb
172
- - lib/rack/nulllogger.rb
142
+ - lib/rack/null_logger.rb
143
+ - lib/rack/query_parser.rb
173
144
  - lib/rack/recursive.rb
174
145
  - lib/rack/reloader.rb
175
146
  - lib/rack/request.rb
@@ -182,112 +153,24 @@ files:
182
153
  - lib/rack/session/cookie.rb
183
154
  - lib/rack/session/memcache.rb
184
155
  - lib/rack/session/pool.rb
185
- - lib/rack/showexceptions.rb
186
- - lib/rack/showstatus.rb
156
+ - lib/rack/show_exceptions.rb
157
+ - lib/rack/show_status.rb
187
158
  - lib/rack/static.rb
159
+ - lib/rack/tempfile_reaper.rb
188
160
  - lib/rack/urlmap.rb
189
161
  - lib/rack/utils.rb
190
162
  - rack.gemspec
191
- - test/builder/anything.rb
192
- - test/builder/comment.ru
193
- - test/builder/end.ru
194
- - test/builder/line.ru
195
- - test/builder/options.ru
196
- - test/cgi/assets/folder/test.js
197
- - test/cgi/assets/fonts/font.eot
198
- - test/cgi/assets/images/image.png
199
- - test/cgi/assets/index.html
200
- - test/cgi/assets/javascripts/app.js
201
- - test/cgi/assets/stylesheets/app.css
202
- - test/cgi/lighttpd.conf
203
- - test/cgi/lighttpd.errors
204
- - test/cgi/rackup_stub.rb
205
- - test/cgi/sample_rackup.ru
206
- - test/cgi/test
207
- - test/cgi/test+directory/test+file
208
- - test/cgi/test.fcgi
209
- - test/cgi/test.ru
210
- - test/gemloader.rb
211
- - test/multipart/bad_robots
212
- - test/multipart/binary
213
- - test/multipart/content_type_and_no_filename
214
- - test/multipart/empty
215
- - test/multipart/fail_16384_nofile
216
- - test/multipart/file1.txt
217
- - test/multipart/filename_and_modification_param
218
- - test/multipart/filename_with_escaped_quotes
219
- - test/multipart/filename_with_escaped_quotes_and_modification_param
220
- - test/multipart/filename_with_percent_escaped_quotes
221
- - test/multipart/filename_with_unescaped_percentages
222
- - test/multipart/filename_with_unescaped_percentages2
223
- - test/multipart/filename_with_unescaped_percentages3
224
- - test/multipart/filename_with_unescaped_quotes
225
- - test/multipart/ie
226
- - test/multipart/mixed_files
227
- - test/multipart/nested
228
- - test/multipart/none
229
- - test/multipart/semicolon
230
- - test/multipart/text
231
- - test/multipart/three_files_three_fields
232
- - test/multipart/webkit
233
- - test/rackup/config.ru
234
- - test/registering_handler/rack/handler/registering_myself.rb
235
- - test/spec_auth.rb
236
- - test/spec_auth_basic.rb
237
- - test/spec_auth_digest.rb
238
- - test/spec_body_proxy.rb
239
- - test/spec_builder.rb
240
- - test/spec_cascade.rb
241
- - test/spec_cgi.rb
242
- - test/spec_chunked.rb
243
- - test/spec_commonlogger.rb
244
- - test/spec_conditionalget.rb
245
- - test/spec_config.rb
246
- - test/spec_content_length.rb
247
- - test/spec_content_type.rb
248
- - test/spec_deflater.rb
249
- - test/spec_directory.rb
250
- - test/spec_etag.rb
251
- - test/spec_fastcgi.rb
252
- - test/spec_file.rb
253
- - test/spec_handler.rb
254
- - test/spec_head.rb
255
- - test/spec_lint.rb
256
- - test/spec_lobster.rb
257
- - test/spec_lock.rb
258
- - test/spec_logger.rb
259
- - test/spec_methodoverride.rb
260
- - test/spec_mock.rb
261
- - test/spec_mongrel.rb
262
- - test/spec_multipart.rb
263
- - test/spec_nulllogger.rb
264
- - test/spec_recursive.rb
265
- - test/spec_request.rb
266
- - test/spec_response.rb
267
- - test/spec_rewindable_input.rb
268
- - test/spec_runtime.rb
269
- - test/spec_sendfile.rb
270
- - test/spec_server.rb
271
- - test/spec_session_abstract_id.rb
272
- - test/spec_session_cookie.rb
273
- - test/spec_session_memcache.rb
274
- - test/spec_session_pool.rb
275
- - test/spec_showexceptions.rb
276
- - test/spec_showstatus.rb
277
- - test/spec_static.rb
278
- - test/spec_thin.rb
279
- - test/spec_urlmap.rb
280
- - test/spec_utils.rb
281
- - test/spec_webrick.rb
282
- - test/static/another/index.html
283
- - test/static/index.html
284
- - test/testrequest.rb
285
- - test/unregistered_handler/rack/handler/unregistered.rb
286
- - test/unregistered_handler/rack/handler/unregistered_long_one.rb
287
- homepage: http://rack.github.com/
288
- licenses: []
289
- metadata: {}
290
- post_install_message:
163
+ homepage: https://rack.github.io/
164
+ licenses:
165
+ - MIT
166
+ metadata:
167
+ bug_tracker_uri: https://github.com/rack/rack/issues
168
+ changelog_uri: https://github.com/rack/rack/blob/master/CHANGELOG.md
169
+ documentation_uri: https://rubydoc.info/github/rack/rack
170
+ homepage_uri: https://rack.github.io
171
+ mailing_list_uri: https://groups.google.com/forum/#!forum/rack-devel
172
+ source_code_uri: https://github.com/rack/rack
173
+ post_install_message:
291
174
  rdoc_options: []
292
175
  require_paths:
293
176
  - lib
@@ -295,63 +178,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
295
178
  requirements:
296
179
  - - ">="
297
180
  - !ruby/object:Gem::Version
298
- version: '0'
181
+ version: 2.2.2
299
182
  required_rubygems_version: !ruby/object:Gem::Requirement
300
183
  requirements:
301
184
  - - ">="
302
185
  - !ruby/object:Gem::Version
303
186
  version: '0'
304
187
  requirements: []
305
- rubyforge_project: rack
306
- rubygems_version: 2.4.5
307
- signing_key:
188
+ rubygems_version: 3.2.0.pre1
189
+ signing_key:
308
190
  specification_version: 4
309
191
  summary: a modular Ruby webserver interface
310
- test_files:
311
- - test/spec_auth.rb
312
- - test/spec_auth_basic.rb
313
- - test/spec_auth_digest.rb
314
- - test/spec_body_proxy.rb
315
- - test/spec_builder.rb
316
- - test/spec_cascade.rb
317
- - test/spec_cgi.rb
318
- - test/spec_chunked.rb
319
- - test/spec_commonlogger.rb
320
- - test/spec_conditionalget.rb
321
- - test/spec_config.rb
322
- - test/spec_content_length.rb
323
- - test/spec_content_type.rb
324
- - test/spec_deflater.rb
325
- - test/spec_directory.rb
326
- - test/spec_etag.rb
327
- - test/spec_fastcgi.rb
328
- - test/spec_file.rb
329
- - test/spec_handler.rb
330
- - test/spec_head.rb
331
- - test/spec_lint.rb
332
- - test/spec_lobster.rb
333
- - test/spec_lock.rb
334
- - test/spec_logger.rb
335
- - test/spec_methodoverride.rb
336
- - test/spec_mock.rb
337
- - test/spec_mongrel.rb
338
- - test/spec_multipart.rb
339
- - test/spec_nulllogger.rb
340
- - test/spec_recursive.rb
341
- - test/spec_request.rb
342
- - test/spec_response.rb
343
- - test/spec_rewindable_input.rb
344
- - test/spec_runtime.rb
345
- - test/spec_sendfile.rb
346
- - test/spec_server.rb
347
- - test/spec_session_abstract_id.rb
348
- - test/spec_session_cookie.rb
349
- - test/spec_session_memcache.rb
350
- - test/spec_session_pool.rb
351
- - test/spec_showexceptions.rb
352
- - test/spec_showstatus.rb
353
- - test/spec_static.rb
354
- - test/spec_thin.rb
355
- - test/spec_urlmap.rb
356
- - test/spec_utils.rb
357
- - test/spec_webrick.rb
192
+ test_files: []
data/KNOWN-ISSUES DELETED
@@ -1,30 +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.
@@ -1,56 +0,0 @@
1
- # :stopdoc:
2
-
3
- # Stolen from ruby core's uri/common.rb, with modifications to support 1.8.x
4
- #
5
- # https://github.com/ruby/ruby/blob/trunk/lib/uri/common.rb
6
- #
7
- #
8
-
9
- module URI
10
- TBLENCWWWCOMP_ = {} # :nodoc:
11
- 256.times do |i|
12
- TBLENCWWWCOMP_[i.chr] = '%%%02X' % i
13
- end
14
- TBLENCWWWCOMP_[' '] = '+'
15
- TBLENCWWWCOMP_.freeze
16
- TBLDECWWWCOMP_ = {} # :nodoc:
17
- 256.times do |i|
18
- h, l = i>>4, i&15
19
- TBLDECWWWCOMP_['%%%X%X' % [h, l]] = i.chr
20
- TBLDECWWWCOMP_['%%%x%X' % [h, l]] = i.chr
21
- TBLDECWWWCOMP_['%%%X%x' % [h, l]] = i.chr
22
- TBLDECWWWCOMP_['%%%x%x' % [h, l]] = i.chr
23
- end
24
- TBLDECWWWCOMP_['+'] = ' '
25
- TBLDECWWWCOMP_.freeze
26
-
27
- # Encode given +s+ to URL-encoded form data.
28
- #
29
- # This method doesn't convert *, -, ., 0-9, A-Z, _, a-z, but does convert SP
30
- # (ASCII space) to + and converts others to %XX.
31
- #
32
- # This is an implementation of
33
- # http://www.w3.org/TR/html5/forms.html#url-encoded-form-data
34
- #
35
- # See URI.decode_www_form_component, URI.encode_www_form
36
- def self.encode_www_form_component(s)
37
- str = s.to_s
38
- if RUBY_VERSION < "1.9" && $KCODE =~ /u/i
39
- str.gsub(/([^ a-zA-Z0-9_.-]+)/) do
40
- '%' + $1.unpack('H2' * Rack::Utils.bytesize($1)).join('%').upcase
41
- end.tr(' ', '+')
42
- else
43
- str.gsub(/[^*\-.0-9A-Z_a-z]/) {|m| TBLENCWWWCOMP_[m]}
44
- end
45
- end
46
-
47
- # Decode given +str+ of URL-encoded form data.
48
- #
49
- # This decods + to SP.
50
- #
51
- # See URI.encode_www_form_component, URI.decode_www_form
52
- def self.decode_www_form_component(str, enc=nil)
53
- raise ArgumentError, "invalid %-encoding (#{str})" unless /\A(?:%[0-9a-fA-F]{2}|[^%])*\z/ =~ str
54
- str.gsub(/\+|%[0-9a-fA-F]{2}/) {|m| TBLDECWWWCOMP_[m]}
55
- end
56
- end