mongrel2 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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