m2r 0.0.3 → 1.0.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.
Files changed (51) hide show
  1. data/Gemfile +6 -0
  2. data/README.md +141 -35
  3. data/Rakefile +13 -45
  4. data/example/Procfile +4 -0
  5. data/example/config.sqlite +0 -0
  6. data/example/http_0mq.rb +37 -19
  7. data/example/lobster.ru +14 -6
  8. data/example/mongrel2.conf +47 -0
  9. data/example/tmp/access.log +505 -0
  10. data/example/uploading.ru +37 -0
  11. data/lib/m2r.rb +49 -3
  12. data/lib/m2r/connection.rb +66 -0
  13. data/lib/m2r/connection_factory.rb +41 -0
  14. data/lib/m2r/handler.rb +130 -0
  15. data/lib/m2r/headers.rb +72 -0
  16. data/lib/m2r/rack_handler.rb +47 -0
  17. data/lib/m2r/request.rb +129 -0
  18. data/lib/m2r/request/base.rb +33 -0
  19. data/lib/m2r/request/upload.rb +60 -0
  20. data/lib/m2r/response.rb +102 -0
  21. data/lib/m2r/response/content_length.rb +18 -0
  22. data/lib/m2r/version.rb +5 -0
  23. data/lib/rack/handler/mongrel2.rb +33 -0
  24. data/m2r.gemspec +30 -63
  25. data/test/acceptance/examples_test.rb +32 -0
  26. data/test/support/capybara.rb +4 -0
  27. data/test/support/mongrel_helper.rb +40 -0
  28. data/test/support/test_handler.rb +51 -0
  29. data/test/support/test_user.rb +37 -0
  30. data/test/test_helper.rb +5 -0
  31. data/test/unit/connection_factory_test.rb +29 -0
  32. data/test/unit/connection_test.rb +49 -0
  33. data/test/unit/handler_test.rb +41 -0
  34. data/test/unit/headers_test.rb +50 -0
  35. data/test/unit/m2r_test.rb +40 -0
  36. data/test/unit/rack_handler_test.rb +52 -0
  37. data/test/unit/request_test.rb +38 -0
  38. data/test/unit/response_test.rb +30 -0
  39. metadata +310 -105
  40. data/.document +0 -5
  41. data/.gitignore +0 -21
  42. data/ISSUES +0 -62
  43. data/VERSION +0 -1
  44. data/benchmarks/jruby +0 -60
  45. data/example/rack_handler.rb +0 -69
  46. data/lib/connection.rb +0 -158
  47. data/lib/fiber_handler.rb +0 -43
  48. data/lib/handler.rb +0 -66
  49. data/lib/request.rb +0 -44
  50. data/test/helper.rb +0 -10
  51. data/test/test_m2r.rb +0 -7
