rainbows 3.0.0 → 3.1.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 (77) hide show
  1. data/.wrongdoc.yml +2 -2
  2. data/Documentation/comparison.haml +6 -6
  3. data/GIT-VERSION-GEN +1 -1
  4. data/GNUmakefile +16 -128
  5. data/README +2 -3
  6. data/Rakefile +3 -3
  7. data/examples/reverse_proxy.ru +9 -0
  8. data/lib/rainbows.rb +14 -6
  9. data/lib/rainbows/base.rb +0 -1
  10. data/lib/rainbows/const.rb +1 -10
  11. data/lib/rainbows/coolio/client.rb +8 -4
  12. data/lib/rainbows/coolio/core.rb +0 -3
  13. data/lib/rainbows/coolio/thread_client.rb +2 -2
  14. data/lib/rainbows/coolio_fiber_spawn.rb +6 -6
  15. data/lib/rainbows/dev_fd_response.rb +16 -9
  16. data/lib/rainbows/epoll.rb +43 -0
  17. data/lib/rainbows/epoll/client.rb +232 -0
  18. data/lib/rainbows/epoll/response_chunk_pipe.rb +18 -0
  19. data/lib/rainbows/epoll/response_pipe.rb +32 -0
  20. data/lib/rainbows/epoll/server.rb +31 -0
  21. data/lib/rainbows/error.rb +1 -9
  22. data/lib/rainbows/ev_core.rb +12 -12
  23. data/lib/rainbows/ev_core/cap_input.rb +1 -1
  24. data/lib/rainbows/event_machine.rb +0 -6
  25. data/lib/rainbows/event_machine/client.rb +3 -3
  26. data/lib/rainbows/event_machine/response_chunk_pipe.rb +5 -7
  27. data/lib/rainbows/event_machine/response_pipe.rb +7 -8
  28. data/lib/rainbows/fiber/base.rb +2 -2
  29. data/lib/rainbows/fiber/io.rb +21 -63
  30. data/lib/rainbows/fiber/io/methods.rb +1 -1
  31. data/lib/rainbows/http_server.rb +4 -4
  32. data/lib/rainbows/join_threads.rb +18 -0
  33. data/lib/rainbows/max_body.rb +2 -1
  34. data/lib/rainbows/max_body/wrapper.rb +1 -1
  35. data/lib/rainbows/never_block/event_machine.rb +2 -2
  36. data/lib/rainbows/process_client.rb +9 -1
  37. data/lib/rainbows/queue_pool.rb +2 -2
  38. data/lib/rainbows/response.rb +1 -1
  39. data/lib/rainbows/rev_fiber_spawn.rb +4 -4
  40. data/lib/rainbows/revactor/client.rb +4 -5
  41. data/lib/rainbows/revactor/proxy.rb +1 -1
  42. data/lib/rainbows/reverse_proxy.rb +189 -0
  43. data/lib/rainbows/reverse_proxy/coolio.rb +61 -0
  44. data/lib/rainbows/reverse_proxy/ev_client.rb +39 -0
  45. data/lib/rainbows/reverse_proxy/event_machine.rb +46 -0
  46. data/lib/rainbows/reverse_proxy/multi_thread.rb +7 -0
  47. data/lib/rainbows/reverse_proxy/synchronous.rb +21 -0
  48. data/lib/rainbows/sendfile.rb +1 -1
  49. data/lib/rainbows/sync_close.rb +2 -2
  50. data/lib/rainbows/thread_pool.rb +1 -1
  51. data/lib/rainbows/writer_thread_pool.rb +1 -1
  52. data/lib/rainbows/xepoll.rb +24 -0
  53. data/lib/rainbows/xepoll/client.rb +45 -0
  54. data/pkg.mk +171 -0
  55. data/rainbows.gemspec +2 -4
  56. data/t/GNUmakefile +4 -0
  57. data/t/bin/content-md5-put +1 -0
  58. data/t/kgio-pipe-response.ru +9 -1
  59. data/t/rack-fiber_pool/app.ru +6 -1
  60. data/t/simple-http_Epoll.ru +9 -0
  61. data/t/simple-http_XEpoll.ru +9 -0
  62. data/t/t0014-config-conflict.sh +5 -3
  63. data/t/t0023-sendfile-byte-range.sh +1 -7
  64. data/t/t0034-pipelined-pipe-response.sh +2 -1
  65. data/t/t0035-kgio-pipe-response.sh +0 -7
  66. data/t/t0041-optional-pool-size.sh +51 -0
  67. data/t/t0050-response-body-close-has-env.sh +2 -1
  68. data/t/t0104-rack-input-limit-tiny.sh +6 -4
  69. data/t/t0105-rack-input-limit-bigger.sh +6 -4
  70. data/t/t0106-rack-input-keepalive.sh +2 -0
  71. data/t/t0107-rack-input-limit-zero.sh +60 -0
  72. data/t/t0113-rewindable-input-false.sh +1 -0
  73. data/t/t0114-rewindable-input-true.sh +1 -0
  74. data/t/t0202-async-response-one-oh.sh +56 -0
  75. data/t/test_isolate.rb +5 -2
  76. metadata +42 -37
  77. data/lib/rainbows/rack_input.rb +0 -17
