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 CHANGED
Binary file
@@ -2,6 +2,8 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Ruby-Mongrel2 Examples</title>
5
+ <link rel="stylesheet" href="/css/master.css" type="text/css" media="screen"
6
+ title="no title" charset="utf-8" />
5
7
  </head>
6
8
  <body>
7
9
  <header>
@@ -22,16 +22,23 @@ class RequestDumper < Mongrel2::Handler
22
22
 
23
23
  ### Handle a request
24
24
  def handle( request )
25
- response = request.response
26
- template = @template.dup
25
+ Thread.new do
26
+ Thread.current.abort_on_exception = true
27
+ $SAFE = 1
27
28
 
28
- template.request = request
29
+ template = @template.dup
30
+ response = request.response
29
31
 
30
- response.status = 200
31
- response.headers.content_type = 'text/html'
32
- response.puts( template )
32
+ template.request = request
33
+ template.title = "Ruby-Mongrel2 Request Dumper"
34
+ template.safelevel = $SAFE
33
35
 
34
- return response
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 => 'config.sqlite' )
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
- <p><tt>
59
- <?pp request ?>
60
- </tt></p>
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.1.2'
17
+ VERSION = '0.2.0'
18
18
 
19
19
  # Version-control revision constant
20
- REVISION = %q$Revision: 4212c8770654 $
20
+ REVISION = %q$Revision: 5c631fa35bff $
21
21
 
22
22
 
23
23
  require 'mongrel2/logging'
@@ -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
@@ -180,7 +180,7 @@ class Mongrel2::Connection
180
180
  "not connected"
181
181
  end
182
182
 
183
- return "#<%p:0x%08x {%s} %s <-> %s (%s)>" % [
183
+ return "#<%p:0x%016x {%s} %s <-> %s (%s)>" % [
184
184
  self.class,
185
185
  self.object_id * 2,
186
186
  self.app_id,
@@ -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%08x conn: %p>" % [
209
+ return "#<%p:0x%016x conn: %p>" % [
210
210
  self.class,
211
211
  self.object_id * 2,
212
212
  self.conn,
@@ -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:
@@ -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( HANDLER_CONFIG )
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.1.2
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-16 00:00:00.000000000Z
51
+ date: 2011-09-18 00:00:00.000000000Z
52
52
  dependencies:
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: nokogiri
55
- requirement: &2170501340 !ruby/object:Gem::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: *2170501340
63
+ version_requirements: *2169629540
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: sequel
66
- requirement: &2170500720 !ruby/object:Gem::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: *2170500720
74
+ version_requirements: *2169628760
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: amalgalite
77
- requirement: &2170500140 !ruby/object:Gem::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: *2170500140
85
+ version_requirements: *2169627860
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: tnetstring
88
- requirement: &2170499500 !ruby/object:Gem::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: *2170499500
96
+ version_requirements: *2169626980
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: yajl-ruby
99
- requirement: &2170499000 !ruby/object:Gem::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: *2170499000
107
+ version_requirements: *2169626160
108
108
  - !ruby/object:Gem::Dependency
109
109
  name: zmq
110
- requirement: &2170498380 !ruby/object:Gem::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: *2170498380
118
+ version_requirements: *2169625440
119
119
  - !ruby/object:Gem::Dependency
120
120
  name: hoe-mercurial
121
- requirement: &2170497820 !ruby/object:Gem::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: *2170497820
129
+ version_requirements: *2169624720
130
130
  - !ruby/object:Gem::Dependency
131
131
  name: hoe-highline
132
- requirement: &2170497200 !ruby/object:Gem::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: *2170497200
140
+ version_requirements: *2169623720
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: configurability
143
- requirement: &2170496520 !ruby/object:Gem::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: *2170496520
151
+ version_requirements: *2169623020
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: rspec
154
- requirement: &2170495900 !ruby/object:Gem::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: *2170495900
162
+ version_requirements: *2169622260
163
163
  - !ruby/object:Gem::Dependency
164
164
  name: hoe
165
- requirement: &2170495420 !ruby/object:Gem::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: *2170495420
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