rack 1.0.1 → 2.2.21
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 +7 -0
- data/CHANGELOG.md +829 -0
- data/CONTRIBUTING.md +136 -0
- data/{COPYING → MIT-LICENSE} +4 -2
- data/README.rdoc +355 -0
- data/Rakefile +64 -98
- data/SPEC.rdoc +292 -0
- data/bin/rackup +3 -174
- data/contrib/rack.png +0 -0
- data/contrib/rack.svg +150 -0
- data/contrib/rack_logo.svg +164 -111
- data/contrib/rdoc.css +412 -0
- data/example/lobster.ru +2 -0
- data/example/protectedlobster.rb +4 -2
- data/example/protectedlobster.ru +3 -1
- data/lib/rack/auth/abstract/handler.rb +7 -5
- data/lib/rack/auth/abstract/request.rb +12 -2
- data/lib/rack/auth/basic.rb +6 -4
- data/lib/rack/auth/digest/md5.rb +20 -13
- data/lib/rack/auth/digest/nonce.rb +6 -4
- data/lib/rack/auth/digest/params.rb +11 -12
- data/lib/rack/auth/digest/request.rb +15 -12
- data/lib/rack/body_proxy.rb +45 -0
- data/lib/rack/builder.rb +213 -19
- data/lib/rack/cascade.rb +50 -18
- data/lib/rack/chunked.rb +95 -27
- data/lib/rack/common_logger.rb +84 -0
- data/lib/rack/conditional_get.rb +83 -0
- data/lib/rack/config.rb +22 -0
- data/lib/rack/content_length.rb +19 -10
- data/lib/rack/content_type.rb +12 -5
- data/lib/rack/core_ext/regexp.rb +14 -0
- data/lib/rack/deflater.rb +90 -42
- data/lib/rack/directory.rb +118 -72
- data/lib/rack/etag.rb +77 -0
- data/lib/rack/events.rb +153 -0
- data/lib/rack/file.rb +4 -85
- data/lib/rack/files.rb +218 -0
- data/lib/rack/handler/cgi.rb +22 -24
- data/lib/rack/handler/fastcgi.rb +34 -24
- data/lib/rack/handler/lsws.rb +16 -15
- data/lib/rack/handler/scgi.rb +38 -29
- data/lib/rack/handler/thin.rb +23 -7
- data/lib/rack/handler/webrick.rb +95 -37
- data/lib/rack/handler.rb +49 -14
- data/lib/rack/head.rb +19 -13
- data/lib/rack/lint.rb +466 -217
- data/lib/rack/lobster.rb +19 -14
- data/lib/rack/lock.rb +24 -8
- data/lib/rack/logger.rb +20 -0
- data/lib/rack/media_type.rb +53 -0
- data/lib/rack/method_override.rb +52 -0
- data/lib/rack/mime.rb +652 -171
- data/lib/rack/mock.rb +203 -64
- data/lib/rack/multipart/generator.rb +97 -0
- data/lib/rack/multipart/parser.rb +440 -0
- data/lib/rack/multipart/uploaded_file.rb +41 -0
- data/lib/rack/multipart.rb +64 -0
- data/lib/rack/null_logger.rb +39 -0
- data/lib/rack/query_parser.rb +266 -0
- data/lib/rack/recursive.rb +18 -11
- data/lib/rack/reloader.rb +13 -5
- data/lib/rack/request.rb +607 -191
- data/lib/rack/response.rb +245 -110
- data/lib/rack/rewindable_input.rb +15 -21
- data/lib/rack/runtime.rb +34 -0
- data/lib/rack/sendfile.rb +192 -0
- data/lib/rack/server.rb +466 -0
- data/lib/rack/session/abstract/id.rb +449 -68
- data/lib/rack/session/cookie.rb +159 -47
- data/lib/rack/session/memcache.rb +4 -103
- data/lib/rack/session/pool.rb +39 -49
- data/lib/rack/show_exceptions.rb +390 -0
- data/lib/rack/{showstatus.rb → show_status.rb} +21 -14
- data/lib/rack/static.rb +164 -14
- data/lib/rack/tempfile_reaper.rb +22 -0
- data/lib/rack/urlmap.rb +60 -18
- data/lib/rack/utils.rb +508 -277
- data/lib/rack/version.rb +29 -0
- data/lib/rack.rb +85 -34
- data/rack.gemspec +43 -51
- metadata +119 -207
- data/KNOWN-ISSUES +0 -18
- data/RDOX +0 -428
- data/README +0 -364
- data/SPEC +0 -164
- data/lib/rack/adapter/camping.rb +0 -22
- data/lib/rack/auth/openid.rb +0 -480
- data/lib/rack/commonlogger.rb +0 -61
- data/lib/rack/conditionalget.rb +0 -47
- data/lib/rack/handler/evented_mongrel.rb +0 -8
- data/lib/rack/handler/mongrel.rb +0 -87
- data/lib/rack/handler/swiftiplied_mongrel.rb +0 -8
- data/lib/rack/methodoverride.rb +0 -27
- data/lib/rack/showexceptions.rb +0 -349
- data/test/cgi/lighttpd.conf +0 -20
- data/test/cgi/test +0 -9
- data/test/cgi/test.fcgi +0 -8
- data/test/cgi/test.ru +0 -7
- data/test/multipart/binary +0 -0
- data/test/multipart/empty +0 -10
- data/test/multipart/ie +0 -6
- data/test/multipart/nested +0 -10
- data/test/multipart/none +0 -9
- data/test/multipart/semicolon +0 -6
- data/test/multipart/text +0 -10
- data/test/spec_rack_auth_basic.rb +0 -73
- data/test/spec_rack_auth_digest.rb +0 -226
- data/test/spec_rack_auth_openid.rb +0 -84
- data/test/spec_rack_builder.rb +0 -84
- data/test/spec_rack_camping.rb +0 -51
- data/test/spec_rack_cascade.rb +0 -50
- data/test/spec_rack_cgi.rb +0 -89
- data/test/spec_rack_chunked.rb +0 -62
- data/test/spec_rack_commonlogger.rb +0 -32
- data/test/spec_rack_conditionalget.rb +0 -41
- data/test/spec_rack_content_length.rb +0 -43
- data/test/spec_rack_content_type.rb +0 -30
- data/test/spec_rack_deflater.rb +0 -127
- data/test/spec_rack_directory.rb +0 -61
- data/test/spec_rack_fastcgi.rb +0 -89
- data/test/spec_rack_file.rb +0 -75
- data/test/spec_rack_handler.rb +0 -43
- data/test/spec_rack_head.rb +0 -30
- data/test/spec_rack_lint.rb +0 -521
- data/test/spec_rack_lobster.rb +0 -45
- data/test/spec_rack_lock.rb +0 -38
- data/test/spec_rack_methodoverride.rb +0 -60
- data/test/spec_rack_mock.rb +0 -157
- data/test/spec_rack_mongrel.rb +0 -189
- data/test/spec_rack_recursive.rb +0 -77
- data/test/spec_rack_request.rb +0 -504
- data/test/spec_rack_response.rb +0 -218
- data/test/spec_rack_rewindable_input.rb +0 -118
- data/test/spec_rack_session_cookie.rb +0 -82
- data/test/spec_rack_session_memcache.rb +0 -240
- data/test/spec_rack_session_pool.rb +0 -172
- data/test/spec_rack_showexceptions.rb +0 -21
- data/test/spec_rack_showstatus.rb +0 -72
- data/test/spec_rack_static.rb +0 -37
- data/test/spec_rack_thin.rb +0 -91
- data/test/spec_rack_urlmap.rb +0 -185
- data/test/spec_rack_utils.rb +0 -387
- data/test/spec_rack_webrick.rb +0 -130
- data/test/testrequest.rb +0 -57
- data/test/unregistered_handler/rack/handler/unregistered.rb +0 -7
- data/test/unregistered_handler/rack/handler/unregistered_long_one.rb +0 -7
data/lib/rack/version.rb
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Copyright (C) 2007-2019 Leah Neukirchen <http://leahneukirchen.org/infopage.html>
|
|
4
|
+
#
|
|
5
|
+
# Rack is freely distributable under the terms of an MIT-style license.
|
|
6
|
+
# See MIT-LICENSE or https://opensource.org/licenses/MIT.
|
|
7
|
+
|
|
8
|
+
# The Rack main module, serving as a namespace for all core Rack
|
|
9
|
+
# modules and classes.
|
|
10
|
+
#
|
|
11
|
+
# All modules meant for use in your application are <tt>autoload</tt>ed here,
|
|
12
|
+
# so it should be enough just to <tt>require 'rack'</tt> in your code.
|
|
13
|
+
|
|
14
|
+
module Rack
|
|
15
|
+
# The Rack protocol version number implemented.
|
|
16
|
+
VERSION = [1, 3]
|
|
17
|
+
|
|
18
|
+
# Return the Rack protocol version as a dotted string.
|
|
19
|
+
def self.version
|
|
20
|
+
VERSION.join(".")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
RELEASE = "2.2.21"
|
|
24
|
+
|
|
25
|
+
# Return the Rack release as a dotted string.
|
|
26
|
+
def self.release
|
|
27
|
+
RELEASE
|
|
28
|
+
end
|
|
29
|
+
end
|
data/lib/rack.rb
CHANGED
|
@@ -1,40 +1,94 @@
|
|
|
1
|
-
#
|
|
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
|
|
5
|
-
|
|
6
|
-
path = File.expand_path(File.dirname(__FILE__))
|
|
7
|
-
$:.unshift(path) unless $:.include?(path)
|
|
8
|
-
|
|
6
|
+
# See MIT-LICENSE or https://opensource.org/licenses/MIT.
|
|
9
7
|
|
|
10
8
|
# The Rack main module, serving as a namespace for all core Rack
|
|
11
9
|
# modules and classes.
|
|
12
10
|
#
|
|
13
11
|
# All modules meant for use in your application are <tt>autoload</tt>ed here,
|
|
14
|
-
# so it should be enough just to <tt>require rack
|
|
12
|
+
# so it should be enough just to <tt>require 'rack'</tt> in your code.
|
|
13
|
+
|
|
14
|
+
require_relative 'rack/version'
|
|
15
15
|
|
|
16
16
|
module Rack
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
HTTP_HOST = 'HTTP_HOST'
|
|
18
|
+
HTTP_PORT = 'HTTP_PORT'
|
|
19
|
+
HTTP_VERSION = 'HTTP_VERSION'
|
|
20
|
+
HTTPS = 'HTTPS'
|
|
21
|
+
PATH_INFO = 'PATH_INFO'
|
|
22
|
+
REQUEST_METHOD = 'REQUEST_METHOD'
|
|
23
|
+
REQUEST_PATH = 'REQUEST_PATH'
|
|
24
|
+
SCRIPT_NAME = 'SCRIPT_NAME'
|
|
25
|
+
QUERY_STRING = 'QUERY_STRING'
|
|
26
|
+
SERVER_PROTOCOL = 'SERVER_PROTOCOL'
|
|
27
|
+
SERVER_NAME = 'SERVER_NAME'
|
|
28
|
+
SERVER_PORT = 'SERVER_PORT'
|
|
29
|
+
CACHE_CONTROL = 'Cache-Control'
|
|
30
|
+
EXPIRES = 'Expires'
|
|
31
|
+
CONTENT_LENGTH = 'Content-Length'
|
|
32
|
+
CONTENT_TYPE = 'Content-Type'
|
|
33
|
+
SET_COOKIE = 'Set-Cookie'
|
|
34
|
+
TRANSFER_ENCODING = 'Transfer-Encoding'
|
|
35
|
+
HTTP_COOKIE = 'HTTP_COOKIE'
|
|
36
|
+
ETAG = 'ETag'
|
|
19
37
|
|
|
20
|
-
#
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
38
|
+
# HTTP method verbs
|
|
39
|
+
GET = 'GET'
|
|
40
|
+
POST = 'POST'
|
|
41
|
+
PUT = 'PUT'
|
|
42
|
+
PATCH = 'PATCH'
|
|
43
|
+
DELETE = 'DELETE'
|
|
44
|
+
HEAD = 'HEAD'
|
|
45
|
+
OPTIONS = 'OPTIONS'
|
|
46
|
+
LINK = 'LINK'
|
|
47
|
+
UNLINK = 'UNLINK'
|
|
48
|
+
TRACE = 'TRACE'
|
|
24
49
|
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
50
|
+
# Rack environment variables
|
|
51
|
+
RACK_VERSION = 'rack.version'
|
|
52
|
+
RACK_TEMPFILES = 'rack.tempfiles'
|
|
53
|
+
RACK_ERRORS = 'rack.errors'
|
|
54
|
+
RACK_LOGGER = 'rack.logger'
|
|
55
|
+
RACK_INPUT = 'rack.input'
|
|
56
|
+
RACK_SESSION = 'rack.session'
|
|
57
|
+
RACK_SESSION_OPTIONS = 'rack.session.options'
|
|
58
|
+
RACK_SHOWSTATUS_DETAIL = 'rack.showstatus.detail'
|
|
59
|
+
RACK_MULTITHREAD = 'rack.multithread'
|
|
60
|
+
RACK_MULTIPROCESS = 'rack.multiprocess'
|
|
61
|
+
RACK_RUNONCE = 'rack.run_once'
|
|
62
|
+
RACK_URL_SCHEME = 'rack.url_scheme'
|
|
63
|
+
RACK_HIJACK = 'rack.hijack'
|
|
64
|
+
RACK_IS_HIJACK = 'rack.hijack?'
|
|
65
|
+
RACK_HIJACK_IO = 'rack.hijack_io'
|
|
66
|
+
RACK_RECURSIVE_INCLUDE = 'rack.recursive.include'
|
|
67
|
+
RACK_MULTIPART_BUFFER_SIZE = 'rack.multipart.buffer_size'
|
|
68
|
+
RACK_MULTIPART_TEMPFILE_FACTORY = 'rack.multipart.tempfile_factory'
|
|
69
|
+
RACK_REQUEST_FORM_INPUT = 'rack.request.form_input'
|
|
70
|
+
RACK_REQUEST_FORM_HASH = 'rack.request.form_hash'
|
|
71
|
+
RACK_REQUEST_FORM_VARS = 'rack.request.form_vars'
|
|
72
|
+
RACK_REQUEST_COOKIE_HASH = 'rack.request.cookie_hash'
|
|
73
|
+
RACK_REQUEST_COOKIE_STRING = 'rack.request.cookie_string'
|
|
74
|
+
RACK_REQUEST_QUERY_HASH = 'rack.request.query_hash'
|
|
75
|
+
RACK_REQUEST_QUERY_STRING = 'rack.request.query_string'
|
|
76
|
+
RACK_METHODOVERRIDE_ORIGINAL_METHOD = 'rack.methodoverride.original_method'
|
|
77
|
+
RACK_SESSION_UNPACKED_COOKIE_DATA = 'rack.session.unpacked_cookie_data'
|
|
29
78
|
|
|
30
79
|
autoload :Builder, "rack/builder"
|
|
80
|
+
autoload :BodyProxy, "rack/body_proxy"
|
|
31
81
|
autoload :Cascade, "rack/cascade"
|
|
32
82
|
autoload :Chunked, "rack/chunked"
|
|
33
|
-
autoload :CommonLogger, "rack/
|
|
34
|
-
autoload :ConditionalGet, "rack/
|
|
83
|
+
autoload :CommonLogger, "rack/common_logger"
|
|
84
|
+
autoload :ConditionalGet, "rack/conditional_get"
|
|
85
|
+
autoload :Config, "rack/config"
|
|
35
86
|
autoload :ContentLength, "rack/content_length"
|
|
36
87
|
autoload :ContentType, "rack/content_type"
|
|
88
|
+
autoload :ETag, "rack/etag"
|
|
89
|
+
autoload :Events, "rack/events"
|
|
37
90
|
autoload :File, "rack/file"
|
|
91
|
+
autoload :Files, "rack/files"
|
|
38
92
|
autoload :Deflater, "rack/deflater"
|
|
39
93
|
autoload :Directory, "rack/directory"
|
|
40
94
|
autoload :ForwardRequest, "rack/recursive"
|
|
@@ -42,15 +96,24 @@ module Rack
|
|
|
42
96
|
autoload :Head, "rack/head"
|
|
43
97
|
autoload :Lint, "rack/lint"
|
|
44
98
|
autoload :Lock, "rack/lock"
|
|
45
|
-
autoload :
|
|
99
|
+
autoload :Logger, "rack/logger"
|
|
100
|
+
autoload :MediaType, "rack/media_type"
|
|
101
|
+
autoload :MethodOverride, "rack/method_override"
|
|
46
102
|
autoload :Mime, "rack/mime"
|
|
103
|
+
autoload :NullLogger, "rack/null_logger"
|
|
47
104
|
autoload :Recursive, "rack/recursive"
|
|
48
105
|
autoload :Reloader, "rack/reloader"
|
|
49
|
-
autoload :
|
|
50
|
-
autoload :
|
|
106
|
+
autoload :RewindableInput, "rack/rewindable_input"
|
|
107
|
+
autoload :Runtime, "rack/runtime"
|
|
108
|
+
autoload :Sendfile, "rack/sendfile"
|
|
109
|
+
autoload :Server, "rack/server"
|
|
110
|
+
autoload :ShowExceptions, "rack/show_exceptions"
|
|
111
|
+
autoload :ShowStatus, "rack/show_status"
|
|
51
112
|
autoload :Static, "rack/static"
|
|
113
|
+
autoload :TempfileReaper, "rack/tempfile_reaper"
|
|
52
114
|
autoload :URLMap, "rack/urlmap"
|
|
53
115
|
autoload :Utils, "rack/utils"
|
|
116
|
+
autoload :Multipart, "rack/multipart"
|
|
54
117
|
|
|
55
118
|
autoload :MockRequest, "rack/mock"
|
|
56
119
|
autoload :MockResponse, "rack/mock"
|
|
@@ -62,7 +125,6 @@ module Rack
|
|
|
62
125
|
autoload :Basic, "rack/auth/basic"
|
|
63
126
|
autoload :AbstractRequest, "rack/auth/abstract/request"
|
|
64
127
|
autoload :AbstractHandler, "rack/auth/abstract/handler"
|
|
65
|
-
autoload :OpenID, "rack/auth/openid"
|
|
66
128
|
module Digest
|
|
67
129
|
autoload :MD5, "rack/auth/digest/md5"
|
|
68
130
|
autoload :Nonce, "rack/auth/digest/nonce"
|
|
@@ -76,15 +138,4 @@ module Rack
|
|
|
76
138
|
autoload :Pool, "rack/session/pool"
|
|
77
139
|
autoload :Memcache, "rack/session/memcache"
|
|
78
140
|
end
|
|
79
|
-
|
|
80
|
-
# *Adapters* connect Rack with third party web frameworks.
|
|
81
|
-
#
|
|
82
|
-
# Rack includes an adapter for Camping, see README for other
|
|
83
|
-
# frameworks supporting Rack in their code bases.
|
|
84
|
-
#
|
|
85
|
-
# Refer to the submodules for framework-specific calling details.
|
|
86
|
-
|
|
87
|
-
module Adapter
|
|
88
|
-
autoload :Camping, "rack/adapter/camping"
|
|
89
|
-
end
|
|
90
141
|
end
|
data/rack.gemspec
CHANGED
|
@@ -1,54 +1,46 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'lib/rack/version'
|
|
2
4
|
|
|
3
5
|
Gem::Specification.new do |s|
|
|
4
|
-
s.name =
|
|
5
|
-
s.version =
|
|
6
|
-
|
|
7
|
-
s.
|
|
8
|
-
s.
|
|
9
|
-
|
|
10
|
-
s.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
s.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
s.
|
|
22
|
-
s.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
end
|
|
45
|
-
else
|
|
46
|
-
s.add_dependency(%q<test-spec>, [">= 0"])
|
|
47
|
-
s.add_dependency(%q<camping>, [">= 0"])
|
|
48
|
-
s.add_dependency(%q<fcgi>, [">= 0"])
|
|
49
|
-
s.add_dependency(%q<memcache-client>, [">= 0"])
|
|
50
|
-
s.add_dependency(%q<mongrel>, [">= 0"])
|
|
51
|
-
s.add_dependency(%q<ruby-openid>, ["~> 2.0.0"])
|
|
52
|
-
s.add_dependency(%q<thin>, [">= 0"])
|
|
53
|
-
end
|
|
6
|
+
s.name = "rack"
|
|
7
|
+
s.version = Rack::RELEASE
|
|
8
|
+
s.platform = Gem::Platform::RUBY
|
|
9
|
+
s.summary = "A modular Ruby webserver interface."
|
|
10
|
+
s.license = "MIT"
|
|
11
|
+
|
|
12
|
+
s.description = <<~EOF
|
|
13
|
+
Rack provides a minimal, modular and adaptable interface for developing
|
|
14
|
+
web applications in Ruby. By wrapping HTTP requests and responses in
|
|
15
|
+
the simplest way possible, it unifies and distills the API for web
|
|
16
|
+
servers, web frameworks, and software in between (the so-called
|
|
17
|
+
middleware) into a single method call.
|
|
18
|
+
EOF
|
|
19
|
+
|
|
20
|
+
s.files = Dir['{bin/*,contrib/*,example/*,lib/**/*}'] +
|
|
21
|
+
%w(MIT-LICENSE rack.gemspec Rakefile README.rdoc SPEC.rdoc)
|
|
22
|
+
|
|
23
|
+
s.bindir = 'bin'
|
|
24
|
+
s.executables << 'rackup'
|
|
25
|
+
s.require_path = 'lib'
|
|
26
|
+
s.extra_rdoc_files = ['README.rdoc', 'CHANGELOG.md', 'CONTRIBUTING.md']
|
|
27
|
+
|
|
28
|
+
s.author = 'Leah Neukirchen'
|
|
29
|
+
s.email = 'leah@vuxu.org'
|
|
30
|
+
|
|
31
|
+
s.homepage = 'https://github.com/rack/rack'
|
|
32
|
+
|
|
33
|
+
s.required_ruby_version = '>= 2.3.0'
|
|
34
|
+
|
|
35
|
+
s.metadata = {
|
|
36
|
+
"bug_tracker_uri" => "https://github.com/rack/rack/issues",
|
|
37
|
+
"changelog_uri" => "https://github.com/rack/rack/blob/master/CHANGELOG.md",
|
|
38
|
+
"documentation_uri" => "https://rubydoc.info/github/rack/rack",
|
|
39
|
+
"source_code_uri" => "https://github.com/rack/rack"
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
s.add_development_dependency 'minitest', "~> 5.0"
|
|
43
|
+
s.add_development_dependency 'minitest-sprint'
|
|
44
|
+
s.add_development_dependency 'minitest-global_expectations'
|
|
45
|
+
s.add_development_dependency 'rake'
|
|
54
46
|
end
|