@@ -33,6 +33,8 @@ req_pipelined () {
33
33
 
34
34
  reload () {
35
35
  t_begin 'reloading Rainbows! to ensure writeout' && {
36
+ # ensure worker is loaded before HUP
37
+ curl -s http://$listen/ >/dev/null
36
38
  # reload to ensure everything is flushed
37
39
  kill -HUP $rainbows_pid
38
40
  test xSTART = x"$(cat $fifo)"
@@ -85,7 +87,6 @@ check_log pipe
85
87
 
86
88
  t_begin "enable sendfile gem" && {
87
89
  echo "require 'sendfile'" >> $unicorn_config
88
- curl http://$listen/ >/dev/null # ensure worker is loaded before HUP
89
90
  }
90
91
 
91
92
  reload
@@ -6,11 +6,13 @@ req_curl_chunked_upload_err_check
6
6
  t_plan 18 "rack.input client_max_body_size tiny"
7
7
 
8
8
  t_begin "setup and startup" && {
9
- rtmpfiles curl_out curl_err cmbs_config
9
+ rtmpfiles curl_out curl_err
10
10
  rainbows_setup $model
11
- sed -e 's/client_max_body_size.*/client_max_body_size 256/' \
12
- < $unicorn_config > $cmbs_config
13
- rainbows -D sha1-random-size.ru -c $cmbs_config
11
+ ed -s $unicorn_config <<EOF
12
+ ,s/client_max_body_size.*/client_max_body_size 256/
13
+ w
14
+ EOF
15
+ rainbows -D sha1-random-size.ru -c $unicorn_config
14
16
  rainbows_wait_start
15
17
  }
16
18
 
@@ -6,11 +6,13 @@ req_curl_chunked_upload_err_check
6
6
  t_plan 10 "rack.input client_max_body_size bigger"
7
7
 
8
8
  t_begin "setup and startup" && {
9
- rtmpfiles curl_out curl_err cmbs_config
9
+ rtmpfiles curl_out curl_err
10
10
  rainbows_setup $model
11
- sed -e 's/client_max_body_size.*/client_max_body_size 10485760/' \
12
- < $unicorn_config > $cmbs_config
13
- rainbows -D sha1-random-size.ru -c $cmbs_config
11
+ ed -s $unicorn_config <<EOF
12
+ ,s/client_max_body_size.*/client_max_body_size 10485760/
13
+ w
14
+ EOF
15
+ rainbows -D sha1-random-size.ru -c $unicorn_config
14
16
  rainbows_wait_start
15
17
  }
16
18
 
@@ -17,6 +17,8 @@ t_begin "setup and startup" && {
17
17
  t_begin "send big pipelined chunked requests" && {
18
18
  (
19
19
  cat $fifo > $tmp &
20
+ Connection=keep-alive
21
+ export Connection
20
22
  content-md5-put < random_blob
21
23
  content-md5-put < random_blob
22
24
  content-md5-put < random_blob
@@ -0,0 +1,60 @@
1
+ #!/bin/sh
2
+ . ./test-lib.sh
3
+ req_curl_chunked_upload_err_check
4
+
5
+ t_plan 6 "rack.input client_max_body_size zero"
6
+
7
+ t_begin "setup and startup" && {
8
+ rtmpfiles curl_out curl_err
9
+ rainbows_setup $model
10
+ ed -s $unicorn_config <<EOF
11
+ ,s/client_max_body_size.*/client_max_body_size 0/
12
+ w
13
+ EOF
14
+ rainbows -D sha1-random-size.ru -c $unicorn_config
15
+ rainbows_wait_start
16
+ empty_sha1=da39a3ee5e6b4b0d3255bfef95601890afd80709
17
+ }
18
+
19
+ t_begin "regular request" && {
20
+ curl -vsSf -H Expect: http://$listen/ > $curl_out 2> $curl_err
21
+ dbgcat curl_err
22
+ dbgcat curl_out
23
+ test x"$(cat $curl_out)" = x$empty_sha1
24
+ }
25
+
26
+ t_begin "chunked request" && {
27
+ curl -vsSf -T- < /dev/null -H Expect: \
28
+ http://$listen/ > $curl_out 2> $curl_err
29
+ dbgcat curl_err
30
+ dbgcat curl_out
31
+ test x"$(cat $curl_out)" = x$empty_sha1
32
+ }
33
+
34
+ t_begin "small input chunked" && {
35
+ rm -f $ok
36
+ echo | \
37
+ curl -vsSf -T- -H Expect: \
38
+ http://$listen/ > $curl_out 2> $curl_err || > $ok
39
+ dbgcat curl_err
40
+ dbgcat curl_out
41
+ fgrep 413 $curl_err
42
+ test -e $ok
43
+ }
44
+
45
+ t_begin "small input content-length" && {
46
+ rm -f $ok
47
+ echo > $tmp
48
+ curl -vsSf -T $tmp -H Expect: \
49
+ http://$listen/ > $curl_out 2> $curl_err || > $ok
50
+ fgrep 413 $curl_err
51
+ dbgcat curl_err
52
+ dbgcat curl_out
53
+ test -e $ok
54
+ }
55
+
56
+ t_begin "shutdown" && {
57
+ kill $rainbows_pid
58
+ }
59
+
60
+ t_done
@@ -3,6 +3,7 @@
3
3
  skip_models EventMachine NeverBlock
4
4
  skip_models Rev RevThreadSpawn RevThreadPool
5
5
  skip_models Coolio CoolioThreadSpawn CoolioThreadPool
6
+ skip_models Epoll XEpoll
6
7
 
7
8
  t_plan 4 "rewindable_input toggled to false"
8
9
 
@@ -3,6 +3,7 @@
3
3
  skip_models EventMachine NeverBlock
4
4
  skip_models Rev RevThreadSpawn RevThreadPool
5
5
  skip_models Coolio CoolioThreadSpawn CoolioThreadPool
6
+ skip_models Epoll XEpoll
6
7
 
7
8
  t_plan 4 "rewindable_input toggled to true"
8
9
 
@@ -0,0 +1,56 @@
1
+ #!/bin/sh
2
+ CONFIG_RU=${CONFIG_RU-'async-response.ru'}
3
+ . ./test-lib.sh
4
+
5
+ skip_models Base WriterThreadPool WriterThreadSpawn
6
+
7
+ t_plan 6 "async HTTP/1.0 response for $model"
8
+
9
+ t_begin "setup and start" && {
10
+ rainbows_setup
11
+ rtmpfiles a b c a_err b_err c_err
12
+ # can't load Rack::Lint here since it'll cause Rev to slurp
13
+ rainbows -E none -D $CONFIG_RU -c $unicorn_config
14
+ rainbows_wait_start
15
+ }
16
+
17
+ t_begin "send async requests off in parallel" && {
18
+ t0=$(date +%s)
19
+ curl="curl -0 --no-buffer -vsSf http://$listen/"
20
+ ( $curl 2>> $a_err | utee $a) &
21
+ ( $curl 2>> $b_err | utee $b) &
22
+ ( $curl 2>> $c_err | utee $c) &
23
+ wait
24
+ t1=$(date +%s)
25
+ }
26
+
27
+ t_begin "ensure elapsed requests were processed in parallel" && {
28
+ elapsed=$(( $t1 - $t0 ))
29
+ echo "elapsed=$elapsed < 30"
30
+ test $elapsed -lt 30
31
+ }
32
+
33
+ t_begin "termination signal sent" && {
34
+ kill $rainbows_pid
35
+ }
36
+
37
+ dbgcat a
38
+ dbgcat b
39
+ dbgcat c
40
+ dbgcat a_err
41
+
42
+ t_begin "no errors from curl" && {
43
+ if grep -i Transfer-Encoding $a_err $b_err $c_err
44
+ then
45
+ die "Unexpected Transfer-Encoding: header"
46
+ fi
47
+ for i in $a_err $b_err $c_err
48
+ do
49
+ grep 'Connection: close' $i
50
+ done
51
+ }
52
+
53
+ dbgcat r_err
54
+ t_begin "no errors in stderr" && check_stderr
55
+
56
+ t_done
data/t/test_isolate.rb CHANGED
@@ -16,8 +16,9 @@ $stdout.reopen($stderr)
16
16
  lock = File.open(__FILE__, "rb")
17
17
  lock.flock(File::LOCK_EX)
18
18
  Isolate.now!(opts) do
19
- gem 'unicorn', '3.3.1'
19
+ gem 'unicorn', '3.4.0'
20
20
  gem 'kcar', '0.1.2'
21
+ gem 'raindrops', '0.4.1'
21
22
 
22
23
  if engine == "ruby"
23
24
  gem 'sendfile', '1.0.0' # next Rubinius should support this
@@ -31,8 +32,10 @@ Isolate.now!(opts) do
31
32
 
32
33
  if defined?(::Fiber) && engine == "ruby"
33
34
  gem 'revactor', '0.1.5'
34
- gem 'rack-fiber_pool', '0.9.0'
35
+ gem 'rack-fiber_pool', '0.9.1'
35
36
  end
37
+
38
+ gem 'sleepy_penguin', '1.4.0' if RUBY_PLATFORM =~ /linux/
36
39
  end
37
40
 
38
41
  $stdout.reopen(old_out)
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rainbows
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
5
- prerelease: false
6
- segments:
7
- - 3
8
- - 0
9
- - 0
10
- version: 3.0.0
4
+ prerelease:
5
+ version: 3.1.0
11
6
  platform: ruby
12
7
  authors:
13
8
  - Rainbows! hackers
@@ -15,7 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-01-12 00:00:00 +00:00
13
+ date: 2011-02-11 00:00:00 +00:00
19
14
  default_executable:
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
@@ -26,10 +21,6 @@ dependencies:
26
21
  requirements:
27
22
  - - ~>
28
23
  - !ruby/object:Gem::Version
29
- hash: 13
30
- segments:
31
- - 1
32
- - 1
33
24
  version: "1.1"
34
25
  type: :runtime
35
26
  version_requirements: *id001
@@ -41,11 +32,7 @@ dependencies:
41
32
  requirements:
42
33
  - - ~>
43
34
  - !ruby/object:Gem::Version
44
- hash: 1
45
- segments:
46
- - 3
47
- - 3
48
- version: "3.3"
35
+ version: "3.4"
49
36
  type: :runtime
50
37
  version_requirements: *id002
51
38
  - !ruby/object:Gem::Dependency
@@ -56,11 +43,6 @@ dependencies:
56
43
  requirements:
57
44
  - - ~>
58
45
  - !ruby/object:Gem::Version
59
- hash: 7
60
- segments:
61
- - 3
62
- - 0
63
- - 0
64
46
  version: 3.0.0
65
47
  type: :development
66
48
  version_requirements: *id003
@@ -72,11 +54,7 @@ dependencies:
72
54
  requirements:
73
55
  - - ~>
74
56
  - !ruby/object:Gem::Version
75
- hash: 13
76
- segments:
77
- - 1
78
- - 1
79
- version: "1.1"
57
+ version: "1.5"
80
58
  type: :development
81
59
  version_requirements: *id004
82
60
  description: |-
@@ -116,6 +94,11 @@ extra_rdoc_files:
116
94
  - lib/rainbows/coolio_thread_spawn.rb
117
95
  - lib/rainbows/coolio_thread_spawn/client.rb
118
96
  - lib/rainbows/dev_fd_response.rb
97
+ - lib/rainbows/epoll.rb
98
+ - lib/rainbows/epoll/client.rb
99
+ - lib/rainbows/epoll/response_chunk_pipe.rb
100
+ - lib/rainbows/epoll/response_pipe.rb
101
+ - lib/rainbows/epoll/server.rb
119
102
  - lib/rainbows/error.rb
120
103
  - lib/rainbows/ev_core.rb
121
104
  - lib/rainbows/ev_core/cap_input.rb
@@ -144,6 +127,7 @@ extra_rdoc_files:
144
127
  - lib/rainbows/http_parser.rb
145
128
  - lib/rainbows/http_response.rb
146
129
  - lib/rainbows/http_server.rb
130
+ - lib/rainbows/join_threads.rb
147
131
  - lib/rainbows/max_body.rb
148
132
  - lib/rainbows/max_body/rewindable_wrapper.rb
149
133
  - lib/rainbows/max_body/wrapper.rb
@@ -152,7 +136,6 @@ extra_rdoc_files:
152
136
  - lib/rainbows/never_block/event_machine.rb
153
137
  - lib/rainbows/process_client.rb
154
138
  - lib/rainbows/queue_pool.rb
155
- - lib/rainbows/rack_input.rb
156
139
  - lib/rainbows/response.rb
157
140
  - lib/rainbows/rev.rb
158
141
  - lib/rainbows/rev_fiber_spawn.rb
@@ -163,6 +146,12 @@ extra_rdoc_files:
163
146
  - lib/rainbows/revactor/client/methods.rb
164
147
  - lib/rainbows/revactor/client/tee_socket.rb
165
148
  - lib/rainbows/revactor/proxy.rb
149
+ - lib/rainbows/reverse_proxy.rb
150
+ - lib/rainbows/reverse_proxy/coolio.rb
151
+ - lib/rainbows/reverse_proxy/ev_client.rb
152
+ - lib/rainbows/reverse_proxy/event_machine.rb
153
+ - lib/rainbows/reverse_proxy/multi_thread.rb
154
+ - lib/rainbows/reverse_proxy/synchronous.rb
166
155
  - lib/rainbows/sendfile.rb
167
156
  - lib/rainbows/server_token.rb
168
157
  - lib/rainbows/socket_proxy.rb
@@ -176,6 +165,8 @@ extra_rdoc_files:
176
165
  - lib/rainbows/writer_thread_pool/client.rb
177
166
  - lib/rainbows/writer_thread_spawn.rb
178
167
  - lib/rainbows/writer_thread_spawn/client.rb
168
+ - lib/rainbows/xepoll.rb
169
+ - lib/rainbows/xepoll/client.rb
179
170
  - LATEST
180
171
  - LICENSE
181
172
  - NEWS
@@ -216,6 +207,7 @@ files:
216
207
  - TUNING
217
208
  - Test_Suite
218
209
  - bin/rainbows
210
+ - examples/reverse_proxy.ru
219
211
  - lib/rainbows.rb
220
212
  - lib/rainbows/actor_spawn.rb
221
213
  - lib/rainbows/app_pool.rb
@@ -240,6 +232,11 @@ files:
240
232
  - lib/rainbows/coolio_thread_spawn.rb
241
233
  - lib/rainbows/coolio_thread_spawn/client.rb
242
234
  - lib/rainbows/dev_fd_response.rb
235
+ - lib/rainbows/epoll.rb
236
+ - lib/rainbows/epoll/client.rb
237
+ - lib/rainbows/epoll/response_chunk_pipe.rb
238
+ - lib/rainbows/epoll/response_pipe.rb
239
+ - lib/rainbows/epoll/server.rb
243
240
  - lib/rainbows/error.rb
244
241
  - lib/rainbows/ev_core.rb
245
242
  - lib/rainbows/ev_core/cap_input.rb
@@ -268,6 +265,7 @@ files:
268
265
  - lib/rainbows/http_parser.rb
269
266
  - lib/rainbows/http_response.rb
270
267
  - lib/rainbows/http_server.rb
268
+ - lib/rainbows/join_threads.rb
271
269
  - lib/rainbows/max_body.rb
272
270
  - lib/rainbows/max_body/rewindable_wrapper.rb
273
271
  - lib/rainbows/max_body/wrapper.rb
@@ -276,7 +274,6 @@ files:
276
274
  - lib/rainbows/never_block/event_machine.rb
277
275
  - lib/rainbows/process_client.rb
278
276
  - lib/rainbows/queue_pool.rb
279
- - lib/rainbows/rack_input.rb
280
277
  - lib/rainbows/response.rb
281
278
  - lib/rainbows/rev.rb
282
279
  - lib/rainbows/rev_fiber_spawn.rb
@@ -287,6 +284,12 @@ files:
287
284
  - lib/rainbows/revactor/client/methods.rb
288
285
  - lib/rainbows/revactor/client/tee_socket.rb
289
286
  - lib/rainbows/revactor/proxy.rb
287
+ - lib/rainbows/reverse_proxy.rb
288
+ - lib/rainbows/reverse_proxy/coolio.rb
289
+ - lib/rainbows/reverse_proxy/ev_client.rb
290
+ - lib/rainbows/reverse_proxy/event_machine.rb
291
+ - lib/rainbows/reverse_proxy/multi_thread.rb
292
+ - lib/rainbows/reverse_proxy/synchronous.rb
290
293
  - lib/rainbows/sendfile.rb
291
294
  - lib/rainbows/server_token.rb
292
295
  - lib/rainbows/socket_proxy.rb
@@ -300,8 +303,11 @@ files:
300
303
  - lib/rainbows/writer_thread_pool/client.rb
301
304
  - lib/rainbows/writer_thread_spawn.rb
302
305
  - lib/rainbows/writer_thread_spawn/client.rb
306
+ - lib/rainbows/xepoll.rb
307
+ - lib/rainbows/xepoll/client.rb
303
308
  - local.mk.sample
304
309
  - man/man1/rainbows.1
310
+ - pkg.mk
305
311
  - rainbows.gemspec
306
312
  - setup.rb
307
313
  - t/.gitignore
@@ -345,6 +351,7 @@ files:
345
351
  - t/simple-http_CoolioFiberSpawn.ru
346
352
  - t/simple-http_CoolioThreadPool.ru
347
353
  - t/simple-http_CoolioThreadSpawn.ru
354
+ - t/simple-http_Epoll.ru
348
355
  - t/simple-http_EventMachine.ru
349
356
  - t/simple-http_FiberPool.ru
350
357
  - t/simple-http_FiberSpawn.ru
@@ -358,6 +365,7 @@ files:
358
365
  - t/simple-http_ThreadSpawn.ru
359
366
  - t/simple-http_WriterThreadPool.ru
360
367
  - t/simple-http_WriterThreadSpawn.ru
368
+ - t/simple-http_XEpoll.ru
361
369
  - t/sleep.ru
362
370
  - t/t0000-simple-http.sh
363
371
  - t/t0000.ru
@@ -395,6 +403,7 @@ files:
395
403
  - t/t0034-pipelined-pipe-response.sh
396
404
  - t/t0035-kgio-pipe-response.sh
397
405
  - t/t0040-keepalive_requests-setting.sh
406
+ - t/t0041-optional-pool-size.sh
398
407
  - t/t0050-response-body-close-has-env.sh
399
408
  - t/t0100-rack-input-hammer-chunked.sh
400
409
  - t/t0100-rack-input-hammer-content-length.sh
@@ -404,12 +413,14 @@ files:
404
413
  - t/t0104-rack-input-limit-tiny.sh
405
414
  - t/t0105-rack-input-limit-bigger.sh
406
415
  - t/t0106-rack-input-keepalive.sh
416
+ - t/t0107-rack-input-limit-zero.sh
407
417
  - t/t0113-rewindable-input-false.sh
408
418
  - t/t0113.ru
409
419
  - t/t0114-rewindable-input-true.sh
410
420
  - t/t0114.ru
411
421
  - t/t0200-async-response.sh
412
422
  - t/t0201-async-response-no-autochunk.sh
423
+ - t/t0202-async-response-one-oh.sh
413
424
  - t/t0300-async_sinatra.sh
414
425
  - t/t0400-em-async-app.sh
415
426
  - t/t0401-em-async-tailer.sh
@@ -444,7 +455,7 @@ rdoc_options:
444
455
  - -t
445
456
  - Rainbows! - Unicorn for sleepy apps and slow clients
446
457
  - -W
447
- - http://git.bogomips.org/cgit/rainbows.git/tree/%s
458
+ - http://bogomips.org/rainbows.git/tree/%s
448
459
  require_paths:
449
460
  - lib
450
461
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -452,23 +463,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
452
463
  requirements:
453
464
  - - ">="
454
465
  - !ruby/object:Gem::Version
455
- hash: 3
456
- segments:
457
- - 0
458
466
  version: "0"
459
467
  required_rubygems_version: !ruby/object:Gem::Requirement
460
468
  none: false
461
469
  requirements:
462
470
  - - ">="
463
471
  - !ruby/object:Gem::Version
464
- hash: 3
465
- segments:
466
- - 0
467
472
  version: "0"
468
473
  requirements: []
469
474
 
470
475
  rubyforge_project: rainbows
471
- rubygems_version: 1.3.7
476
+ rubygems_version: 1.5.0
472
477
  signing_key:
473
478
  specification_version: 3
474
479
  summary: "- Unicorn for sleepy apps and slow clients"