mongrel2 0.41.0 → 0.42.0.pre.410
Sign up to get free protection for your applications and to get access to all the features.
- 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ė
|