mongrel2 0.41.0 → 0.42.0.pre.410
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.rdoc +4 -4
- data/examples/Procfile +1 -0
- data/examples/config.rb +4 -1
- data/examples/run +1 -1
- data/lib/mongrel2.rb +1 -1
- data/lib/mongrel2/connection.rb +29 -1
- data/lib/mongrel2/httpresponse.rb +3 -2
- data/lib/mongrel2/response.rb +29 -5
- data/spec/helpers.rb +3 -4
- data/spec/mongrel2/connection_spec.rb +29 -2
- data/spec/mongrel2/handler_spec.rb +3 -2
- data/spec/mongrel2/response_spec.rb +37 -20
- metadata +73 -73
- metadata.gz.sig +1 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3766dd494bafe1cb6951b33558dd4ff1d1d16c8d
|
4
|
+
data.tar.gz: 8294c6f3cf50394577f1e47c4a0bc16c38a7f19a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7516fc093d2c0c73c2d8f9e85c6b465372cba92896ea9de10b0cf127b35bf6b9c4c43cf344518b1bcded93278151794869c6b5a7731711fdad42663f4bdd1844
|
7
|
+
data.tar.gz: 117b6e5335b6c9716c577c1f859141988c9823c27c20d274eb6648255ea37b11abf9f0095d2457273f5fba403986ff51e6b087cfd722259e38ee2752086cfdec
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/README.rdoc
CHANGED
@@ -152,10 +152,10 @@ and generate the API documentation.
|
|
152
152
|
|
153
153
|
== Other Implementations
|
154
154
|
|
155
|
-
There are two other Mongrel2 Ruby libraries, +m2r+
|
156
|
-
|
155
|
+
There are two other Mongrel2 Ruby libraries, +m2r+ +rack-mongrel2+.
|
156
|
+
This implementation differs from them in several ways:
|
157
157
|
|
158
|
-
* It uses
|
158
|
+
* It uses a C extension for 0MQ (rbczmq) instead of the FFI one. If you
|
159
159
|
strongly prefer the FFI library, both of the other Mongrel2 libraries use
|
160
160
|
it, so you'll want to stick to one of them.
|
161
161
|
|
@@ -173,7 +173,7 @@ library. This implementation differs from them in several ways:
|
|
173
173
|
|
174
174
|
== License
|
175
175
|
|
176
|
-
Copyright (c) 2011-
|
176
|
+
Copyright (c) 2011-2014, Michael Granger
|
177
177
|
All rights reserved.
|
178
178
|
|
179
179
|
Redistribution and use in source and binary forms, with or without
|
data/examples/Procfile
CHANGED
data/examples/config.rb
CHANGED
@@ -26,6 +26,8 @@ s = server 'examples' do
|
|
26
26
|
bind_addr '0.0.0.0'
|
27
27
|
port 8113
|
28
28
|
|
29
|
+
xrequest '/usr/local/lib/mongrel2/filters/sendfile.so'
|
30
|
+
|
29
31
|
# your main host
|
30
32
|
host 'localhost' do
|
31
33
|
|
@@ -36,8 +38,9 @@ s = server 'examples' do
|
|
36
38
|
dumper = handler( 'tcp://127.0.0.1:9997', 'request-dumper', protocol: 'tnetstring' )
|
37
39
|
route '/hello', handler( 'tcp://127.0.0.1:9999', 'helloworld-handler' )
|
38
40
|
route '/async-upload', handler( 'tcp://127.0.0.1:9950', 'async-upload' )
|
39
|
-
route '/
|
41
|
+
route '/sendfile', handler( 'tcp://127.0.0.1:9895', 'sendfile-quine' )
|
40
42
|
route '/ws', handler( 'tcp://127.0.0.1:9995', 'ws-echo' )
|
43
|
+
route '/dump', dumper
|
41
44
|
route '@js', dumper
|
42
45
|
route '<xml', dumper
|
43
46
|
|
data/examples/run
CHANGED
@@ -8,7 +8,7 @@ fi
|
|
8
8
|
examplesdir=$(dirname $0)
|
9
9
|
|
10
10
|
echo "Creating/updating the config database..."
|
11
|
-
ruby -rubygems -I${examplesdir}/../lib $examplesdir/../bin/m2sh.rb \
|
11
|
+
/usr/bin/env ruby -rubygems -I${examplesdir}/../lib $examplesdir/../bin/m2sh.rb \
|
12
12
|
-c ${examplesdir}/examples.sqlite load $examplesdir/config.rb
|
13
13
|
|
14
14
|
if [ $? != 0 ]; then
|
data/lib/mongrel2.rb
CHANGED
@@ -25,7 +25,7 @@ module Mongrel2
|
|
25
25
|
abort "\n\n>>> Mongrel2 requires Ruby 1.9.2 or later. <<<\n\n" if RUBY_VERSION < '1.9.2'
|
26
26
|
|
27
27
|
# Library version constant
|
28
|
-
VERSION = '0.
|
28
|
+
VERSION = '0.42.0'
|
29
29
|
|
30
30
|
# Version-control revision constant
|
31
31
|
REVISION = %q$Revision: 2915d3c8a0e3 $
|
data/lib/mongrel2/connection.rb
CHANGED
@@ -123,7 +123,19 @@ class Mongrel2::Connection
|
|
123
123
|
self.check_closed
|
124
124
|
header = "%s %d:%s," % [ sender_id, conn_id.to_s.length, conn_id ]
|
125
125
|
buf = header + ' ' + data
|
126
|
-
self.log.debug "Sending response (PUB)"
|
126
|
+
self.log.debug "Sending response (PUB): %p" % [ buf ]
|
127
|
+
self.response_sock.send( buf )
|
128
|
+
self.log.debug " done with send (%d bytes)" % [ buf.bytesize ]
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
### Write raw +data+ to the given connection ID (+conn_id+) at the specified
|
133
|
+
### +sender_id+ as an extended response of type +response_type+.
|
134
|
+
def send_extended( sender_id, conn_id, response_type, *data )
|
135
|
+
self.check_closed
|
136
|
+
self.log.debug "Sending response with %s extended reply (PUB): %p" % [ response_type, data ]
|
137
|
+
header = "%s %d:X %s," % [ sender_id, conn_id.to_s.length + 2, conn_id ]
|
138
|
+
buf = header + ' ' + TNetstring.dump( [response_type] + data )
|
127
139
|
self.response_sock.send( buf )
|
128
140
|
self.log.debug " done with send (%d bytes)" % [ buf.bytesize ]
|
129
141
|
end
|
@@ -134,6 +146,12 @@ class Mongrel2::Connection
|
|
134
146
|
response.each_chunk do |data|
|
135
147
|
self.send( response.sender_id, response.conn_id, data )
|
136
148
|
end
|
149
|
+
if response.extended_reply?
|
150
|
+
self.log.debug "Response also includes an extended reply."
|
151
|
+
data = response.extended_reply_data
|
152
|
+
filter = response.extended_reply_filter
|
153
|
+
self.send_extended( response.sender_id, response.conn_id, filter, *data )
|
154
|
+
end
|
137
155
|
end
|
138
156
|
|
139
157
|
|
@@ -146,6 +164,16 @@ class Mongrel2::Connection
|
|
146
164
|
end
|
147
165
|
|
148
166
|
|
167
|
+
### Send the given +data+ to one or more connected clients identified by +client_ids+
|
168
|
+
### via the server specified by +sender_id+ as an extended reply of type
|
169
|
+
### +response_type+. The +client_ids+ should be an Array of Integer IDs no longer
|
170
|
+
### than Mongrel2::MAX_IDENTS.
|
171
|
+
def broadcast_extended( sender_id, conn_ids, response_type, *data )
|
172
|
+
idlist = conn_ids.flatten.map( &:to_s ).join( ' ' )
|
173
|
+
self.send_extended( sender_id, idlist, response_type, *data )
|
174
|
+
end
|
175
|
+
|
176
|
+
|
149
177
|
### Tell the server to close the connection associated with the given +sender_id+ and
|
150
178
|
### +conn_id+.
|
151
179
|
def send_close( sender_id, conn_id )
|
@@ -88,7 +88,8 @@ class Mongrel2::HTTPResponse < Mongrel2::Response
|
|
88
88
|
### Returns true if the response status means the response
|
89
89
|
### shouldn't have a body.
|
90
90
|
def bodiless?
|
91
|
-
return self.
|
91
|
+
return self.extended_reply? ||
|
92
|
+
self.body.nil? ||
|
92
93
|
HTTP::BODILESS_HTTP_RESPONSE_CODES.include?( self.status )
|
93
94
|
end
|
94
95
|
|
@@ -168,7 +169,7 @@ class Mongrel2::HTTPResponse < Mongrel2::Response
|
|
168
169
|
|
169
170
|
headers[:date] ||= Time.now.httpdate
|
170
171
|
|
171
|
-
if self.bodiless?
|
172
|
+
if self.bodiless? && !self.extended_reply?
|
172
173
|
headers.delete( :content_length )
|
173
174
|
headers.delete( :content_type )
|
174
175
|
else
|
data/lib/mongrel2/response.rb
CHANGED
@@ -34,11 +34,13 @@ class Mongrel2::Response
|
|
34
34
|
def initialize( sender_id, conn_id, body='' )
|
35
35
|
body = StringIO.new( body, 'a+' ) unless body.respond_to?( :read )
|
36
36
|
|
37
|
-
@sender_id
|
38
|
-
@conn_id
|
39
|
-
@body
|
40
|
-
@request
|
41
|
-
@chunksize
|
37
|
+
@sender_id = sender_id
|
38
|
+
@conn_id = conn_id
|
39
|
+
@body = body
|
40
|
+
@request = nil
|
41
|
+
@chunksize = DEFAULT_CHUNKSIZE
|
42
|
+
@extended_reply_filter = nil
|
43
|
+
@extended_reply_data = []
|
42
44
|
end
|
43
45
|
|
44
46
|
|
@@ -63,6 +65,13 @@ class Mongrel2::Response
|
|
63
65
|
# The number of bytes to write to Mongrel in a single "chunk"
|
64
66
|
attr_accessor :chunksize
|
65
67
|
|
68
|
+
# The name of the extended reply filter to use in the reply. If this is set
|
69
|
+
# the response will be send back to Mongrel as an extended reply.
|
70
|
+
attr_reader :extended_reply_filter
|
71
|
+
|
72
|
+
# The Array of data to include with the extended reply
|
73
|
+
attr_reader :extended_reply_data
|
74
|
+
|
66
75
|
|
67
76
|
### Set the response's entity body to +newbody+. If +newbody+ is a String-ish object
|
68
77
|
### (i.e., it responds to #to_str), it will be wrapped in a StringIO in 'a+' mode).
|
@@ -86,6 +95,21 @@ class Mongrel2::Response
|
|
86
95
|
end
|
87
96
|
|
88
97
|
|
98
|
+
### Set up the response to send an extended reply to Mongrel2, invoking the
|
99
|
+
### given +filter+. The body of the response will be passed to the filter
|
100
|
+
### after being serialized to a tnetstring.
|
101
|
+
def extend_reply_with( filter )
|
102
|
+
@extended_reply_filter = filter
|
103
|
+
end
|
104
|
+
alias_method :extended_reply_with, :extend_reply_with
|
105
|
+
|
106
|
+
|
107
|
+
### Returns +true+ if the response has been set to use an extended reply.
|
108
|
+
def extended_reply?
|
109
|
+
return @extended_reply_filter ? true : false
|
110
|
+
end
|
111
|
+
|
112
|
+
|
89
113
|
### Stringify the response, which just returns its body.
|
90
114
|
def to_s
|
91
115
|
pos = self.body.pos
|
data/spec/helpers.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
|
-
require_relative 'constants'
|
5
|
-
require_relative 'matchers'
|
6
|
-
|
7
4
|
# SimpleCov test coverage reporting; enable this using the :coverage rake task
|
8
5
|
require 'simplecov' if ENV['COVERAGE']
|
9
6
|
|
7
|
+
require_relative 'constants'
|
8
|
+
require_relative 'matchers'
|
9
|
+
|
10
10
|
begin
|
11
11
|
require 'configurability'
|
12
12
|
rescue LoadError => err
|
@@ -205,7 +205,6 @@ end
|
|
205
205
|
RSpec.configure do |c|
|
206
206
|
include Mongrel2::TestConstants
|
207
207
|
|
208
|
-
c.treat_symbols_as_metadata_keys_with_true_values = true
|
209
208
|
c.run_all_when_everything_filtered = true
|
210
209
|
c.filter_run :focus
|
211
210
|
c.order = 'random'
|
@@ -137,15 +137,42 @@ describe Mongrel2::Connection do
|
|
137
137
|
end
|
138
138
|
|
139
139
|
it "can write raw response messages to more than one conn_id at the same time" do
|
140
|
-
expect( @response_sock ).to receive( :send ).
|
140
|
+
expect( @response_sock ).to receive( :send ).
|
141
|
+
with( "#{TEST_UUID} 15:8 16 44 45 1833, the data" )
|
141
142
|
@conn.broadcast( TEST_UUID, [8, 16, 44, 45, 1833], 'the data' )
|
142
143
|
end
|
143
144
|
|
144
145
|
it "can write raw response messages to more than one conn_id at the same time" do
|
145
|
-
expect( @response_sock ).to receive( :send ).
|
146
|
+
expect( @response_sock ).to receive( :send ).
|
147
|
+
with( "#{TEST_UUID} 15:8 16 44 45 1833, the data" )
|
146
148
|
@conn.broadcast( TEST_UUID, [8, 16, 44, 45, 1833], 'the data' )
|
147
149
|
end
|
148
150
|
|
151
|
+
it "can write an extended response message" do
|
152
|
+
expect( @response_sock ).to receive( :send ).
|
153
|
+
with( "#{TEST_UUID} 3:X 8, 27:8:sendfile,12:the_data.txt,]" )
|
154
|
+
@conn.send_extended( TEST_UUID, 8, :sendfile, "the_data.txt" )
|
155
|
+
end
|
156
|
+
|
157
|
+
it "can broadcast an extended response message" do
|
158
|
+
expect( @response_sock ).to receive( :send ).
|
159
|
+
with( "#{TEST_UUID} 9:X 8 16 32, 27:8:sendfile,12:the_data.txt,]" )
|
160
|
+
@conn.broadcast_extended( TEST_UUID, [8,16,32], :sendfile, "the_data.txt" )
|
161
|
+
end
|
162
|
+
|
163
|
+
it "can write a Mongrel2::Response with extended reply" do
|
164
|
+
expect( @response_sock ).to receive( :send ).
|
165
|
+
with( "#{TEST_UUID} 1:8, " )
|
166
|
+
expect( @response_sock ).to receive( :send ).
|
167
|
+
with( "#{TEST_UUID} 3:X 8, 27:8:sendfile,12:the_data.txt,]" )
|
168
|
+
|
169
|
+
response = Mongrel2::Response.new( TEST_UUID, 8, '' )
|
170
|
+
response.extended_reply_with( :sendfile )
|
171
|
+
response.extended_reply_data << 'the_data.txt'
|
172
|
+
|
173
|
+
@conn.reply( response )
|
174
|
+
end
|
175
|
+
|
149
176
|
it "can tell the connection a request or a response was from to close" do
|
150
177
|
expect( @response_sock ).to receive( :send ).with( "#{TEST_UUID} 1:8, " )
|
151
178
|
|
@@ -78,8 +78,9 @@ describe Mongrel2::Handler do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
it "can look up connection information given an application ID" do
|
81
|
-
|
82
|
-
|
81
|
+
expect(
|
82
|
+
Mongrel2::Handler.connection_info_for(TEST_UUID)
|
83
|
+
).to eq([ TEST_SEND_SPEC, TEST_RECV_SPEC ])
|
83
84
|
end
|
84
85
|
|
85
86
|
it "has a convenience method for instantiating and running a Handler given an " +
|
@@ -17,15 +17,6 @@ require 'mongrel2/response'
|
|
17
17
|
|
18
18
|
describe Mongrel2::Response do
|
19
19
|
|
20
|
-
before( :all ) do
|
21
|
-
setup_logging()
|
22
|
-
end
|
23
|
-
|
24
|
-
after( :all ) do
|
25
|
-
reset_logging()
|
26
|
-
end
|
27
|
-
|
28
|
-
|
29
20
|
it "can create a matching response given a Mongrel2::Request" do
|
30
21
|
req = Mongrel2::Request.new( TEST_UUID, 8, '/path', {}, '' )
|
31
22
|
response = Mongrel2::Response.from_request( req )
|
@@ -52,6 +43,11 @@ describe Mongrel2::Response do
|
|
52
43
|
expect {|b| response.each_chunk(&b) }.to yield_with_args( 'the body' )
|
53
44
|
end
|
54
45
|
|
46
|
+
it "can generate an enumerator for its body stream" do
|
47
|
+
response = Mongrel2::Response.new( TEST_UUID, 8, "the body" )
|
48
|
+
expect( response.each_chunk ).to be_a( Enumerator )
|
49
|
+
end
|
50
|
+
|
55
51
|
it "wraps stringifiable bodies set via the #body= accessor in a StringIO" do
|
56
52
|
response = Mongrel2::Response.new( TEST_UUID, 8 )
|
57
53
|
response.body = 'a stringioed body'
|
@@ -66,27 +62,48 @@ describe Mongrel2::Response do
|
|
66
62
|
expect( response.body ).to be( testbody )
|
67
63
|
end
|
68
64
|
|
65
|
+
|
69
66
|
context "an instance with default values" do
|
70
67
|
|
71
|
-
|
72
|
-
|
73
|
-
end
|
68
|
+
let( :response ) { Mongrel2::Response.new(TEST_UUID, 8) }
|
69
|
+
|
74
70
|
|
75
71
|
it "has an empty-IO body" do
|
76
|
-
|
77
|
-
expect(
|
72
|
+
response.body.rewind
|
73
|
+
expect( response.body.read ).to eq( '' )
|
78
74
|
end
|
79
75
|
|
80
76
|
it "supports the append operator to append objects to the body IO" do
|
81
|
-
|
82
|
-
|
83
|
-
expect(
|
77
|
+
response << 'some body stuff' << ' and some more body stuff'
|
78
|
+
response.body.rewind
|
79
|
+
expect( response.body.read ).to eq( 'some body stuff and some more body stuff' )
|
84
80
|
end
|
85
81
|
|
86
82
|
it "supports #puts for appending objects to the body IO separated by EOL" do
|
87
|
-
|
88
|
-
|
89
|
-
expect(
|
83
|
+
response.puts( "some body stuff\n", " and some more body stuff\n\n", :and_a_symbol )
|
84
|
+
response.body.rewind
|
85
|
+
expect( response.body.read ).to eq( "some body stuff\n and some more body stuff\n\nand_a_symbol\n" )
|
86
|
+
end
|
87
|
+
|
88
|
+
it "is not an extended reply" do
|
89
|
+
expect( response ).to_not be_extended_reply
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
context "an instance extended with a :sendfile reply" do
|
96
|
+
|
97
|
+
let( :response ) do
|
98
|
+
res = Mongrel2::Response.new( TEST_UUID, 213 )
|
99
|
+
res.extend_reply_with( :sendfile )
|
100
|
+
res.extended_reply_data << '/path/to/a/file.txt'
|
101
|
+
res
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
it "is an extended reply" do
|
106
|
+
expect( response ).to be_extended_reply
|
90
107
|
end
|
91
108
|
|
92
109
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongrel2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.42.0.pre.410
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -12,7 +12,7 @@ cert_chain:
|
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIDbDCCAlSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MQwwCgYDVQQDDANnZWQx
|
14
14
|
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
15
|
-
|
15
|
+
HhcNMTQwMzE5MDQzNTI2WhcNMTUwMzE5MDQzNTI2WjA+MQwwCgYDVQQDDANnZWQx
|
16
16
|
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
17
17
|
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDb92mkyYwuGBg1oRxt2tkH
|
18
18
|
+Uo3LAsaL/APBfSLzy8o3+B3AUHKCjMUaVeBoZdWtMHB75X3VQlvXfZMyBxj59Vo
|
@@ -23,267 +23,267 @@ cert_chain:
|
|
23
23
|
AgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBSZ0hCV
|
24
24
|
qoHr122fGKelqffzEQBhszAcBgNVHREEFTATgRFnZWRARmFlcmllTVVELm9yZzAc
|
25
25
|
BgNVHRIEFTATgRFnZWRARmFlcmllTVVELm9yZzANBgkqhkiG9w0BAQUFAAOCAQEA
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
TuL1Bzl6TBs1YEzEubFHb9XAPgehWzzUudjDKzTRd+uyZmxnomBqTCQjT5ucNRph
|
27
|
+
3jZ6bhLNooLQxTjIuHodeGcEMHZdt4Yi7SyPmw5Nry12z6wrDp+5aGps3HsE5WsQ
|
28
|
+
Zq2EuyEOc96g31uoIvjNdieKs+1kE+K+dJDjtw+wTH2i63P7r6N/NfPPXpxsFquo
|
29
|
+
wcYRRrHdR7GhdJeT+V8Q8Bi5bglCUGdx+8scMgkkePc98k9osQHypbACmzO+Bqkv
|
30
|
+
c7ZKPJcWBv0sm81+FCZXNACn2f9jfF8OQinxVs0O052KbGuEQaaiGIYeuuwQE2q6
|
31
|
+
ggcrPfcYeTwWlfZPu2LrBg==
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2014-
|
33
|
+
date: 2014-06-27 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: sequel
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - ~>
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '4.2'
|
42
42
|
type: :runtime
|
43
43
|
prerelease: false
|
44
44
|
version_requirements: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - ~>
|
46
|
+
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '4.2'
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: tnetstring
|
51
51
|
requirement: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - ~>
|
53
|
+
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0.3'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - ~>
|
60
|
+
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0.3'
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: yajl-ruby
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - ~>
|
67
|
+
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '1.0'
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - ~>
|
74
|
+
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '1.0'
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
78
|
name: trollop
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - ~>
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '2.0'
|
84
84
|
type: :runtime
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - ~>
|
88
|
+
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '2.0'
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: sysexits
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - ~>
|
95
|
+
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '1.1'
|
98
98
|
type: :runtime
|
99
99
|
prerelease: false
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - ~>
|
102
|
+
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: '1.1'
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: rbczmq
|
107
107
|
requirement: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - ~>
|
109
|
+
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: '1.7'
|
112
112
|
type: :runtime
|
113
113
|
prerelease: false
|
114
114
|
version_requirements: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- - ~>
|
116
|
+
- - "~>"
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '1.7'
|
119
119
|
- !ruby/object:Gem::Dependency
|
120
120
|
name: loggability
|
121
121
|
requirement: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- - ~>
|
123
|
+
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0.5'
|
126
126
|
type: :runtime
|
127
127
|
prerelease: false
|
128
128
|
version_requirements: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
|
-
- - ~>
|
130
|
+
- - "~>"
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: '0.5'
|
133
133
|
- !ruby/object:Gem::Dependency
|
134
134
|
name: sqlite3
|
135
135
|
requirement: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
|
-
- - ~>
|
137
|
+
- - "~>"
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '1.3'
|
140
140
|
type: :runtime
|
141
141
|
prerelease: false
|
142
142
|
version_requirements: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
|
-
- - ~>
|
144
|
+
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '1.3'
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: libxml-ruby
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
|
-
- - ~>
|
151
|
+
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '2.7'
|
154
154
|
type: :runtime
|
155
155
|
prerelease: false
|
156
156
|
version_requirements: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
|
-
- - ~>
|
158
|
+
- - "~>"
|
159
159
|
- !ruby/object:Gem::Version
|
160
160
|
version: '2.7'
|
161
161
|
- !ruby/object:Gem::Dependency
|
162
162
|
name: hoe-mercurial
|
163
163
|
requirement: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
|
-
- - ~>
|
165
|
+
- - "~>"
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version: 1.4
|
167
|
+
version: '1.4'
|
168
168
|
type: :development
|
169
169
|
prerelease: false
|
170
170
|
version_requirements: !ruby/object:Gem::Requirement
|
171
171
|
requirements:
|
172
|
-
- - ~>
|
172
|
+
- - "~>"
|
173
173
|
- !ruby/object:Gem::Version
|
174
|
-
version: 1.4
|
174
|
+
version: '1.4'
|
175
|
+
- !ruby/object:Gem::Dependency
|
176
|
+
name: hoe-deveiate
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - "~>"
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0.6'
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - "~>"
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0.6'
|
175
189
|
- !ruby/object:Gem::Dependency
|
176
190
|
name: hoe-highline
|
177
191
|
requirement: !ruby/object:Gem::Requirement
|
178
192
|
requirements:
|
179
|
-
- - ~>
|
193
|
+
- - "~>"
|
180
194
|
- !ruby/object:Gem::Version
|
181
|
-
version: 0.
|
195
|
+
version: '0.2'
|
182
196
|
type: :development
|
183
197
|
prerelease: false
|
184
198
|
version_requirements: !ruby/object:Gem::Requirement
|
185
199
|
requirements:
|
186
|
-
- - ~>
|
200
|
+
- - "~>"
|
187
201
|
- !ruby/object:Gem::Version
|
188
|
-
version: 0.
|
202
|
+
version: '0.2'
|
189
203
|
- !ruby/object:Gem::Dependency
|
190
204
|
name: rdoc
|
191
205
|
requirement: !ruby/object:Gem::Requirement
|
192
206
|
requirements:
|
193
|
-
- - ~>
|
207
|
+
- - "~>"
|
194
208
|
- !ruby/object:Gem::Version
|
195
209
|
version: '4.0'
|
196
210
|
type: :development
|
197
211
|
prerelease: false
|
198
212
|
version_requirements: !ruby/object:Gem::Requirement
|
199
213
|
requirements:
|
200
|
-
- - ~>
|
214
|
+
- - "~>"
|
201
215
|
- !ruby/object:Gem::Version
|
202
216
|
version: '4.0'
|
203
217
|
- !ruby/object:Gem::Dependency
|
204
218
|
name: amalgalite
|
205
219
|
requirement: !ruby/object:Gem::Requirement
|
206
220
|
requirements:
|
207
|
-
- - ~>
|
221
|
+
- - "~>"
|
208
222
|
- !ruby/object:Gem::Version
|
209
223
|
version: '1.3'
|
210
224
|
type: :development
|
211
225
|
prerelease: false
|
212
226
|
version_requirements: !ruby/object:Gem::Requirement
|
213
227
|
requirements:
|
214
|
-
- - ~>
|
228
|
+
- - "~>"
|
215
229
|
- !ruby/object:Gem::Version
|
216
230
|
version: '1.3'
|
217
231
|
- !ruby/object:Gem::Dependency
|
218
232
|
name: configurability
|
219
233
|
requirement: !ruby/object:Gem::Requirement
|
220
234
|
requirements:
|
221
|
-
- - ~>
|
235
|
+
- - "~>"
|
222
236
|
- !ruby/object:Gem::Version
|
223
237
|
version: '2.0'
|
224
238
|
type: :development
|
225
239
|
prerelease: false
|
226
240
|
version_requirements: !ruby/object:Gem::Requirement
|
227
241
|
requirements:
|
228
|
-
- - ~>
|
242
|
+
- - "~>"
|
229
243
|
- !ruby/object:Gem::Version
|
230
244
|
version: '2.0'
|
231
245
|
- !ruby/object:Gem::Dependency
|
232
246
|
name: simplecov
|
233
247
|
requirement: !ruby/object:Gem::Requirement
|
234
248
|
requirements:
|
235
|
-
- - ~>
|
249
|
+
- - "~>"
|
236
250
|
- !ruby/object:Gem::Version
|
237
251
|
version: '0.7'
|
238
252
|
type: :development
|
239
253
|
prerelease: false
|
240
254
|
version_requirements: !ruby/object:Gem::Requirement
|
241
255
|
requirements:
|
242
|
-
- - ~>
|
256
|
+
- - "~>"
|
243
257
|
- !ruby/object:Gem::Version
|
244
258
|
version: '0.7'
|
245
|
-
- !ruby/object:Gem::Dependency
|
246
|
-
name: hoe-deveiate
|
247
|
-
requirement: !ruby/object:Gem::Requirement
|
248
|
-
requirements:
|
249
|
-
- - ~>
|
250
|
-
- !ruby/object:Gem::Version
|
251
|
-
version: '0.3'
|
252
|
-
type: :development
|
253
|
-
prerelease: false
|
254
|
-
version_requirements: !ruby/object:Gem::Requirement
|
255
|
-
requirements:
|
256
|
-
- - ~>
|
257
|
-
- !ruby/object:Gem::Version
|
258
|
-
version: '0.3'
|
259
259
|
- !ruby/object:Gem::Dependency
|
260
260
|
name: hoe-bundler
|
261
261
|
requirement: !ruby/object:Gem::Requirement
|
262
262
|
requirements:
|
263
|
-
- - ~>
|
263
|
+
- - "~>"
|
264
264
|
- !ruby/object:Gem::Version
|
265
265
|
version: '1.2'
|
266
266
|
type: :development
|
267
267
|
prerelease: false
|
268
268
|
version_requirements: !ruby/object:Gem::Requirement
|
269
269
|
requirements:
|
270
|
-
- - ~>
|
270
|
+
- - "~>"
|
271
271
|
- !ruby/object:Gem::Version
|
272
272
|
version: '1.2'
|
273
273
|
- !ruby/object:Gem::Dependency
|
274
274
|
name: hoe
|
275
275
|
requirement: !ruby/object:Gem::Requirement
|
276
276
|
requirements:
|
277
|
-
- - ~>
|
277
|
+
- - "~>"
|
278
278
|
- !ruby/object:Gem::Version
|
279
|
-
version: '3.
|
279
|
+
version: '3.12'
|
280
280
|
type: :development
|
281
281
|
prerelease: false
|
282
282
|
version_requirements: !ruby/object:Gem::Requirement
|
283
283
|
requirements:
|
284
|
-
- - ~>
|
284
|
+
- - "~>"
|
285
285
|
- !ruby/object:Gem::Version
|
286
|
-
version: '3.
|
286
|
+
version: '3.12'
|
287
287
|
description: |-
|
288
288
|
Ruby-Mongrel2 is a complete Ruby connector for Mongrel2[http://mongrel2.org/].
|
289
289
|
|
@@ -303,9 +303,9 @@ extra_rdoc_files:
|
|
303
303
|
- README.rdoc
|
304
304
|
- examples/README.txt
|
305
305
|
files:
|
306
|
-
- .autotest
|
307
|
-
- .gemtest
|
308
|
-
- .simplecov
|
306
|
+
- ".autotest"
|
307
|
+
- ".gemtest"
|
308
|
+
- ".simplecov"
|
309
309
|
- ChangeLog
|
310
310
|
- DSL.rdoc
|
311
311
|
- History.rdoc
|
@@ -393,25 +393,25 @@ licenses:
|
|
393
393
|
metadata: {}
|
394
394
|
post_install_message:
|
395
395
|
rdoc_options:
|
396
|
-
- -f
|
396
|
+
- "-f"
|
397
397
|
- fivefish
|
398
|
-
- -t
|
398
|
+
- "-t"
|
399
399
|
- Mongrel2 Ruby Connector
|
400
400
|
require_paths:
|
401
401
|
- lib
|
402
402
|
required_ruby_version: !ruby/object:Gem::Requirement
|
403
403
|
requirements:
|
404
|
-
- -
|
404
|
+
- - ">="
|
405
405
|
- !ruby/object:Gem::Version
|
406
406
|
version: 1.9.2
|
407
407
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
408
408
|
requirements:
|
409
|
-
- -
|
409
|
+
- - ">"
|
410
410
|
- !ruby/object:Gem::Version
|
411
|
-
version:
|
411
|
+
version: 1.3.1
|
412
412
|
requirements: []
|
413
|
-
rubyforge_project:
|
414
|
-
rubygems_version: 2.2.
|
413
|
+
rubyforge_project:
|
414
|
+
rubygems_version: 2.2.2
|
415
415
|
signing_key:
|
416
416
|
specification_version: 4
|
417
417
|
summary: Ruby-Mongrel2 is a complete Ruby connector for Mongrel2[http://mongrel2.org/]
|
metadata.gz.sig
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
U�E�ʇ|9i/�Q����c&1nO�q�7Ռ�~[l�D9��f��h��-$�Y�ه>H8eZ�s�QS��Xm�l��
|
1
|
+
�݆�0�k6��s����eO>� +��ԍ�T%�-�IN��+[���Rvx�u�47� �{���sF��T�� Ҩ��\����_�չ��$f��r���R�?/^��U�V٩�YLQ��j/^ߣ�[&`Q��g7D7��� ����W,R���&��b�U8n�q�>B�Oh�W��x�E�ӿ:����I��-�Q�P�7���I��b�ݟ"G�:����r��JGY[)Ų�տ{�V�л~LC+F&":�ב��ul0�Jė
|