mongrel2 0.1.2 → 0.2.0
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.
- data.tar.gz.sig +0 -0
- data/data/mongrel2/bootstrap.html +2 -0
- data/examples/request-dumper.rb +15 -8
- data/examples/request-dumper.tmpl +9 -3
- data/lib/mongrel2.rb +2 -2
- data/lib/mongrel2/config/host.rb +1 -1
- data/lib/mongrel2/connection.rb +1 -1
- data/lib/mongrel2/handler.rb +1 -1
- data/lib/mongrel2/httprequest.rb +16 -0
- data/lib/mongrel2/request.rb +30 -1
- data/spec/lib/helpers.rb +2 -1
- data/spec/mongrel2/handler_spec.rb +7 -9
- metadata +24 -24
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/examples/request-dumper.rb
CHANGED
@@ -22,16 +22,23 @@ class RequestDumper < Mongrel2::Handler
|
|
22
22
|
|
23
23
|
### Handle a request
|
24
24
|
def handle( request )
|
25
|
-
|
26
|
-
|
25
|
+
Thread.new do
|
26
|
+
Thread.current.abort_on_exception = true
|
27
|
+
$SAFE = 1
|
27
28
|
|
28
|
-
|
29
|
+
template = @template.dup
|
30
|
+
response = request.response
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
-
|
32
|
+
template.request = request
|
33
|
+
template.title = "Ruby-Mongrel2 Request Dumper"
|
34
|
+
template.safelevel = $SAFE
|
33
35
|
|
34
|
-
|
36
|
+
response.status = 200
|
37
|
+
response.headers.content_type = 'text/html'
|
38
|
+
response.puts( template )
|
39
|
+
|
40
|
+
response
|
41
|
+
end.value
|
35
42
|
end
|
36
43
|
|
37
44
|
end # class RequestDumper
|
@@ -41,6 +48,6 @@ Inversion.log.level = Logger::INFO
|
|
41
48
|
|
42
49
|
# Point to the config database, which will cause the handler to use
|
43
50
|
# its ID to look up its own socket info.
|
44
|
-
Mongrel2::Config.configure( :configdb => '
|
51
|
+
Mongrel2::Config.configure( :configdb => 'examples.sqlite' )
|
45
52
|
RequestDumper.run( 'request-dumper' )
|
46
53
|
|
@@ -9,6 +9,8 @@
|
|
9
9
|
|
10
10
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
11
11
|
|
12
|
+
<link rel="stylesheet" href="/css/master.css" type="text/css" media="screen"
|
13
|
+
title="no title" charset="utf-8" />
|
12
14
|
</head>
|
13
15
|
|
14
16
|
<body>
|
@@ -28,6 +30,10 @@
|
|
28
30
|
<th>Connection ID</th>
|
29
31
|
<td><?escape request.conn_id.to_s ?></td>
|
30
32
|
</tr>
|
33
|
+
<tr>
|
34
|
+
<th>$SAFE</th>
|
35
|
+
<td><?attr safelevel ?></td>
|
36
|
+
</tr>
|
31
37
|
</table>
|
32
38
|
|
33
39
|
<section id="headers">
|
@@ -55,9 +61,9 @@
|
|
55
61
|
<section id="inspect">
|
56
62
|
<header>
|
57
63
|
<h1>Inspected Request</h1>
|
58
|
-
<
|
59
|
-
|
60
|
-
</
|
64
|
+
<pre>
|
65
|
+
<?pp request ?>
|
66
|
+
</pre>
|
61
67
|
</header>
|
62
68
|
</section>
|
63
69
|
|
data/lib/mongrel2.rb
CHANGED
@@ -14,10 +14,10 @@ module Mongrel2
|
|
14
14
|
abort "\n\n>>> Mongrel2 requires Ruby 1.9.2 or later. <<<\n\n" if RUBY_VERSION < '1.9.2'
|
15
15
|
|
16
16
|
# Library version constant
|
17
|
-
VERSION = '0.
|
17
|
+
VERSION = '0.2.0'
|
18
18
|
|
19
19
|
# Version-control revision constant
|
20
|
-
REVISION = %q$Revision:
|
20
|
+
REVISION = %q$Revision: 5c631fa35bff $
|
21
21
|
|
22
22
|
|
23
23
|
require 'mongrel2/logging'
|
data/lib/mongrel2/config/host.rb
CHANGED
@@ -38,7 +38,7 @@ class Mongrel2::Config::Host < Mongrel2::Config( :host )
|
|
38
38
|
|
39
39
|
### Create a new Mongrel2::Config::Directory object for the specified +base+ and
|
40
40
|
### return it.
|
41
|
-
def directory( base, index_file, default_ctype='text/plain', opts={} )
|
41
|
+
def directory( base, index_file='index.html', default_ctype='text/plain', opts={} )
|
42
42
|
opts.merge!( :base => base, :index_file => index_file, :default_ctype => default_ctype )
|
43
43
|
return Mongrel2::Config::Directory.create( opts )
|
44
44
|
end
|
data/lib/mongrel2/connection.rb
CHANGED
data/lib/mongrel2/handler.rb
CHANGED
@@ -206,7 +206,7 @@ class Mongrel2::Handler
|
|
206
206
|
### Returns a string containing a human-readable representation of the Handler suitable
|
207
207
|
### for debugging.
|
208
208
|
def inspect
|
209
|
-
return "#<%p:0x%
|
209
|
+
return "#<%p:0x%016x conn: %p>" % [
|
210
210
|
self.class,
|
211
211
|
self.object_id * 2,
|
212
212
|
self.conn,
|
data/lib/mongrel2/httprequest.rb
CHANGED
@@ -45,6 +45,22 @@ class Mongrel2::HTTPRequest < Mongrel2::Request
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
+
|
49
|
+
#########
|
50
|
+
protected
|
51
|
+
#########
|
52
|
+
|
53
|
+
### Return the details to include in the contents of the #inspected object.
|
54
|
+
def inspect_details
|
55
|
+
return %Q{[%s] "%s %s %s" -- %0.2fK body} % [
|
56
|
+
self.headers.x_forwarded_for,
|
57
|
+
self.headers[:method],
|
58
|
+
self.headers.uri,
|
59
|
+
self.headers.version,
|
60
|
+
self.body.length,
|
61
|
+
]
|
62
|
+
end
|
63
|
+
|
48
64
|
end # class Mongrel2::HTTPRequest
|
49
65
|
|
50
66
|
# vim: set nosta noet ts=4 sw=4:
|
data/lib/mongrel2/request.rb
CHANGED
@@ -106,7 +106,7 @@ class Mongrel2::Request
|
|
106
106
|
### Create a new Request object with the given +sender_id+, +conn_id+, +path+, +headers+,
|
107
107
|
### and +body+. The optional +nil+ is for the raw request content, which can be useful
|
108
108
|
### later for debugging.
|
109
|
-
def initialize( sender_id, conn_id, path, headers, body, raw=nil )
|
109
|
+
def initialize( sender_id, conn_id, path, headers, body='', raw=nil )
|
110
110
|
@sender_id = sender_id
|
111
111
|
@conn_id = Integer( conn_id )
|
112
112
|
@path = path
|
@@ -156,6 +156,35 @@ class Mongrel2::Request
|
|
156
156
|
return false
|
157
157
|
end
|
158
158
|
|
159
|
+
|
160
|
+
### Returns a string containing a human-readable representation of the Request,
|
161
|
+
### suitable for debugging.
|
162
|
+
def inspect
|
163
|
+
return "#<%p:0x%016x %s (%s/%d)>" % [
|
164
|
+
self.class,
|
165
|
+
self.object_id * 2,
|
166
|
+
self.inspect_details,
|
167
|
+
self.sender_id,
|
168
|
+
self.conn_id
|
169
|
+
]
|
170
|
+
end
|
171
|
+
|
172
|
+
|
173
|
+
#########
|
174
|
+
protected
|
175
|
+
#########
|
176
|
+
|
177
|
+
### Return the details to include in the contents of the #inspected object. This
|
178
|
+
### method allows other request types to provide their own details while keeping
|
179
|
+
### the form somewhat consistent.
|
180
|
+
def inspect_details
|
181
|
+
return "%s -- %d headers, %0.2fK body" % [
|
182
|
+
self.path,
|
183
|
+
self.headers.length,
|
184
|
+
self.body.length,
|
185
|
+
]
|
186
|
+
end
|
187
|
+
|
159
188
|
end # class Mongrel2::Request
|
160
189
|
|
161
190
|
# vim: set nosta noet ts=4 sw=4:
|
data/spec/lib/helpers.rb
CHANGED
@@ -37,6 +37,7 @@ require 'tmpdir'
|
|
37
37
|
require 'rspec'
|
38
38
|
require 'mongrel2'
|
39
39
|
require 'mongrel2/config'
|
40
|
+
require 'mongrel2/testing'
|
40
41
|
|
41
42
|
require 'sequel'
|
42
43
|
require 'sequel/model'
|
@@ -45,7 +46,7 @@ require 'spec/lib/constants'
|
|
45
46
|
require 'spec/lib/matchers'
|
46
47
|
|
47
48
|
|
48
|
-
### RSpec helper functions.
|
49
|
+
### RSpec helper functions that are used to test Mongrel2 itself.
|
49
50
|
module Mongrel2::SpecHelpers
|
50
51
|
include Mongrel2::TestConstants
|
51
52
|
|
@@ -25,14 +25,6 @@ require 'mongrel2/handler'
|
|
25
25
|
|
26
26
|
describe Mongrel2::Handler do
|
27
27
|
|
28
|
-
# Testing handler config
|
29
|
-
HANDLER_CONFIG = {
|
30
|
-
:send_spec => TEST_SEND_SPEC,
|
31
|
-
:send_ident => TEST_UUID,
|
32
|
-
:recv_spec => TEST_RECV_SPEC,
|
33
|
-
}
|
34
|
-
|
35
|
-
|
36
28
|
# Make a handler class for testing that only ever handles one request, and
|
37
29
|
# keeps track of any requests it handles and their responses.
|
38
30
|
class OneShotHandler < Mongrel2::Handler
|
@@ -85,8 +77,14 @@ describe Mongrel2::Handler do
|
|
85
77
|
context "with a Handler entry in the config database" do
|
86
78
|
|
87
79
|
before( :each ) do
|
80
|
+
@handler_config = {
|
81
|
+
:send_spec => TEST_SEND_SPEC,
|
82
|
+
:send_ident => TEST_UUID,
|
83
|
+
:recv_spec => TEST_RECV_SPEC,
|
84
|
+
}
|
85
|
+
|
88
86
|
Mongrel2::Config::Handler.dataset.truncate
|
89
|
-
Mongrel2::Config::Handler.create(
|
87
|
+
Mongrel2::Config::Handler.create( @handler_config )
|
90
88
|
end
|
91
89
|
|
92
90
|
it "can look up connection information given an application ID" do
|
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.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -48,11 +48,11 @@ cert_chain:
|
|
48
48
|
-----END CERTIFICATE-----
|
49
49
|
|
50
50
|
'
|
51
|
-
date: 2011-09-
|
51
|
+
date: 2011-09-18 00:00:00.000000000Z
|
52
52
|
dependencies:
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: nokogiri
|
55
|
-
requirement: &
|
55
|
+
requirement: &2169629540 !ruby/object:Gem::Requirement
|
56
56
|
none: false
|
57
57
|
requirements:
|
58
58
|
- - ~>
|
@@ -60,10 +60,10 @@ dependencies:
|
|
60
60
|
version: '1.5'
|
61
61
|
type: :runtime
|
62
62
|
prerelease: false
|
63
|
-
version_requirements: *
|
63
|
+
version_requirements: *2169629540
|
64
64
|
- !ruby/object:Gem::Dependency
|
65
65
|
name: sequel
|
66
|
-
requirement: &
|
66
|
+
requirement: &2169628760 !ruby/object:Gem::Requirement
|
67
67
|
none: false
|
68
68
|
requirements:
|
69
69
|
- - ~>
|
@@ -71,10 +71,10 @@ dependencies:
|
|
71
71
|
version: '3.26'
|
72
72
|
type: :runtime
|
73
73
|
prerelease: false
|
74
|
-
version_requirements: *
|
74
|
+
version_requirements: *2169628760
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: amalgalite
|
77
|
-
requirement: &
|
77
|
+
requirement: &2169627860 !ruby/object:Gem::Requirement
|
78
78
|
none: false
|
79
79
|
requirements:
|
80
80
|
- - ~>
|
@@ -82,10 +82,10 @@ dependencies:
|
|
82
82
|
version: '1.1'
|
83
83
|
type: :runtime
|
84
84
|
prerelease: false
|
85
|
-
version_requirements: *
|
85
|
+
version_requirements: *2169627860
|
86
86
|
- !ruby/object:Gem::Dependency
|
87
87
|
name: tnetstring
|
88
|
-
requirement: &
|
88
|
+
requirement: &2169626980 !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
90
90
|
requirements:
|
91
91
|
- - ~>
|
@@ -93,10 +93,10 @@ dependencies:
|
|
93
93
|
version: '0.3'
|
94
94
|
type: :runtime
|
95
95
|
prerelease: false
|
96
|
-
version_requirements: *
|
96
|
+
version_requirements: *2169626980
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: yajl-ruby
|
99
|
-
requirement: &
|
99
|
+
requirement: &2169626160 !ruby/object:Gem::Requirement
|
100
100
|
none: false
|
101
101
|
requirements:
|
102
102
|
- - ~>
|
@@ -104,10 +104,10 @@ dependencies:
|
|
104
104
|
version: '0.8'
|
105
105
|
type: :runtime
|
106
106
|
prerelease: false
|
107
|
-
version_requirements: *
|
107
|
+
version_requirements: *2169626160
|
108
108
|
- !ruby/object:Gem::Dependency
|
109
109
|
name: zmq
|
110
|
-
requirement: &
|
110
|
+
requirement: &2169625440 !ruby/object:Gem::Requirement
|
111
111
|
none: false
|
112
112
|
requirements:
|
113
113
|
- - ~>
|
@@ -115,10 +115,10 @@ dependencies:
|
|
115
115
|
version: 2.1.4
|
116
116
|
type: :runtime
|
117
117
|
prerelease: false
|
118
|
-
version_requirements: *
|
118
|
+
version_requirements: *2169625440
|
119
119
|
- !ruby/object:Gem::Dependency
|
120
120
|
name: hoe-mercurial
|
121
|
-
requirement: &
|
121
|
+
requirement: &2169624720 !ruby/object:Gem::Requirement
|
122
122
|
none: false
|
123
123
|
requirements:
|
124
124
|
- - ~>
|
@@ -126,10 +126,10 @@ dependencies:
|
|
126
126
|
version: 1.2.1
|
127
127
|
type: :development
|
128
128
|
prerelease: false
|
129
|
-
version_requirements: *
|
129
|
+
version_requirements: *2169624720
|
130
130
|
- !ruby/object:Gem::Dependency
|
131
131
|
name: hoe-highline
|
132
|
-
requirement: &
|
132
|
+
requirement: &2169623720 !ruby/object:Gem::Requirement
|
133
133
|
none: false
|
134
134
|
requirements:
|
135
135
|
- - ~>
|
@@ -137,10 +137,10 @@ dependencies:
|
|
137
137
|
version: 0.0.1
|
138
138
|
type: :development
|
139
139
|
prerelease: false
|
140
|
-
version_requirements: *
|
140
|
+
version_requirements: *2169623720
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
142
|
name: configurability
|
143
|
-
requirement: &
|
143
|
+
requirement: &2169623020 !ruby/object:Gem::Requirement
|
144
144
|
none: false
|
145
145
|
requirements:
|
146
146
|
- - ~>
|
@@ -148,10 +148,10 @@ dependencies:
|
|
148
148
|
version: '1.0'
|
149
149
|
type: :development
|
150
150
|
prerelease: false
|
151
|
-
version_requirements: *
|
151
|
+
version_requirements: *2169623020
|
152
152
|
- !ruby/object:Gem::Dependency
|
153
153
|
name: rspec
|
154
|
-
requirement: &
|
154
|
+
requirement: &2169622260 !ruby/object:Gem::Requirement
|
155
155
|
none: false
|
156
156
|
requirements:
|
157
157
|
- - ~>
|
@@ -159,10 +159,10 @@ dependencies:
|
|
159
159
|
version: '2.4'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
|
-
version_requirements: *
|
162
|
+
version_requirements: *2169622260
|
163
163
|
- !ruby/object:Gem::Dependency
|
164
164
|
name: hoe
|
165
|
-
requirement: &
|
165
|
+
requirement: &2169621720 !ruby/object:Gem::Requirement
|
166
166
|
none: false
|
167
167
|
requirements:
|
168
168
|
- - ~>
|
@@ -170,7 +170,7 @@ dependencies:
|
|
170
170
|
version: '2.11'
|
171
171
|
type: :development
|
172
172
|
prerelease: false
|
173
|
-
version_requirements: *
|
173
|
+
version_requirements: *2169621720
|
174
174
|
description: ! "A complete Ruby connector for Mongrel2[http://mongrel2.org/].\n\nThis
|
175
175
|
library includes configuration-database ORM classes, a Ruby\nimplementation of the
|
176
176
|
'm2sh' tool, a configuration DSL for generating config\ndatabases in pure Ruby,
|
metadata.gz.sig
CHANGED
Binary file
|