@@ -0,0 +1,38 @@
1
+ require 'test_helper'
2
+
3
+ module M2R
4
+ class TestRequest < MiniTest::Unit::TestCase
5
+ def test_parse
6
+ data = %q[FAKESENDER 0 / 97:{"PATH":"/","host":"default","METHOD":"HEAD","VERSION":"HTTP/1.1","URI":"/","URL_SCHEME":"https"},0:,]
7
+ request = Request.parse(data)
8
+
9
+ assert_equal "/", request.path
10
+ assert_equal "default", request.headers['Host']
11
+ assert_equal "HEAD", request.method
12
+ assert_equal nil, request.query
13
+ assert_equal nil, request.pattern
14
+ assert_equal "https", request.scheme
15
+ end
16
+
17
+ def test_scheme
18
+ data = %q[FAKESENDER 0 / 96:{"PATH":"/","host":"default","METHOD":"HEAD","VERSION":"HTTP/1.1","URI":"/","URL_SCHEME":"http"},0:,]
19
+ request = Request.parse(data)
20
+ assert_equal "http", request.scheme
21
+ end
22
+
23
+ def test_http_scheme_in_mongrel17
24
+ data = %q[FAKESENDER 0 / 76:{"PATH":"/","host":"default","METHOD":"HEAD","VERSION":"HTTP/1.1","URI":"/"},0:,]
25
+ request = Request.parse(data)
26
+ assert_equal "http", request.scheme
27
+ end
28
+
29
+ def test_https_scheme_in_mongrel17_set_via_env
30
+ ENV['HTTPS']='true'
31
+ data = %q[FAKESENDER 0 / 76:{"PATH":"/","host":"default","METHOD":"HEAD","VERSION":"HTTP/1.1","URI":"/"},0:,]
32
+ request = Request.parse(data)
33
+ assert_equal "https", request.scheme
34
+ ensure
35
+ ENV.delete('HTTPS')
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,30 @@
1
+ require 'test_helper'
2
+
3
+ module M2R
4
+ class ResponseTest < MiniTest::Unit::TestCase
5
+ def test_response_with_nil_body
6
+ ok = Response.new(200, {"Transfer-Encoding" => "chunked"}, nil)
7
+ http = "HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"
8
+ assert_equal http, ok.to_s
9
+ end
10
+
11
+ def test_response_with_empty_body
12
+ ok = Response.new(200, {"Transfer-Encoding" => "chunked"}, "")
13
+ http = "HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"
14
+ assert_equal http, ok.to_s
15
+ end
16
+
17
+ def test_response_with_no_body
18
+ ok = Response.new(200, {"Transfer-Encoding" => "chunked"})
19
+ http = "HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"
20
+ assert_equal http, ok.to_s
21
+ end
22
+
23
+ def test_response_with_content_length
24
+ ok = Response.new(200, {}, 'data')
25
+ ok.extend Response::ContentLength
26
+ http = "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\ndata"
27
+ assert_equal http, ok.to_s
28
+ end
29
+ end
30
+ end
metadata CHANGED
@@ -1,118 +1,323 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: m2r
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 3
9
- version: 0.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
12
- - Colin Curtin
13
- - Pradeep Elankumaran
7
+ authors:
8
+ - Colin Curtin
9
+ - Pradeep Elankumaran
10
+ - Pawel Pacana
11
+ - Robert Pankowecki
14
12
  autorequire:
15
13
  bindir: bin
16
14
  cert_chain: []
