mongrel 1.1.5 → 1.2.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +68 -0
- data/{Manifest → Manifest.txt} +15 -15
- data/{README → README.txt} +6 -0
- data/Rakefile +8 -0
- data/bin/mongrel_rails +5 -4
- data/examples/camping/blog.rb +0 -0
- data/ext/{http11_java → http11}/Http11Service.java +0 -0
- data/ext/http11/ext_help.h +1 -0
- data/ext/http11/http11.c +152 -20
- data/ext/http11/http11_parser.c +262 -240
- data/ext/http11/http11_parser.java.rl +3 -14
- data/ext/http11/http11_parser.rl +19 -18
- data/ext/http11/http11_parser_common.rl +1 -1
- data/ext/{http11_java → http11}/org/jruby/mongrel/Http11.java +36 -61
- data/ext/http11/org/jruby/mongrel/Http11Parser.java +486 -0
- data/lib/mongrel.rb +16 -5
- data/lib/mongrel/cgi.rb +2 -2
- data/lib/mongrel/command.rb +1 -3
- data/lib/mongrel/configurator.rb +5 -5
- data/lib/mongrel/const.rb +1 -1
- data/lib/mongrel/handlers.rb +5 -5
- data/lib/mongrel/http_request.rb +1 -1
- data/lib/mongrel/http_response.rb +4 -1
- data/lib/mongrel/rails.rb +1 -1
- data/tasks/gem.rake +28 -0
- data/tasks/native.rake +24 -0
- data/tasks/ragel.rake +20 -0
- data/test/test_conditional.rb +1 -1
- data/test/test_handlers.rb +19 -7
- data/test/test_ws.rb +2 -0
- data/test/testhelp.rb +5 -0
- metadata +76 -108
- data.tar.gz.sig +0 -2
- data/CHANGELOG +0 -18
- data/examples/mongrel_simple_ctrl.rb +0 -92
- data/examples/mongrel_simple_service.rb +0 -116
- data/ext/http11_java/org/jruby/mongrel/Http11Parser.java +0 -572
- data/mongrel-public_cert.pem +0 -20
- data/mongrel.gemspec +0 -235
- metadata.gz.sig +0 -0
data/lib/mongrel.rb
CHANGED
@@ -9,7 +9,13 @@ require 'uri'
|
|
9
9
|
require 'stringio'
|
10
10
|
|
11
11
|
# Compiled Mongrel extension
|
12
|
-
|
12
|
+
# support multiple ruby version (fat binaries under windows)
|
13
|
+
begin
|
14
|
+
require 'http11'
|
15
|
+
rescue LoadError
|
16
|
+
RUBY_VERSION =~ /(\d+.\d+)/
|
17
|
+
require "#{$1}/http11"
|
18
|
+
end
|
13
19
|
|
14
20
|
# Gem conditional loader
|
15
21
|
require 'mongrel/gems'
|
@@ -200,7 +206,7 @@ module Mongrel
|
|
200
206
|
STDERR.puts "#{Time.now}: Client error: #{e.inspect}"
|
201
207
|
STDERR.puts e.backtrace.join("\n")
|
202
208
|
end
|
203
|
-
request.body.
|
209
|
+
request.body.close! if request and request.body.class == Tempfile
|
204
210
|
end
|
205
211
|
end
|
206
212
|
|
@@ -320,10 +326,15 @@ module Mongrel
|
|
320
326
|
def register(uri, handler, in_front=false)
|
321
327
|
begin
|
322
328
|
@classifier.register(uri, [handler])
|
323
|
-
rescue URIClassifier::RegistrationError
|
329
|
+
rescue URIClassifier::RegistrationError => e
|
324
330
|
handlers = @classifier.resolve(uri)[2]
|
325
|
-
|
326
|
-
|
331
|
+
if handlers
|
332
|
+
# Already registered
|
333
|
+
method_name = in_front ? 'unshift' : 'push'
|
334
|
+
handlers.send(method_name, handler)
|
335
|
+
else
|
336
|
+
raise
|
337
|
+
end
|
327
338
|
end
|
328
339
|
handler.listener = self
|
329
340
|
end
|
data/lib/mongrel/cgi.rb
CHANGED
@@ -26,7 +26,7 @@ module Mongrel
|
|
26
26
|
# Refer to DirHandler#can_serve for more information on this.
|
27
27
|
class CGIWrapper < ::CGI
|
28
28
|
public :env_table
|
29
|
-
attr_reader :
|
29
|
+
attr_reader :head
|
30
30
|
attr_accessor :handler
|
31
31
|
# Set this to false if you want calls to CGIWrapper.out to not actually send
|
32
32
|
# the response until you force it.
|
@@ -105,7 +105,7 @@ module Mongrel
|
|
105
105
|
when Hash
|
106
106
|
cookie.each_value {|c| to['Set-Cookie'] = c.to_s}
|
107
107
|
else
|
108
|
-
to['Set-Cookie'] =
|
108
|
+
to['Set-Cookie'] = head['cookie'].to_s
|
109
109
|
end
|
110
110
|
|
111
111
|
@head.delete('cookie')
|
data/lib/mongrel/command.rb
CHANGED
@@ -61,9 +61,7 @@ module Mongrel
|
|
61
61
|
# I need to add my own -v definition to prevent the -v from exiting by default as well.
|
62
62
|
@opt.on_tail("--version", "Show version") do
|
63
63
|
@done_validating = true
|
64
|
-
|
65
|
-
puts "Version #{Mongrel::Const::MONGREL_VERSION}"
|
66
|
-
end
|
64
|
+
puts "Version #{Mongrel::Const::MONGREL_VERSION}"
|
67
65
|
end
|
68
66
|
|
69
67
|
@opt.parse! argv
|
data/lib/mongrel/configurator.rb
CHANGED
@@ -81,13 +81,13 @@ module Mongrel
|
|
81
81
|
|
82
82
|
# Writes the PID file if we're not on Windows.
|
83
83
|
def write_pid_file
|
84
|
-
if RUBY_PLATFORM !~ /mswin/
|
84
|
+
if RUBY_PLATFORM !~ /mingw|mswin/
|
85
85
|
log "Writing PID file to #{@pid_file}"
|
86
86
|
open(@pid_file,"w") {|f| f.write(Process.pid) }
|
87
87
|
open(@pid_file,"w") do |f|
|
88
88
|
f.write(Process.pid)
|
89
89
|
File.chmod(0644, @pid_file)
|
90
|
-
end
|
90
|
+
end
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
@@ -185,7 +185,7 @@ module Mongrel
|
|
185
185
|
def daemonize(options={})
|
186
186
|
ops = resolve_defaults(options)
|
187
187
|
# save this for later since daemonize will hose it
|
188
|
-
if RUBY_PLATFORM !~ /mswin/
|
188
|
+
if RUBY_PLATFORM !~ /mingw|mswin/
|
189
189
|
require 'daemons/daemonize'
|
190
190
|
|
191
191
|
logfile = ops[:log_file]
|
@@ -344,7 +344,7 @@ module Mongrel
|
|
344
344
|
# it reads it in and does an eval on the contents passing in the right
|
345
345
|
# binding so they can put their own Configurator statements.
|
346
346
|
def run_config(script)
|
347
|
-
open(script) {|f| eval(f.read, proc {self}) }
|
347
|
+
open(script) {|f| eval(f.read, proc {self}.binding) }
|
348
348
|
end
|
349
349
|
|
350
350
|
# Sets up the standard signal handlers that are used on most Ruby
|
@@ -366,7 +366,7 @@ module Mongrel
|
|
366
366
|
# clean up the pid file always
|
367
367
|
at_exit { remove_pid_file }
|
368
368
|
|
369
|
-
if RUBY_PLATFORM !~ /mswin/
|
369
|
+
if RUBY_PLATFORM !~ /mingw|mswin/
|
370
370
|
# graceful shutdown
|
371
371
|
trap("TERM") { log "TERM signal received."; stop }
|
372
372
|
trap("USR1") { log "USR1 received, toggling $mongrel_debug_client to #{!$mongrel_debug_client}"; $mongrel_debug_client = !$mongrel_debug_client }
|
data/lib/mongrel/const.rb
CHANGED
data/lib/mongrel/handlers.rb
CHANGED
@@ -205,11 +205,11 @@ module Mongrel
|
|
205
205
|
# test to see if this is a conditional request, and test if
|
206
206
|
# the response would be identical to the last response
|
207
207
|
same_response = case
|
208
|
-
when modified_since && !last_response_time = Time.httpdate(modified_since) rescue nil
|
209
|
-
when modified_since && last_response_time > Time.now
|
210
|
-
when modified_since && mtime > last_response_time
|
211
|
-
when none_match && none_match == '*'
|
212
|
-
when none_match && !none_match.strip.split(/\s*,\s*/).include?(etag)
|
208
|
+
when modified_since && !last_response_time = Time.httpdate(modified_since) rescue nil then false
|
209
|
+
when modified_since && last_response_time > Time.now then false
|
210
|
+
when modified_since && mtime > last_response_time then false
|
211
|
+
when none_match && none_match == '*' then false
|
212
|
+
when none_match && !none_match.strip.split(/\s*,\s*/).include?(etag) then false
|
213
213
|
else modified_since || none_match # validation successful if we get this far and at least one of the header exists
|
214
214
|
end
|
215
215
|
|
data/lib/mongrel/http_request.rb
CHANGED
@@ -93,7 +93,7 @@ module Mongrel
|
|
93
93
|
STDERR.puts e.backtrace.join("\n")
|
94
94
|
# any errors means we should delete the file, including if the file is dumped
|
95
95
|
@socket.close rescue nil
|
96
|
-
@body.
|
96
|
+
@body.close! if @body.class == Tempfile
|
97
97
|
@body = nil # signals that there was a problem
|
98
98
|
end
|
99
99
|
end
|
@@ -75,7 +75,10 @@ module Mongrel
|
|
75
75
|
elsif @header_sent
|
76
76
|
raise "You have already sent the request headers."
|
77
77
|
else
|
78
|
-
|
78
|
+
# XXX Dubious ( http://mongrel.rubyforge.org/ticket/19 )
|
79
|
+
@header.out.close
|
80
|
+
@header = HeaderOut.new(StringIO.new)
|
81
|
+
|
79
82
|
@body.close
|
80
83
|
@body = StringIO.new
|
81
84
|
end
|
data/lib/mongrel/rails.rb
CHANGED
data/tasks/gem.rake
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'hoe'
|
2
|
+
|
3
|
+
HOE = Hoe.spec 'mongrel' do
|
4
|
+
self.rubyforge_name = 'mongrel'
|
5
|
+
developer 'Zed A. Shaw', 'mongrel-users@rubyforge.org'
|
6
|
+
|
7
|
+
spec_extras[:required_ruby_version] = Gem::Requirement.new('>= 1.8.6')
|
8
|
+
|
9
|
+
spec_extras[:extensions] = ["ext/http11/extconf.rb"]
|
10
|
+
spec_extras[:executables] = ['mongrel_rails']
|
11
|
+
|
12
|
+
extra_rdoc_files << 'LICENSE'
|
13
|
+
|
14
|
+
extra_deps << ['gem_plugin', '~> 0.2.3']
|
15
|
+
extra_deps << ['daemons', '~> 1.0.10']
|
16
|
+
|
17
|
+
extra_dev_deps << ['rake-compiler', "~> 0.7.0"]
|
18
|
+
|
19
|
+
clean_globs.push('test_*.log', 'log')
|
20
|
+
end
|
21
|
+
|
22
|
+
file "#{HOE.spec.name}.gemspec" => ['Rakefile', 'tasks/gem.rake'] do |t|
|
23
|
+
puts "Generating #{t.name}"
|
24
|
+
File.open(t.name, 'w') { |f| f.puts HOE.spec.to_yaml }
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "Generate or update the standalone gemspec file for the project"
|
28
|
+
task :gemspec => ["#{HOE.spec.name}.gemspec"]
|
data/tasks/native.rake
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# use rake-compiler for building the extension
|
2
|
+
require 'rake/extensiontask'
|
3
|
+
|
4
|
+
# build http11 C extension
|
5
|
+
Rake::ExtensionTask.new('http11', HOE.spec) do |ext|
|
6
|
+
# define target for extension (supporting fat binaries)
|
7
|
+
if RUBY_PLATFORM =~ /mingw|mswin/ then
|
8
|
+
RUBY_VERSION =~ /(\d+\.\d+)/
|
9
|
+
ext.lib_dir = "lib/#{$1}"
|
10
|
+
end
|
11
|
+
|
12
|
+
# define cross-compilation tasks when not on Windows.
|
13
|
+
unless RUBY_PLATFORM =~ /mingw|mswin/ then
|
14
|
+
ext.cross_compile = true
|
15
|
+
ext.cross_platform = ['i386-mswin32', 'i386-mingw32']
|
16
|
+
|
17
|
+
ext.cross_compiling do |gs|
|
18
|
+
gs.dependencies.delete gs.dependencies.find { |d| d.name == 'daemons' }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# ensure things are built prior testing
|
24
|
+
task :test => [:compile]
|
data/tasks/ragel.rake
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
# the following tasks ease the build of C file from Ragel one
|
3
|
+
|
4
|
+
file 'ext/http11/http11_parser.c' => ['ext/http11/http11_parser.rl'] do |t|
|
5
|
+
begin
|
6
|
+
sh "ragel #{t.prerequisites.last} -C -G2 -o #{t.name}"
|
7
|
+
rescue
|
8
|
+
fail "Could not build wrapper using Ragel (it failed or not installed?)"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
file 'ext/http11/org/jruby/mongrel/Http11Parser.java' => ['ext/http11/http11_parser.java.rl'] do |t|
|
13
|
+
begin
|
14
|
+
sh "ragel #{t.prerequisites.last} -J -G2 -o #{t.name}"
|
15
|
+
rescue
|
16
|
+
fail "Could not build wrapper using Ragel (it failed or not installed?)"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
task :ragel => (defined?(JRUBY_VERSION) ? 'ext/http11/org/jruby/mongrel/Http11Parser.java' : 'ext/http11/http11_parser.c')
|
data/test/test_conditional.rb
CHANGED
@@ -17,7 +17,7 @@ class ConditionalResponseTest < Test::Unit::TestCase
|
|
17
17
|
@http = Net::HTTP.new(@server.host, @server.port)
|
18
18
|
|
19
19
|
# get the ETag and Last-Modified headers
|
20
|
-
@path = '/README'
|
20
|
+
@path = '/README.txt'
|
21
21
|
res = @http.start { |http| http.get(@path) }
|
22
22
|
assert_not_nil @etag = res['ETag']
|
23
23
|
assert_not_nil @last_modified = res['Last-Modified']
|
data/test/test_handlers.rb
CHANGED
@@ -49,17 +49,27 @@ class HandlersTest < Test::Unit::TestCase
|
|
49
49
|
uri "/relative", :handler => Mongrel::DirHandler.new(nil, listing_allowed=false, index_html="none")
|
50
50
|
end
|
51
51
|
end
|
52
|
-
|
53
|
-
|
54
|
-
# Do nothing
|
52
|
+
|
53
|
+
unless windows?
|
54
|
+
File.open("/tmp/testfile", 'w') { } # Do nothing
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
@config.run
|
58
58
|
end
|
59
59
|
|
60
60
|
def teardown
|
61
61
|
@config.stop(false, true)
|
62
|
-
File.delete "/tmp/testfile"
|
62
|
+
File.delete "/tmp/testfile" unless windows?
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_registration_exception_is_not_lost
|
66
|
+
assert_raises(Mongrel::URIClassifier::RegistrationError) do
|
67
|
+
@config = Mongrel::Configurator.new do
|
68
|
+
listener do
|
69
|
+
uri "bogus", :handler => SimpleHandler.new
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
63
73
|
end
|
64
74
|
|
65
75
|
def test_more_web_server
|
@@ -74,10 +84,12 @@ class HandlersTest < Test::Unit::TestCase
|
|
74
84
|
])
|
75
85
|
check_status res, String
|
76
86
|
end
|
77
|
-
|
87
|
+
|
78
88
|
def test_nil_dirhandler
|
89
|
+
return if windows?
|
90
|
+
|
79
91
|
# Camping uses this internally
|
80
|
-
handler = Mongrel::DirHandler.new(nil, false)
|
92
|
+
handler = Mongrel::DirHandler.new(nil, false)
|
81
93
|
assert handler.can_serve("/tmp/testfile")
|
82
94
|
# Not a bug! A nil @file parameter is the only circumstance under which
|
83
95
|
# we are allowed to serve any existing file
|
data/test/test_ws.rb
CHANGED
@@ -93,6 +93,8 @@ class WebServerTest < Test::Unit::TestCase
|
|
93
93
|
end
|
94
94
|
|
95
95
|
def test_num_processors_overload
|
96
|
+
# Skipped this for Windows until further investigation
|
97
|
+
return if RUBY_PLATFORM =~ /mingw|mswin/
|
96
98
|
redirect_test_io do
|
97
99
|
assert_raises Errno::ECONNRESET, Errno::EPIPE, Errno::ECONNABORTED, Errno::EINVAL, IOError do
|
98
100
|
tests = [
|
data/test/testhelp.rb
CHANGED
metadata
CHANGED
@@ -1,137 +1,110 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongrel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zed A. Shaw
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
- |
|
12
|
-
-----BEGIN CERTIFICATE-----
|
13
|
-
MIIDUDCCAjigAwIBAgIBADANBgkqhkiG9w0BAQUFADBOMRwwGgYDVQQDDBNtb25n
|
14
|
-
cmVsLWRldmVsb3BtZW50MRkwFwYKCZImiZPyLGQBGRYJcnVieWZvcmdlMRMwEQYK
|
15
|
-
CZImiZPyLGQBGRYDb3JnMB4XDTA3MDkxNjEwMzI0OVoXDTA4MDkxNTEwMzI0OVow
|
16
|
-
TjEcMBoGA1UEAwwTbW9uZ3JlbC1kZXZlbG9wbWVudDEZMBcGCgmSJomT8ixkARkW
|
17
|
-
CXJ1Ynlmb3JnZTETMBEGCgmSJomT8ixkARkWA29yZzCCASIwDQYJKoZIhvcNAQEB
|
18
|
-
BQADggEPADCCAQoCggEBAMb9v3B01eOHk3FyypbQgKXzJplUE5P6dXoG+xpPm0Lv
|
19
|
-
P7BQmeMncOwqQ7zXpVQU+lTpXtQFTsOE3vL7KnhQFJKGvUAkbh24VFyopu1I0yqF
|
20
|
-
mGu4nRqNXGXVj8TvLSj4S1WpSRLAa0acLPNyKhGmoV9+crqQypSjM6XKjBeppifo
|
21
|
-
4eBmWGjiJEYMIJBvJZPJ4rAVDDA8C6CM1m3gMBGNh8ELDhU8HI9AP3dMIkTI2Wx9
|
22
|
-
9xkJwHdroAaS0IFFtYChrwee4FbCF1FHDgoTosMwa47DrLHg4hZ6ojaKwK5QVWEV
|
23
|
-
XGb6ju5UqpktnSWF2W+Lvl/K0tI42OH2CAhebT1gEVUCAwEAAaM5MDcwCQYDVR0T
|
24
|
-
BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFGHChyMSZ16u9WOzKhgJSQ9lqDc5
|
25
|
-
MA0GCSqGSIb3DQEBBQUAA4IBAQA/lfeN2WdB1xN+82tT7vNS4HOjRQw6MUh5yktu
|
26
|
-
GQjaGqm0UB+aX0Z9y0B0qpfv9rj7nmIvEGiwBmDepNWYCGuW15JyqpN7QVVnG2xS
|
27
|
-
Mrame7VqgjM7A+VGDD5In5LtWbM/CHAATvvFlQ5Ph13YE1EdnVbZ65c+KQv+5sFY
|
28
|
-
Q+zEop74d878uaC/SAHHXS46TiXneocaLSYw1CEZs/MAIy+9c4Q5ESbGpgnfg1Ad
|
29
|
-
6lwl7k3hsNHO/+tZzx4HJtOXDI1yAl3+q6T9J0yI3z97EinwvAKhS1eyOI2Y5eeT
|
30
|
-
tbQaNYkU127B3l/VNpd8fQm3Jkl/PqCCmDBQjUszFrJEODug
|
31
|
-
-----END CERTIFICATE-----
|
10
|
+
cert_chain: []
|
32
11
|
|
33
|
-
-
|
34
|
-
-----BEGIN CERTIFICATE-----
|
35
|
-
MIIDPzCCAiegAwIBAgIBADANBgkqhkiG9w0BAQUFADBOMRwwGgYDVQQDDBNtb25n
|
36
|
-
cmVsLWRldmVsb3BtZW50MRkwFwYKCZImiZPyLGQBGRYJcnVieWZvcmdlMRMwEQYK
|
37
|
-
CZImiZPyLGQBGRYDb3JnMB4XDTA3MDkxNjEwMzMwMFoXDTA4MDkxNTEwMzMwMFow
|
38
|
-
PTENMAsGA1UEAwwEZXZhbjEYMBYGCgmSJomT8ixkARkWCGNsb3VkYnVyMRIwEAYK
|
39
|
-
CZImiZPyLGQBGRYCc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDk
|
40
|
-
LQijz2fICmev4+9s0WB71WzJFYCUYFQQxqGlenbxWut9dlPSsBbskGjg+UITeOXi
|
41
|
-
cTh3MTqAB0i1LJyNOiyvDsAivn7GjKXhVvflp2/npMhBBe83P4HOWqeQBjkk3QJI
|
42
|
-
FFNBvqbFLeEXIP+HiqAOiyNHZEVXMepLEJLzGrg3Ly7M7A6L5fK7jDrt8jkm+c+8
|
43
|
-
zGquVHV5ohAebGd/vpHMLjpA7lCG5+MBgYZd33rRfNtCxDJMNRgnOu9PsB05+LJn
|
44
|
-
MpDKQq3x0SkOf5A+MVOcadNCaAkFflYk3SUcXaXWxu/eCHgqfW1m76RNSp5djpKE
|
45
|
-
CgNPK9lGIWpB3CHzDaVNAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSw
|
46
|
-
MB0GA1UdDgQWBBT5aonPfFBdJ5rWFG+8dZwgyB54LjANBgkqhkiG9w0BAQUFAAOC
|
47
|
-
AQEAiKbzWgMcvZs/TPwJxr8tJ+7mSGz7+zDkWcbBl8FpQq1DtRcATh1oyTkQT7t+
|
48
|
-
rFEBYMmb0FxbbUnojQp8hIFgFkUwFpStwWBL/okLSehntzI2iwjuEtfj4ac9Q3Y2
|
49
|
-
uSdbmZqsQTuu+lEUc5C4qLK7YKwToaul+cx7vWxyk1YendcVwRlFLIBqA5cPrwo3
|
50
|
-
yyGLTHlRYn2c9PSbM1B63Yg+LqSSAa4QSU3Wv9pNdffVpvwHPVEQpO7ZDo5slQFL
|
51
|
-
Gf6+gbD/eZAvhpvmn8JlXb+LxKaFVMs2Yvrk1xOuT76SsPjEGWxkr7jZCIpsYfgQ
|
52
|
-
ALN3mi/9z0Mf1YroliUgF0v5Yw==
|
53
|
-
-----END CERTIFICATE-----
|
54
|
-
|
55
|
-
date: 2008-05-22 00:00:00 -04:00
|
12
|
+
date: 2010-03-18 00:00:00 -03:00
|
56
13
|
default_executable:
|
57
14
|
dependencies:
|
58
15
|
- !ruby/object:Gem::Dependency
|
59
16
|
name: gem_plugin
|
17
|
+
type: :runtime
|
60
18
|
version_requirement:
|
61
19
|
version_requirements: !ruby/object:Gem::Requirement
|
62
20
|
requirements:
|
63
|
-
- -
|
21
|
+
- - ~>
|
64
22
|
- !ruby/object:Gem::Version
|
65
23
|
version: 0.2.3
|
66
24
|
version:
|
67
25
|
- !ruby/object:Gem::Dependency
|
68
26
|
name: daemons
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.10
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rubyforge
|
37
|
+
type: :development
|
69
38
|
version_requirement:
|
70
39
|
version_requirements: !ruby/object:Gem::Requirement
|
71
40
|
requirements:
|
72
41
|
- - ">="
|
73
42
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
43
|
+
version: 2.0.3
|
75
44
|
version:
|
76
45
|
- !ruby/object:Gem::Dependency
|
77
|
-
name:
|
46
|
+
name: gemcutter
|
47
|
+
type: :development
|
78
48
|
version_requirement:
|
79
49
|
version_requirements: !ruby/object:Gem::Requirement
|
80
50
|
requirements:
|
81
51
|
- - ">="
|
82
52
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
53
|
+
version: 0.3.0
|
84
54
|
version:
|
85
55
|
- !ruby/object:Gem::Dependency
|
86
|
-
name:
|
56
|
+
name: rake-compiler
|
57
|
+
type: :development
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ~>
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 0.7.0
|
64
|
+
version:
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: hoe
|
67
|
+
type: :development
|
87
68
|
version_requirement:
|
88
69
|
version_requirements: !ruby/object:Gem::Requirement
|
89
70
|
requirements:
|
90
71
|
- - ">="
|
91
72
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
73
|
+
version: 2.5.0
|
93
74
|
version:
|
94
|
-
description:
|
95
|
-
|
75
|
+
description: |-
|
76
|
+
Mongrel is a small library that provides a very fast HTTP 1.1 server for Ruby web applications. It is not particular to any framework, and is intended to be just enough to get a web application running behind a more complete and robust web server.
|
77
|
+
|
78
|
+
What makes Mongrel so fast is the careful use of an Ragel extension to provide fast, accurate HTTP 1.1 protocol parsing. This makes the server scream without too many portability issues.
|
79
|
+
|
80
|
+
See http://mongrel.rubyforge.org for more information.
|
81
|
+
email:
|
82
|
+
- mongrel-users@rubyforge.org
|
96
83
|
executables:
|
97
84
|
- mongrel_rails
|
98
85
|
extensions:
|
99
86
|
- ext/http11/extconf.rb
|
100
87
|
extra_rdoc_files:
|
101
|
-
-
|
102
|
-
-
|
103
|
-
-
|
104
|
-
- lib/mongrel/cgi.rb
|
105
|
-
- lib/mongrel/command.rb
|
106
|
-
- lib/mongrel/configurator.rb
|
107
|
-
- lib/mongrel/const.rb
|
108
|
-
- lib/mongrel/debug.rb
|
109
|
-
- lib/mongrel/gems.rb
|
110
|
-
- lib/mongrel/handlers.rb
|
111
|
-
- lib/mongrel/header_out.rb
|
112
|
-
- lib/mongrel/http_request.rb
|
113
|
-
- lib/mongrel/http_response.rb
|
114
|
-
- lib/mongrel/init.rb
|
115
|
-
- lib/mongrel/rails.rb
|
116
|
-
- lib/mongrel/stats.rb
|
117
|
-
- lib/mongrel/tcphack.rb
|
118
|
-
- lib/mongrel/uri_classifier.rb
|
119
|
-
- lib/mongrel.rb
|
88
|
+
- History.txt
|
89
|
+
- Manifest.txt
|
90
|
+
- README.txt
|
120
91
|
- LICENSE
|
121
|
-
- README
|
122
92
|
files:
|
123
|
-
- bin/mongrel_rails
|
124
|
-
- CHANGELOG
|
125
93
|
- COPYING
|
94
|
+
- History.txt
|
95
|
+
- LICENSE
|
96
|
+
- Manifest.txt
|
97
|
+
- README.txt
|
98
|
+
- Rakefile
|
99
|
+
- TODO
|
100
|
+
- bin/mongrel_rails
|
126
101
|
- examples/builder.rb
|
127
|
-
- examples/camping/blog.rb
|
128
102
|
- examples/camping/README
|
103
|
+
- examples/camping/blog.rb
|
129
104
|
- examples/camping/tepee.rb
|
130
105
|
- examples/httpd.conf
|
131
106
|
- examples/mime.yaml
|
132
107
|
- examples/mongrel.conf
|
133
|
-
- examples/mongrel_simple_ctrl.rb
|
134
|
-
- examples/mongrel_simple_service.rb
|
135
108
|
- examples/monitrc
|
136
109
|
- examples/random_thrash.rb
|
137
110
|
- examples/simpletest.rb
|
@@ -144,9 +117,10 @@ files:
|
|
144
117
|
- ext/http11/http11_parser.java.rl
|
145
118
|
- ext/http11/http11_parser.rl
|
146
119
|
- ext/http11/http11_parser_common.rl
|
147
|
-
- ext/
|
148
|
-
- ext/
|
149
|
-
- ext/
|
120
|
+
- ext/http11/Http11Service.java
|
121
|
+
- ext/http11/org/jruby/mongrel/Http11.java
|
122
|
+
- ext/http11/org/jruby/mongrel/Http11Parser.java
|
123
|
+
- lib/mongrel.rb
|
150
124
|
- lib/mongrel/camping.rb
|
151
125
|
- lib/mongrel/cgi.rb
|
152
126
|
- lib/mongrel/command.rb
|
@@ -164,13 +138,10 @@ files:
|
|
164
138
|
- lib/mongrel/stats.rb
|
165
139
|
- lib/mongrel/tcphack.rb
|
166
140
|
- lib/mongrel/uri_classifier.rb
|
167
|
-
- lib/mongrel.rb
|
168
|
-
- LICENSE
|
169
|
-
- Manifest
|
170
|
-
- mongrel-public_cert.pem
|
171
|
-
- mongrel.gemspec
|
172
|
-
- README
|
173
141
|
- setup.rb
|
142
|
+
- tasks/gem.rake
|
143
|
+
- tasks/native.rake
|
144
|
+
- tasks/ragel.rake
|
174
145
|
- test/mime.yaml
|
175
146
|
- test/mongrel.conf
|
176
147
|
- test/test_cgi_wrapper.rb
|
@@ -187,18 +158,15 @@ files:
|
|
187
158
|
- test/test_uriclassifier.rb
|
188
159
|
- test/test_ws.rb
|
189
160
|
- test/testhelp.rb
|
190
|
-
- TODO
|
191
161
|
- tools/trickletest.rb
|
192
162
|
has_rdoc: true
|
193
|
-
homepage: http://mongrel.rubyforge.org
|
163
|
+
homepage: http://mongrel.rubyforge.org/
|
164
|
+
licenses: []
|
165
|
+
|
194
166
|
post_install_message:
|
195
167
|
rdoc_options:
|
196
|
-
- --line-numbers
|
197
|
-
- --inline-source
|
198
|
-
- --title
|
199
|
-
- Mongrel
|
200
168
|
- --main
|
201
|
-
- README
|
169
|
+
- README.txt
|
202
170
|
require_paths:
|
203
171
|
- lib
|
204
172
|
- ext
|
@@ -206,32 +174,32 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
206
174
|
requirements:
|
207
175
|
- - ">="
|
208
176
|
- !ruby/object:Gem::Version
|
209
|
-
version: 1.8.
|
177
|
+
version: 1.8.6
|
210
178
|
version:
|
211
179
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
180
|
requirements:
|
213
|
-
- - "
|
181
|
+
- - ">"
|
214
182
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
183
|
+
version: 1.3.1
|
216
184
|
version:
|
217
185
|
requirements: []
|
218
186
|
|
219
187
|
rubyforge_project: mongrel
|
220
|
-
rubygems_version: 1.
|
188
|
+
rubygems_version: 1.3.5
|
221
189
|
signing_key:
|
222
|
-
specification_version:
|
223
|
-
summary:
|
190
|
+
specification_version: 3
|
191
|
+
summary: Mongrel is a small library that provides a very fast HTTP 1.1 server for Ruby web applications
|
224
192
|
test_files:
|
225
|
-
- test/
|
226
|
-
- test/
|
227
|
-
- test/
|
193
|
+
- test/test_http11.rb
|
194
|
+
- test/test_uriclassifier.rb
|
195
|
+
- test/test_response.rb
|
228
196
|
- test/test_configurator.rb
|
229
|
-
- test/
|
197
|
+
- test/test_conditional.rb
|
230
198
|
- test/test_handlers.rb
|
231
|
-
- test/test_http11.rb
|
232
199
|
- test/test_redirect_handler.rb
|
200
|
+
- test/test_debug.rb
|
233
201
|
- test/test_request_progress.rb
|
234
|
-
- test/test_response.rb
|
235
202
|
- test/test_stats.rb
|
236
|
-
- test/
|
203
|
+
- test/test_command.rb
|
237
204
|
- test/test_ws.rb
|
205
|
+
- test/test_cgi_wrapper.rb
|