rack 1.2.2 → 1.2.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.
- data/README +28 -4
- data/Rakefile +100 -0
- data/SPEC +2 -2
- data/lib/rack/auth/digest/params.rb +1 -1
- data/lib/rack/lint.rb +2 -2
- data/lib/rack/logger.rb +0 -2
- data/lib/rack/rewindable_input.rb +2 -1
- data/lib/rack/sendfile.rb +1 -0
- data/lib/rack/server.rb +13 -8
- data/lib/rack/utils.rb +1 -1
- data/rack.gemspec +2 -2
- data/test/gemloader.rb +6 -0
- data/test/spec_logger.rb +16 -8
- data/test/testrequest.rb +2 -1
- metadata +143 -141
data/README
CHANGED
@@ -119,7 +119,7 @@ By default, the lobster is found at http://localhost:9292.
|
|
119
119
|
|
120
120
|
== Installing with RubyGems
|
121
121
|
|
122
|
-
A Gem of Rack is available at
|
122
|
+
A Gem of Rack is available at rubygems.org. You can install it with:
|
123
123
|
|
124
124
|
gem install rack
|
125
125
|
|
@@ -317,6 +317,30 @@ run on port 11211) and memcache-client installed.
|
|
317
317
|
* Security fix in Rack::Auth::Digest::MD5: when authenticator
|
318
318
|
returned nil, permission was granted on empty password.
|
319
319
|
|
320
|
+
* May 22nd, 2011: Thirteenth public release 1.3.0
|
321
|
+
* Various performance optimizations
|
322
|
+
* Various multipart fixes
|
323
|
+
* Various multipart refactors
|
324
|
+
* Infinite loop fix for multipart
|
325
|
+
* Test coverage for Rack::Server returns
|
326
|
+
* Allow files with '..', but not path components that are '..'
|
327
|
+
* rackup accepts handler-specific options on the command line
|
328
|
+
* Request#params no longer merges POST into GET (but returns the same)
|
329
|
+
* Use URI.encode_www_form_component instead. Use core methods for escaping.
|
330
|
+
* Allow multi-line comments in the config file
|
331
|
+
* Bug L#94 reported by Nikolai Lugovoi, query parameter unescaping.
|
332
|
+
* Rack::Response now deletes Content-Length when appropriate
|
333
|
+
* Rack::Deflater now supports streaming
|
334
|
+
* Improved Rack::Handler loading and searching
|
335
|
+
* Support for the PATCH verb
|
336
|
+
* env['rack.session.options'] now contains session options
|
337
|
+
* Cookies respect renew
|
338
|
+
* Session middleware uses SecureRandom.hex
|
339
|
+
|
340
|
+
* May 22nd, 2011: Fourteenth public release 1.2.3
|
341
|
+
* Pulled in relevant bug fixes from 1.3
|
342
|
+
* Fixed 1.8.6 support
|
343
|
+
|
320
344
|
== Contact
|
321
345
|
|
322
346
|
Please post bugs, suggestions and patches to
|
@@ -370,7 +394,7 @@ would like to thank:
|
|
370
394
|
* Marcus Rückert, for help with configuring and debugging lighttpd.
|
371
395
|
* The WSGI team for the well-done and documented work they've done and
|
372
396
|
Rack builds up on.
|
373
|
-
* All bug reporters and patch
|
397
|
+
* All bug reporters and patch contributors not mentioned above.
|
374
398
|
|
375
399
|
== Copyright
|
376
400
|
|
@@ -396,10 +420,10 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
396
420
|
== Links
|
397
421
|
|
398
422
|
Rack:: <http://rack.rubyforge.org/>
|
399
|
-
Rack's Rubyforge project:: <http://rubyforge.org/projects/rack>
|
400
423
|
Official Rack repositories:: <http://github.com/rack>
|
401
|
-
Rack
|
424
|
+
Rack Bug Tracking:: <http://github.com/rack/rack/issues>
|
402
425
|
rack-devel mailing list:: <http://groups.google.com/group/rack-devel>
|
426
|
+
Rack's Rubyforge project:: <http://rubyforge.org/projects/rack>
|
403
427
|
|
404
428
|
Christian Neukirchen:: <http://chneukirchen.org/>
|
405
429
|
|
data/Rakefile
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
# Rakefile for Rack. -*-ruby-*-
|
2
|
+
|
3
|
+
desc "Run all the tests"
|
4
|
+
task :default => [:test]
|
5
|
+
|
6
|
+
desc "Make an archive as .tar.gz"
|
7
|
+
task :dist => [:chmod, :changelog, :rdoc, "SPEC"] do
|
8
|
+
sh "git archive --format=tar --prefix=#{release}/ HEAD^{tree} >#{release}.tar"
|
9
|
+
sh "pax -waf #{release}.tar -s ':^:#{release}/:' SPEC ChangeLog doc rack.gemspec"
|
10
|
+
sh "gzip -f -9 #{release}.tar"
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Make an official release"
|
14
|
+
task :officialrelease do
|
15
|
+
puts "Official build for #{release}..."
|
16
|
+
sh "rm -rf stage"
|
17
|
+
sh "git clone --shared . stage"
|
18
|
+
sh "cd stage && rake officialrelease_really"
|
19
|
+
sh "mv stage/#{release}.tar.gz stage/#{release}.gem ."
|
20
|
+
end
|
21
|
+
|
22
|
+
task :officialrelease_really => ["SPEC", :dist, :gem] do
|
23
|
+
sh "sha1sum #{release}.tar.gz #{release}.gem"
|
24
|
+
end
|
25
|
+
|
26
|
+
def release
|
27
|
+
"rack-#{File.read("rack.gemspec")[/s.version *= *"(.*?)"/, 1]}"
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "Make binaries executable"
|
31
|
+
task :chmod do
|
32
|
+
Dir["bin/*"].each { |binary| File.chmod(0775, binary) }
|
33
|
+
Dir["test/cgi/test*"].each { |binary| File.chmod(0775, binary) }
|
34
|
+
end
|
35
|
+
|
36
|
+
desc "Generate a ChangeLog"
|
37
|
+
task :changelog do
|
38
|
+
File.open("ChangeLog", "w") { |out|
|
39
|
+
`git log -z`.split("\0").map { |chunk|
|
40
|
+
author = chunk[/Author: (.*)/, 1].strip
|
41
|
+
date = chunk[/Date: (.*)/, 1].strip
|
42
|
+
desc, detail = $'.strip.split("\n", 2)
|
43
|
+
detail ||= ""
|
44
|
+
detail = detail.gsub(/.*darcs-hash:.*/, '')
|
45
|
+
detail.rstrip!
|
46
|
+
out.puts "#{date} #{author}"
|
47
|
+
out.puts " * #{desc.strip}"
|
48
|
+
out.puts detail unless detail.empty?
|
49
|
+
out.puts
|
50
|
+
}
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
file 'lib/rack/lint.rb'
|
56
|
+
desc "Generate Rack Specification"
|
57
|
+
file "SPEC" => 'lib/rack/lint.rb' do
|
58
|
+
File.open("SPEC", "wb") { |file|
|
59
|
+
IO.foreach("lib/rack/lint.rb") { |line|
|
60
|
+
if line =~ /## (.*)/
|
61
|
+
file.puts $1
|
62
|
+
end
|
63
|
+
}
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
67
|
+
desc "Run all the fast tests"
|
68
|
+
task :test => 'SPEC' do
|
69
|
+
opts = ENV['TEST'] || '-a'
|
70
|
+
specopts = ENV['TESTOPTS'] ||
|
71
|
+
"-q -t '^(?!Rack::Handler|Rack::Adapter|Rack::Session::Memcache|rackup)'"
|
72
|
+
|
73
|
+
sh "bacon -I./lib:./test -w #{opts} #{specopts}"
|
74
|
+
end
|
75
|
+
|
76
|
+
desc "Run all the tests"
|
77
|
+
task :fulltest => %w[SPEC chmod] do
|
78
|
+
opts = ENV['TEST'] || '-a'
|
79
|
+
specopts = ENV['TESTOPTS'] || '-q'
|
80
|
+
sh "bacon -r./test/gemloader -I./lib:./test -w #{opts} #{specopts}"
|
81
|
+
end
|
82
|
+
|
83
|
+
task :gem => ["SPEC"] do
|
84
|
+
sh "gem build rack.gemspec"
|
85
|
+
end
|
86
|
+
|
87
|
+
desc "Generate RDoc documentation"
|
88
|
+
task :rdoc => ["SPEC"] do
|
89
|
+
sh(*%w{rdoc --line-numbers --main README
|
90
|
+
--title 'Rack\ Documentation' --charset utf-8 -U -o doc} +
|
91
|
+
%w{README KNOWN-ISSUES SPEC} +
|
92
|
+
Dir["lib/**/*.rb"])
|
93
|
+
end
|
94
|
+
|
95
|
+
task :pushsite => [:rdoc] do
|
96
|
+
sh "cd site && git gc"
|
97
|
+
sh "rsync -avz doc/ chneukirchen@rack.rubyforge.org:/var/www/gforge-projects/rack/doc/"
|
98
|
+
sh "rsync -avz site/ chneukirchen@rack.rubyforge.org:/var/www/gforge-projects/rack/"
|
99
|
+
sh "cd site && git push"
|
100
|
+
end
|
data/SPEC
CHANGED
@@ -3,7 +3,7 @@ can (and should) use Rack::Lint to enforce it.
|
|
3
3
|
When you develop middleware, be sure to add a Lint before and
|
4
4
|
after to catch all mistakes.
|
5
5
|
= Rack applications
|
6
|
-
A Rack application is
|
6
|
+
A Rack application is a Ruby object (not a class) that
|
7
7
|
responds to +call+.
|
8
8
|
It takes exactly one argument, the *environment*
|
9
9
|
and returns an Array of exactly three values:
|
@@ -106,7 +106,7 @@ The input stream must respond to +gets+, +each+, +read+ and +rewind+.
|
|
106
106
|
* +gets+ must be called without arguments and return a string,
|
107
107
|
or +nil+ on EOF.
|
108
108
|
* +read+ behaves like IO#read. Its signature is <tt>read([length, [buffer]])</tt>.
|
109
|
-
If given, +length+ must be
|
109
|
+
If given, +length+ must be a non-negative Integer (>= 0) or +nil+, and +buffer+ must
|
110
110
|
be a String and may not be nil. If +length+ is given and not nil, then this method
|
111
111
|
reads at most +length+ bytes from the input stream. If +length+ is not given or nil,
|
112
112
|
then this method reads all data until EOF.
|
data/lib/rack/lint.rb
CHANGED
@@ -30,7 +30,7 @@ module Rack
|
|
30
30
|
|
31
31
|
## = Rack applications
|
32
32
|
|
33
|
-
## A Rack application is
|
33
|
+
## A Rack application is a Ruby object (not a class) that
|
34
34
|
## responds to +call+.
|
35
35
|
def call(env=nil)
|
36
36
|
dup._call(env)
|
@@ -302,7 +302,7 @@ module Rack
|
|
302
302
|
end
|
303
303
|
|
304
304
|
## * +read+ behaves like IO#read. Its signature is <tt>read([length, [buffer]])</tt>.
|
305
|
-
## If given, +length+ must be
|
305
|
+
## If given, +length+ must be a non-negative Integer (>= 0) or +nil+, and +buffer+ must
|
306
306
|
## be a String and may not be nil. If +length+ is given and not nil, then this method
|
307
307
|
## reads at most +length+ bytes from the input stream. If +length+ is not given or nil,
|
308
308
|
## then this method reads all data until EOF.
|
data/lib/rack/logger.rb
CHANGED
@@ -77,7 +77,8 @@ module Rack
|
|
77
77
|
@rewindable_io.set_encoding(Encoding::BINARY) if @rewindable_io.respond_to?(:set_encoding)
|
78
78
|
@rewindable_io.binmode
|
79
79
|
if filesystem_has_posix_semantics?
|
80
|
-
|
80
|
+
# Use ::File.unlink as 1.9.1 Tempfile has a bug where unlink closes the file!
|
81
|
+
::File.unlink @rewindable_io.path
|
81
82
|
raise 'Unlink failed. IO closed.' if @rewindable_io.closed?
|
82
83
|
@unlinked = true
|
83
84
|
end
|
data/lib/rack/sendfile.rb
CHANGED
data/lib/rack/server.rb
CHANGED
@@ -179,14 +179,6 @@ module Rack
|
|
179
179
|
end
|
180
180
|
|
181
181
|
def start
|
182
|
-
if options[:debug]
|
183
|
-
$DEBUG = true
|
184
|
-
require 'pp'
|
185
|
-
p options[:server]
|
186
|
-
pp wrapped_app
|
187
|
-
pp app
|
188
|
-
end
|
189
|
-
|
190
182
|
if options[:warn]
|
191
183
|
$-w = true
|
192
184
|
end
|
@@ -199,6 +191,18 @@ module Rack
|
|
199
191
|
require library
|
200
192
|
end
|
201
193
|
|
194
|
+
if options[:debug]
|
195
|
+
$DEBUG = true
|
196
|
+
require 'pp'
|
197
|
+
p options[:server]
|
198
|
+
pp wrapped_app
|
199
|
+
pp app
|
200
|
+
end
|
201
|
+
|
202
|
+
# Touch the wrapped app, so that the config.ru is loaded before
|
203
|
+
# daemonization (i.e. before chdir, etc).
|
204
|
+
wrapped_app
|
205
|
+
|
202
206
|
daemonize_app if options[:daemonize]
|
203
207
|
write_pid if options[:pid]
|
204
208
|
|
@@ -226,6 +230,7 @@ module Rack
|
|
226
230
|
args.clear if ENV.include?("REQUEST_METHOD")
|
227
231
|
|
228
232
|
options.merge! opt_parser.parse! args
|
233
|
+
options[:config] = ::File.expand_path(options[:config])
|
229
234
|
ENV["RACK_ENV"] = options[:environment]
|
230
235
|
options
|
231
236
|
end
|
data/lib/rack/utils.rb
CHANGED
@@ -135,7 +135,7 @@ module Rack
|
|
135
135
|
"'" => "'",
|
136
136
|
'"' => """,
|
137
137
|
}
|
138
|
-
ESCAPE_HTML_PATTERN = Regexp.union(ESCAPE_HTML.keys)
|
138
|
+
ESCAPE_HTML_PATTERN = Regexp.union(*ESCAPE_HTML.keys)
|
139
139
|
|
140
140
|
# Escape ampersands, brackets and quotes to their HTML/XML entities.
|
141
141
|
def escape_html(string)
|
data/rack.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "rack"
|
3
|
-
s.version = "1.2.
|
3
|
+
s.version = "1.2.3"
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.summary = "a modular Ruby webserver interface"
|
6
6
|
|
@@ -15,7 +15,7 @@ Also see http://rack.rubyforge.org.
|
|
15
15
|
EOF
|
16
16
|
|
17
17
|
s.files = Dir['{bin/*,contrib/*,example/*,lib/**/*,test/**/*}'] +
|
18
|
-
%w(COPYING KNOWN-ISSUES rack.gemspec README SPEC)
|
18
|
+
%w(COPYING KNOWN-ISSUES rack.gemspec Rakefile README SPEC)
|
19
19
|
s.bindir = 'bin'
|
20
20
|
s.executables << 'rackup'
|
21
21
|
s.require_path = 'lib'
|
data/test/gemloader.rb
ADDED
data/test/spec_logger.rb
CHANGED
@@ -2,19 +2,27 @@ require 'stringio'
|
|
2
2
|
require 'rack/logger'
|
3
3
|
|
4
4
|
describe Rack::Logger do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
log.warn("Nothing to do!")
|
5
|
+
app = lambda { |env|
|
6
|
+
log = env['rack.logger']
|
7
|
+
log.debug("Created logger")
|
8
|
+
log.info("Program started")
|
9
|
+
log.warn("Nothing to do!")
|
11
10
|
|
12
|
-
|
13
|
-
|
11
|
+
[200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]]
|
12
|
+
}
|
14
13
|
|
14
|
+
should "log to rack.errors" do
|
15
15
|
errors = StringIO.new
|
16
16
|
Rack::Logger.new(app).call('rack.errors' => errors)
|
17
17
|
errors.string.should.match(/INFO -- : Program started/)
|
18
18
|
errors.string.should.match(/WARN -- : Nothing to do/)
|
19
19
|
end
|
20
|
+
|
21
|
+
should "conform to Rack::Lint" do
|
22
|
+
errors = StringIO.new
|
23
|
+
a = Rack::Lint.new(Rack::Logger.new(app))
|
24
|
+
Rack::MockRequest.new(a).get('/', 'rack.errors' => errors)
|
25
|
+
errors.string.should.match(/INFO -- : Program started/)
|
26
|
+
errors.string.should.match(/WARN -- : Nothing to do/)
|
27
|
+
end
|
20
28
|
end
|
data/test/testrequest.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
9
|
+
- 3
|
10
|
+
version: 1.2.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Christian Neukirchen
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-05-23 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -123,135 +123,137 @@ extra_rdoc_files:
|
|
123
123
|
files:
|
124
124
|
- bin/rackup
|
125
125
|
- contrib/rack_logo.svg
|
126
|
-
- example/protectedlobster.ru
|
127
126
|
- example/lobster.ru
|
128
127
|
- example/protectedlobster.rb
|
129
|
-
-
|
130
|
-
- lib/rack/
|
131
|
-
- lib/rack/
|
132
|
-
- lib/rack/
|
133
|
-
- lib/rack/
|
134
|
-
- lib/rack/
|
135
|
-
- lib/rack/
|
136
|
-
- lib/rack/
|
137
|
-
- lib/rack/sendfile.rb
|
138
|
-
- lib/rack/urlmap.rb
|
139
|
-
- lib/rack/chunked.rb
|
140
|
-
- lib/rack/head.rb
|
141
|
-
- lib/rack/runtime.rb
|
142
|
-
- lib/rack/handler/webrick.rb
|
143
|
-
- lib/rack/handler/thin.rb
|
144
|
-
- lib/rack/handler/scgi.rb
|
145
|
-
- lib/rack/handler/mongrel.rb
|
146
|
-
- lib/rack/handler/evented_mongrel.rb
|
147
|
-
- lib/rack/handler/swiftiplied_mongrel.rb
|
148
|
-
- lib/rack/handler/lsws.rb
|
149
|
-
- lib/rack/handler/fastcgi.rb
|
150
|
-
- lib/rack/handler/cgi.rb
|
151
|
-
- lib/rack/lock.rb
|
128
|
+
- example/protectedlobster.ru
|
129
|
+
- lib/rack/auth/abstract/handler.rb
|
130
|
+
- lib/rack/auth/abstract/request.rb
|
131
|
+
- lib/rack/auth/basic.rb
|
132
|
+
- lib/rack/auth/digest/md5.rb
|
133
|
+
- lib/rack/auth/digest/nonce.rb
|
134
|
+
- lib/rack/auth/digest/params.rb
|
135
|
+
- lib/rack/auth/digest/request.rb
|
152
136
|
- lib/rack/builder.rb
|
153
|
-
- lib/rack/
|
154
|
-
- lib/rack/
|
155
|
-
- lib/rack/
|
156
|
-
- lib/rack/
|
137
|
+
- lib/rack/cascade.rb
|
138
|
+
- lib/rack/chunked.rb
|
139
|
+
- lib/rack/commonlogger.rb
|
140
|
+
- lib/rack/conditionalget.rb
|
141
|
+
- lib/rack/config.rb
|
142
|
+
- lib/rack/content_length.rb
|
157
143
|
- lib/rack/content_type.rb
|
158
|
-
- lib/rack/
|
144
|
+
- lib/rack/deflater.rb
|
159
145
|
- lib/rack/directory.rb
|
160
|
-
- lib/rack/
|
146
|
+
- lib/rack/etag.rb
|
161
147
|
- lib/rack/file.rb
|
162
|
-
- lib/rack/
|
148
|
+
- lib/rack/handler/cgi.rb
|
149
|
+
- lib/rack/handler/evented_mongrel.rb
|
150
|
+
- lib/rack/handler/fastcgi.rb
|
151
|
+
- lib/rack/handler/lsws.rb
|
152
|
+
- lib/rack/handler/mongrel.rb
|
153
|
+
- lib/rack/handler/scgi.rb
|
154
|
+
- lib/rack/handler/swiftiplied_mongrel.rb
|
155
|
+
- lib/rack/handler/thin.rb
|
156
|
+
- lib/rack/handler/webrick.rb
|
157
|
+
- lib/rack/handler.rb
|
158
|
+
- lib/rack/head.rb
|
159
|
+
- lib/rack/lint.rb
|
163
160
|
- lib/rack/lobster.rb
|
164
|
-
- lib/rack/
|
165
|
-
- lib/rack/config.rb
|
166
|
-
- lib/rack/utils.rb
|
167
|
-
- lib/rack/etag.rb
|
168
|
-
- lib/rack/methodoverride.rb
|
169
|
-
- lib/rack/cascade.rb
|
161
|
+
- lib/rack/lock.rb
|
170
162
|
- lib/rack/logger.rb
|
171
|
-
- lib/rack/
|
172
|
-
- lib/rack/
|
173
|
-
- lib/rack/
|
174
|
-
- lib/rack/auth/digest/md5.rb
|
175
|
-
- lib/rack/auth/basic.rb
|
176
|
-
- lib/rack/auth/abstract/handler.rb
|
177
|
-
- lib/rack/auth/abstract/request.rb
|
178
|
-
- lib/rack/content_length.rb
|
163
|
+
- lib/rack/methodoverride.rb
|
164
|
+
- lib/rack/mime.rb
|
165
|
+
- lib/rack/mock.rb
|
179
166
|
- lib/rack/nulllogger.rb
|
180
|
-
- lib/rack/lint.rb
|
181
167
|
- lib/rack/recursive.rb
|
182
|
-
- lib/rack/mime.rb
|
183
168
|
- lib/rack/reloader.rb
|
169
|
+
- lib/rack/request.rb
|
170
|
+
- lib/rack/response.rb
|
171
|
+
- lib/rack/rewindable_input.rb
|
172
|
+
- lib/rack/runtime.rb
|
173
|
+
- lib/rack/sendfile.rb
|
174
|
+
- lib/rack/server.rb
|
175
|
+
- lib/rack/session/abstract/id.rb
|
176
|
+
- lib/rack/session/cookie.rb
|
177
|
+
- lib/rack/session/memcache.rb
|
178
|
+
- lib/rack/session/pool.rb
|
179
|
+
- lib/rack/showexceptions.rb
|
180
|
+
- lib/rack/showstatus.rb
|
181
|
+
- lib/rack/static.rb
|
182
|
+
- lib/rack/urlmap.rb
|
183
|
+
- lib/rack/utils.rb
|
184
184
|
- lib/rack.rb
|
185
|
-
- test/
|
186
|
-
- test/
|
187
|
-
- test/
|
188
|
-
- test/
|
189
|
-
- test/
|
190
|
-
- test/
|
191
|
-
- test/
|
192
|
-
- test/
|
193
|
-
- test/spec_methodoverride.rb
|
194
|
-
- test/spec_fastcgi.rb
|
195
|
-
- test/spec_chunked.rb
|
196
|
-
- test/spec_cgi.rb
|
197
|
-
- test/multipart/semicolon
|
198
|
-
- test/multipart/filename_with_escaped_quotes
|
185
|
+
- test/cgi/lighttpd.conf
|
186
|
+
- test/cgi/rackup_stub.rb
|
187
|
+
- test/cgi/sample_rackup.ru
|
188
|
+
- test/cgi/test
|
189
|
+
- test/cgi/test.fcgi
|
190
|
+
- test/cgi/test.ru
|
191
|
+
- test/gemloader.rb
|
192
|
+
- test/multipart/bad_robots
|
199
193
|
- test/multipart/binary
|
200
|
-
- test/multipart/fail_16384_nofile
|
201
|
-
- test/multipart/filename_and_modification_param
|
202
|
-
- test/multipart/text
|
203
|
-
- test/multipart/ie
|
204
|
-
- test/multipart/filename_with_percent_escaped_quotes
|
205
194
|
- test/multipart/empty
|
206
|
-
- test/multipart/
|
195
|
+
- test/multipart/fail_16384_nofile
|
207
196
|
- test/multipart/file1.txt
|
197
|
+
- test/multipart/filename_and_modification_param
|
198
|
+
- test/multipart/filename_with_escaped_quotes
|
208
199
|
- test/multipart/filename_with_escaped_quotes_and_modification_param
|
209
|
-
- test/multipart/
|
210
|
-
- test/multipart/bad_robots
|
200
|
+
- test/multipart/filename_with_percent_escaped_quotes
|
211
201
|
- test/multipart/filename_with_unescaped_quotes
|
212
|
-
- test/
|
213
|
-
- test/
|
214
|
-
- test/
|
215
|
-
- test/
|
216
|
-
- test/
|
217
|
-
- test/
|
218
|
-
- test/
|
219
|
-
- test/
|
220
|
-
- test/
|
221
|
-
- test/
|
202
|
+
- test/multipart/ie
|
203
|
+
- test/multipart/nested
|
204
|
+
- test/multipart/none
|
205
|
+
- test/multipart/semicolon
|
206
|
+
- test/multipart/text
|
207
|
+
- test/rackup/config.ru
|
208
|
+
- test/spec_auth_basic.rb
|
209
|
+
- test/spec_auth_digest.rb
|
210
|
+
- test/spec_builder.rb
|
211
|
+
- test/spec_cascade.rb
|
212
|
+
- test/spec_cgi.rb
|
213
|
+
- test/spec_chunked.rb
|
214
|
+
- test/spec_commonlogger.rb
|
222
215
|
- test/spec_conditionalget.rb
|
223
|
-
- test/
|
216
|
+
- test/spec_config.rb
|
217
|
+
- test/spec_content_length.rb
|
218
|
+
- test/spec_content_type.rb
|
224
219
|
- test/spec_deflater.rb
|
225
|
-
- test/
|
226
|
-
- test/
|
220
|
+
- test/spec_directory.rb
|
221
|
+
- test/spec_etag.rb
|
222
|
+
- test/spec_fastcgi.rb
|
223
|
+
- test/spec_file.rb
|
224
|
+
- test/spec_handler.rb
|
225
|
+
- test/spec_head.rb
|
226
|
+
- test/spec_lint.rb
|
227
|
+
- test/spec_lobster.rb
|
227
228
|
- test/spec_lock.rb
|
229
|
+
- test/spec_logger.rb
|
230
|
+
- test/spec_methodoverride.rb
|
231
|
+
- test/spec_mock.rb
|
232
|
+
- test/spec_mongrel.rb
|
228
233
|
- test/spec_nulllogger.rb
|
229
|
-
- test/
|
230
|
-
- test/
|
234
|
+
- test/spec_recursive.rb
|
235
|
+
- test/spec_request.rb
|
236
|
+
- test/spec_response.rb
|
237
|
+
- test/spec_rewindable_input.rb
|
231
238
|
- test/spec_runtime.rb
|
232
|
-
- test/
|
233
|
-
- test/
|
234
|
-
- test/
|
239
|
+
- test/spec_sendfile.rb
|
240
|
+
- test/spec_session_cookie.rb
|
241
|
+
- test/spec_session_memcache.rb
|
242
|
+
- test/spec_session_pool.rb
|
243
|
+
- test/spec_showexceptions.rb
|
244
|
+
- test/spec_showstatus.rb
|
245
|
+
- test/spec_static.rb
|
246
|
+
- test/spec_thin.rb
|
247
|
+
- test/spec_urlmap.rb
|
248
|
+
- test/spec_utils.rb
|
235
249
|
- test/spec_webrick.rb
|
236
|
-
- test/
|
237
|
-
- test/spec_etag.rb
|
238
|
-
- test/spec_mock.rb
|
239
|
-
- test/cgi/sample_rackup.ru
|
240
|
-
- test/cgi/test
|
241
|
-
- test/cgi/test.fcgi
|
242
|
-
- test/cgi/lighttpd.conf
|
243
|
-
- test/cgi/rackup_stub.rb
|
244
|
-
- test/cgi/test.ru
|
245
|
-
- test/spec_builder.rb
|
246
|
-
- test/spec_auth_basic.rb
|
250
|
+
- test/testrequest.rb
|
247
251
|
- test/unregistered_handler/rack/handler/unregistered.rb
|
248
252
|
- test/unregistered_handler/rack/handler/unregistered_long_one.rb
|
249
|
-
- test/spec_handler.rb
|
250
|
-
- test/spec_session_pool.rb
|
251
|
-
- test/spec_recursive.rb
|
252
253
|
- COPYING
|
253
254
|
- KNOWN-ISSUES
|
254
255
|
- rack.gemspec
|
256
|
+
- Rakefile
|
255
257
|
- README
|
256
258
|
- SPEC
|
257
259
|
has_rdoc: true
|
@@ -284,50 +286,50 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
284
286
|
requirements: []
|
285
287
|
|
286
288
|
rubyforge_project: rack
|
287
|
-
rubygems_version: 1.
|
289
|
+
rubygems_version: 1.5.2
|
288
290
|
signing_key:
|
289
291
|
specification_version: 3
|
290
292
|
summary: a modular Ruby webserver interface
|
291
293
|
test_files:
|
292
|
-
- test/
|
293
|
-
- test/spec_content_type.rb
|
294
|
-
- test/spec_thin.rb
|
294
|
+
- test/spec_auth_basic.rb
|
295
295
|
- test/spec_auth_digest.rb
|
296
|
-
- test/
|
297
|
-
- test/
|
298
|
-
- test/spec_rewindable_input.rb
|
299
|
-
- test/spec_methodoverride.rb
|
300
|
-
- test/spec_fastcgi.rb
|
301
|
-
- test/spec_chunked.rb
|
296
|
+
- test/spec_builder.rb
|
297
|
+
- test/spec_cascade.rb
|
302
298
|
- test/spec_cgi.rb
|
303
|
-
- test/
|
304
|
-
- test/
|
305
|
-
- test/spec_mongrel.rb
|
306
|
-
- test/spec_content_length.rb
|
307
|
-
- test/spec_session_cookie.rb
|
308
|
-
- test/spec_utils.rb
|
309
|
-
- test/spec_showexceptions.rb
|
310
|
-
- test/spec_lobster.rb
|
311
|
-
- test/spec_logger.rb
|
312
|
-
- test/spec_sendfile.rb
|
299
|
+
- test/spec_chunked.rb
|
300
|
+
- test/spec_commonlogger.rb
|
313
301
|
- test/spec_conditionalget.rb
|
314
|
-
- test/spec_lint.rb
|
315
|
-
- test/spec_deflater.rb
|
316
|
-
- test/spec_showstatus.rb
|
317
|
-
- test/spec_lock.rb
|
318
|
-
- test/spec_nulllogger.rb
|
319
302
|
- test/spec_config.rb
|
320
|
-
- test/
|
321
|
-
- test/
|
322
|
-
- test/
|
303
|
+
- test/spec_content_length.rb
|
304
|
+
- test/spec_content_type.rb
|
305
|
+
- test/spec_deflater.rb
|
323
306
|
- test/spec_directory.rb
|
324
|
-
- test/spec_cascade.rb
|
325
|
-
- test/spec_webrick.rb
|
326
|
-
- test/spec_request.rb
|
327
307
|
- test/spec_etag.rb
|
328
|
-
- test/
|
329
|
-
- test/
|
330
|
-
- test/spec_auth_basic.rb
|
308
|
+
- test/spec_fastcgi.rb
|
309
|
+
- test/spec_file.rb
|
331
310
|
- test/spec_handler.rb
|
332
|
-
- test/
|
311
|
+
- test/spec_head.rb
|
312
|
+
- test/spec_lint.rb
|
313
|
+
- test/spec_lobster.rb
|
314
|
+
- test/spec_lock.rb
|
315
|
+
- test/spec_logger.rb
|
316
|
+
- test/spec_methodoverride.rb
|
317
|
+
- test/spec_mock.rb
|
318
|
+
- test/spec_mongrel.rb
|
319
|
+
- test/spec_nulllogger.rb
|
333
320
|
- test/spec_recursive.rb
|
321
|
+
- test/spec_request.rb
|
322
|
+
- test/spec_response.rb
|
323
|
+
- test/spec_rewindable_input.rb
|
324
|
+
- test/spec_runtime.rb
|
325
|
+
- test/spec_sendfile.rb
|
326
|
+
- test/spec_session_cookie.rb
|
327
|
+
- test/spec_session_memcache.rb
|
328
|
+
- test/spec_session_pool.rb
|
329
|
+
- test/spec_showexceptions.rb
|
330
|
+
- test/spec_showstatus.rb
|
331
|
+
- test/spec_static.rb
|
332
|
+
- test/spec_thin.rb
|
333
|
+
- test/spec_urlmap.rb
|
334
|
+
- test/spec_utils.rb
|
335
|
+
- test/spec_webrick.rb
|