17
-
18
- date: 2010-10-23 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: ffi
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
31
- type: :runtime
32
- version_requirements: *id001
33
- - !ruby/object:Gem::Dependency
34
- name: ffi-rzmq
35
- prerelease: false
36
- requirement: &id002 !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- segments:
41
- - 0
42
- version: "0"
43
- type: :runtime
44
- version_requirements: *id002
45
- - !ruby/object:Gem::Dependency
46
- name: json
47
- prerelease: false
48
- requirement: &id003 !ruby/object:Gem::Requirement
49
- requirements:
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- segments:
53
- - 0
54
- version: "0"
55
- type: :runtime
56
- version_requirements: *id003
57
- description: A Mongrel2 interface and handler library for JRuby, and hopefully other Ruby implementations in the future. Works with Rack, so it works with Rails! (Rails installation guide forthcoming.)
58
- email: colin.t.curtin+m2r@gmail.com
15
+ date: 2010-10-23 00:00:00.000000000 Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: ffi-rzmq
19
+ requirement: !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 0.9.3
25
+ type: :runtime
26
+ prerelease: false
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 0.9.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: ffi
35
+ requirement: !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.0
41
+ type: :runtime
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: 1.0.0
49
+ - !ruby/object:Gem::Dependency
50
+ name: multi_json
51
+ requirement: !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ - !ruby/object:Gem::Dependency
66
+ name: tnetstring
67
+ requirement: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ type: :runtime
74
+ prerelease: false
75
+ version_requirements: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: rack
83
+ requirement: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ! '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: minitest
115
+ requirement: !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - '='
119
+ - !ruby/object:Gem::Version
120
+ version: 3.2.0
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - '='
127
+ - !ruby/object:Gem::Version
128
+ version: 3.2.0
129
+ - !ruby/object:Gem::Dependency
130
+ name: mocha
131
+ requirement: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ~>
135
+ - !ruby/object:Gem::Version
136
+ version: 0.12.1
137
+ type: :development
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ~>
143
+ - !ruby/object:Gem::Version
144
+ version: 0.12.1
145
+ - !ruby/object:Gem::Dependency
146
+ name: bbq
147
+ requirement: !ruby/object:Gem::Requirement
148
+ none: false
149
+ requirements:
150
+ - - '='
151
+ - !ruby/object:Gem::Version
152
+ version: 0.0.4
153
+ type: :development
154
+ prerelease: false
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ none: false
157
+ requirements:
158
+ - - '='
159
+ - !ruby/object:Gem::Version
160
+ version: 0.0.4
161
+ - !ruby/object:Gem::Dependency
162
+ name: capybara-mechanize
163
+ requirement: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - '='
167
+ - !ruby/object:Gem::Version
168
+ version: 0.3.0
169
+ type: :development
170
+ prerelease: false
171
+ version_requirements: !ruby/object:Gem::Requirement
172
+ none: false
173
+ requirements:
174
+ - - '='
175
+ - !ruby/object:Gem::Version
176
+ version: 0.3.0
177
+ - !ruby/object:Gem::Dependency
178
+ name: activesupport
179
+ requirement: !ruby/object:Gem::Requirement
180
+ none: false
181
+ requirements:
182
+ - - ~>
183
+ - !ruby/object:Gem::Version
184
+ version: 3.2.7
185
+ type: :development
186
+ prerelease: false
187
+ version_requirements: !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ~>
191
+ - !ruby/object:Gem::Version
192
+ version: 3.2.7
193
+ - !ruby/object:Gem::Dependency
194
+ name: yard
195
+ requirement: !ruby/object:Gem::Requirement
196
+ none: false
197
+ requirements:
198
+ - - ~>
199
+ - !ruby/object:Gem::Version
200
+ version: 0.8.2
201
+ type: :development
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ none: false
205
+ requirements:
206
+ - - ~>
207
+ - !ruby/object:Gem::Version
208
+ version: 0.8.2
209
+ - !ruby/object:Gem::Dependency
210
+ name: kramdown
211
+ requirement: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ~>
215
+ - !ruby/object:Gem::Version
216
+ version: 0.13.7
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ none: false
221
+ requirements:
222
+ - - ~>
223
+ - !ruby/object:Gem::Version
224
+ version: 0.13.7
225
+ description: A Mongrel2 interface and handler library for JRuby, and hopefully other
226
+ Ruby implementations in the future. Works with Rack, so it works with Rails! (Rails
227
+ installation guide forthcoming).
228
+ email:
229
+ - colin.t.curtin+m2r@gmail.com
230
+ - pawel.pacana+m2r@gmail.com
231
+ - robert.pankowecki+m2r@gmail.com
59
232
  executables: []
60
-
61
233
  extensions: []
