m2r 0.0.3 → 1.0.0

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