62
-
63
- extra_rdoc_files:
64
- - LICENSE
65
- - README.md
66
- files:
67
- - .document
68
- - .gitignore
69
- - ISSUES
70
- - LICENSE
71
- - README.md
72
- - Rakefile
73
- - VERSION
74
- - benchmarks/jruby
75
- - example/http_0mq.rb
76
- - example/lobster.ru
77
- - example/rack_handler.rb
78
- - lib/connection.rb
79
- - lib/fiber_handler.rb
80
- - lib/handler.rb
81
- - lib/m2r.rb
82
- - lib/request.rb
83
- - m2r.gemspec
84
- - test/helper.rb
85
- - test/test_m2r.rb
86
- has_rdoc: true
234
+ extra_rdoc_files:
235
+ - LICENSE
236
+ - README.md
237
+ files:
238
+ - lib/m2r/connection_factory.rb
239
+ - lib/m2r/version.rb
240
+ - lib/m2r/response.rb
241
+ - lib/m2r/connection.rb
242
+ - lib/m2r/headers.rb
243
+ - lib/m2r/handler.rb
244
+ - lib/m2r/response/content_length.rb
245
+ - lib/m2r/request/upload.rb
246
+ - lib/m2r/request/base.rb
247
+ - lib/m2r/request.rb
248
+ - lib/m2r/rack_handler.rb
249
+ - lib/rack/handler/mongrel2.rb
250
+ - lib/m2r.rb
251
+ - example/config.sqlite
252
+ - example/mongrel2.conf
253
+ - example/lobster.ru
254
+ - example/http_0mq.rb
255
+ - example/Procfile
256
+ - example/tmp/access.log
257
+ - example/uploading.ru
258
+ - test/unit/response_test.rb
259
+ - test/unit/m2r_test.rb
260
+ - test/unit/connection_factory_test.rb
261
+ - test/unit/headers_test.rb
262
+ - test/unit/handler_test.rb
263
+ - test/unit/rack_handler_test.rb
264
+ - test/unit/connection_test.rb
265
+ - test/unit/request_test.rb
266
+ - test/acceptance/examples_test.rb
267
+ - test/test_helper.rb
268
+ - test/support/mongrel_helper.rb
269
+ - test/support/test_user.rb
270
+ - test/support/test_handler.rb
271
+ - test/support/capybara.rb
272
+ - LICENSE
273
+ - README.md
274
+ - Rakefile
275
+ - Gemfile
276
+ - m2r.gemspec
87
277
  homepage: http://github.com/perplexes/m2r
88
- licenses: []
89
-
278
+ licenses:
279
+ - MIT
90
280
  post_install_message:
91
- rdoc_options:
92
- - --charset=UTF-8
93
- require_paths:
94
- - lib
95
- required_ruby_version: !ruby/object:Gem::Requirement
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- segments:
100
- - 0
101
- version: "0"
102
- required_rubygems_version: !ruby/object:Gem::Requirement
103
- requirements:
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- segments:
107
- - 0
108
- version: "0"
281
+ rdoc_options: []
282
+ require_paths:
283
+ - lib
284
+ required_ruby_version: !ruby/object:Gem::Requirement
285
+ none: false
286
+ requirements:
287
+ - - ! '>='
288
+ - !ruby/object:Gem::Version
289
+ version: '0'
290
+ segments:
291
+ - 0
292
+ hash: -489454444504109335
293
+ required_rubygems_version: !ruby/object:Gem::Requirement
294
+ none: false
295
+ requirements:
296
+ - - ! '>='
297
+ - !ruby/object:Gem::Version
298
+ version: '0'
299
+ segments:
300
+ - 0
301
+ hash: -489454444504109335
109
302
  requirements: []
110
-
111
303
  rubyforge_project:
112
- rubygems_version: 1.3.6
304
+ rubygems_version: 1.8.23
113
305
  signing_key:
114
306
  specification_version: 3
115
- summary: Mongrel2 interface and handler library for JRuby
116
- test_files:
117
- - test/helper.rb
118
- - test/test_m2r.rb
307
+ summary: Mongrel2 interface and handler library for JRuby.
308
+ test_files:
309
+ - test/unit/response_test.rb
310
+ - test/unit/m2r_test.rb
311
+ - test/unit/connection_factory_test.rb
312
+ - test/unit/headers_test.rb
313
+ - test/unit/handler_test.rb
314
+ - test/unit/rack_handler_test.rb
315
+ - test/unit/connection_test.rb
316
+ - test/unit/request_test.rb
317
+ - test/acceptance/examples_test.rb
318
+ - test/test_helper.rb
319
+ - test/support/mongrel_helper.rb
320
+ - test/support/test_user.rb
321
+ - test/support/test_handler.rb
322
+ - test/support/capybara.rb
323
+ has_rdoc: