rainbows 4.5.0 → 4.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/.wrongdoc.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  cgit_url: http://bogomips.org/rainbows.git
3
3
  git_url: git://bogomips.org/rainbows.git
4
- rdoc_url: http://rainbows.rubyforge.org/
4
+ rdoc_url: http://rainbows.bogomips.org/
5
5
  changelog_start: v0.97.0
6
6
  merge_html:
7
7
  rainbows_1: Documentation/rainbows.1.html
data/ChangeLog CHANGED
@@ -1,5 +1,119 @@
1
- ChangeLog from http://bogomips.org/rainbows.git (v0.97.0..v4.5.0)
1
+ ChangeLog from http://bogomips.org/rainbows.git (v0.97.0..v4.6.0)
2
2
 
3
+ commit 2dc55e417708d411987b4fb4233c87fe9f59ba0a
4
+ Author: Eric Wong <normalperson@yhbt.net>
5
+ Date: Fri Jan 17 20:13:42 2014 +0000
6
+
7
+ Rainbows! 4.6.0 - fix unicorn 4.8.0 compatibility
8
+
9
+ The unicorn 4.8.0 internal changes unfortunately broke some
10
+ unoffically supported behavior we depended on. This release fixes
11
+ that, but as a result, we lose compatibility of older unicorn
12
+ versions. (Oops!, oh well... :x)
13
+
14
+ There's also minor bugfixes and documentation updates.
15
+
16
+ In order to ease transitions to future versions of the GPL, we are
17
+ now "GPLv2 or later" instead of explicitly GPLv2 + GPLv3(-only).
18
+ The old Ruby 1.8 license remains an option. If the FSF turns out
19
+ a horrible GPLv4, users are free to continue using GPLv2 or GPLv3.
20
+
21
+ commit 169d506907a711254802a8e86cc343c6322dfae3
22
+ Author: Eric Wong <normalperson@yhbt.net>
23
+ Date: Fri Jan 17 20:25:06 2014 +0000
24
+
25
+ switch homepage to http://rainbows.bogomips.org/
26
+
27
+ RubyForge is going away, so we must migrate the homepage.
28
+ The mailing list will be migrated, soon.
29
+
30
+ commit 3e701ee74ff29bdf5daa3249acede5a85a2b0097
31
+ Author: Eric Wong <e@80x24.org>
32
+ Date: Fri Jan 17 02:03:04 2014 +0000
33
+
34
+ unicorn 4.8 compatibility + test version bumps
35
+
36
+ Internal reworking of unicorn 4.8.0 completely broke us(!).
37
+ This commit fixes things, but it means we no longer support
38
+ unicorn <= 4.7. Sorry about that.
39
+
40
+ commit 1b3e68e3eac0c3fbb2a32e4fddd26ee8a50ec627
41
+ Author: Eric Wong <normalperson@yhbt.net>
42
+ Date: Fri Jan 17 01:31:43 2014 +0000
43
+
44
+ error: silence ETIMEDOUT and EHOSTUNREACH errors
45
+
46
+ There's nothing we can do about these errors due to
47
+ network failures and bad clients, either, so do not spew
48
+ a backtrace for them.
49
+
50
+ commit 877f44605ec1768e279843e36c214b656d191011
51
+ Author: Eric Wong <normalperson@yhbt.net>
52
+ Date: Sat Oct 26 08:01:24 2013 +0000
53
+
54
+ license: allow all future versions of the GNU GPL
55
+
56
+ There is currently no GPLv4, so this change has no effect at the
57
+ moment.
58
+
59
+ In case the GPLv4 arrives and I am not alive to approve/review it,
60
+ the lesser of evils is have give blanket approval of all future GPL
61
+ versions (as published by the FSF). The worse evil is to be stuck
62
+ with a license which cannot guarantee the Free-ness of this project
63
+ in the future.
64
+
65
+ This unfortunately means the FSF can theoretically come out with
66
+ license terms I do not agree with, but the GPLv2 and GPLv3 will
67
+ always be an option to all users.
68
+
69
+ commit 008269885bcf1bbf99059d752970969f573d8867
70
+ Author: Eric Wong <normalperson@yhbt.net>
71
+ Date: Mon Sep 30 18:19:49 2013 +0000
72
+
73
+ Rakefile: kill raa_update task
74
+
75
+ RAA is dead.
76
+
77
+ commit af09f23d530dd018bfd074a81d679a6ac815165e
78
+ Author: Lin Jen-Shin <godfat@godfat.org>
79
+ Date: Fri Sep 13 00:41:16 2013 +0800
80
+
81
+ Match against newer curl.
82
+
83
+ My curl 7.32.0 would actually print 400 Bad Request
84
+ Hope this would make it match against newer or older curl.
85
+
86
+ Signed-off-by: Eric Wong <normalperson@yhbt.net>
87
+
88
+ commit d4988043825d1082666b4c219f2d66659b0c350b
89
+ Author: Eric Wong <normalperson@yhbt.net>
90
+ Date: Wed Sep 4 17:09:33 2013 +0000
91
+
92
+ SIGNALS: document SIGHUP/preload_app incompatibility
93
+
94
+ This was documented in the unicorn docs, but not Rainbows!
95
+ (The major difference between unicorn and Rainbows! signal
96
+ handling is the deferred handling of SIGUSR1 in unicorn vs
97
+ the immediate handling in Rainbows!)
98
+
99
+ commit 45261c67658d57f98b51d6bb37890f03b60240a9
100
+ Author: Eric Wong <normalperson@yhbt.net>
101
+ Date: Wed Apr 24 23:08:32 2013 +0000
102
+
103
+ test_isolate: update raindrops to 0.11.0
104
+
105
+ raindrops 0.11.0 was released several days ago and contains
106
+ minor improvements + fixes.
107
+
108
+ commit 2a39832fdbf8054c514562735b1ab6c6544065fe
109
+ Author: Eric Wong <normalperson@yhbt.net>
110
+ Date: Fri Mar 1 23:29:00 2013 +0000
111
+
112
+ epoll+xepoll: clarify intent of these concurrency options
113
+
114
+ Via private communication, I learned of a user using XEpoll
115
+ when he should not have been.
116
+
3
117
  commit 4be3e386118969345ee5c94049efa7faae338e4d
4
118
  Author: Eric Wong <normalperson@yhbt.net>
5
119
  Date: Wed Feb 27 10:25:21 2013 +0000
@@ -155,7 +155,7 @@ RACKUP_FILE, some frameworks do not require them.
155
155
  * [Rack RDoc][2]
156
156
  * [Rackup HowTo][3]
157
157
 
158
- [1]: http://rainbows.rubyforge.org/
158
+ [1]: http://rainbows.bogomips.org/
159
159
  [2]: http://rack.rubyforge.org/doc/
160
160
  [3]: http://wiki.github.com/rack/rack/tutorial-rackup-howto
161
- [4]: http://rainbows.rubyforge.org/SIGNALS.html
161
+ [4]: http://rainbows.bogomips.org/SIGNALS.html
data/GIT-VERSION-FILE CHANGED
@@ -1 +1 @@
1
- GIT_VERSION = 4.5.0
1
+ GIT_VERSION = 4.6.0
data/GIT-VERSION-GEN CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- DEF_VER = "v4.5.0"
2
+ DEF_VER = "v4.6.0"
3
3
  CONSTANT = "Rainbows::Const::RAINBOWS_VERSION"
4
4
  RVF = "lib/rainbows/version.rb"
5
5
  GVF = "GIT-VERSION-FILE"
data/GNUmakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  # use GNU Make to run tests in parallel, and without depending on RubyGems
2
2
  all::
3
- RSYNC_DEST := rubyforge.org:/var/www/gforge-projects/rainbows
3
+ # RSYNC_DEST := rubyforge.org:/var/www/gforge-projects/rainbows
4
+ RSYNC_DEST := rainbows.bogomips.org:/srv/rainbows
4
5
  rfproject := rainbows
5
6
  rfpackage := rainbows
6
7
 
@@ -11,7 +12,6 @@ doc:: man-rdoc
11
12
  include pkg.mk
12
13
  ifneq ($(VERSION),)
13
14
  release::
14
- $(RAKE) raa_update VERSION=$(VERSION)
15
15
  $(RAKE) publish_news VERSION=$(VERSION)
16
16
  $(RAKE) fm_update VERSION=$(VERSION)
17
17
  endif
data/LATEST CHANGED
@@ -1,11 +1,17 @@
1
- === Rainbows! 4.5.0 - hijacking support / 2013-02-27 10:28 UTC
1
+ === Rainbows! 4.6.0 - fix unicorn 4.8.0 compatibility / 2014-01-17 20:25 UTC
2
2
 
3
- This release adds hijacking support for Rack 1.5.x users.
4
- See Rack documentation for more information about hijacking.
5
- Lin Jen-Shin also provided the -N/--no-default-middleware option.
6
- Minor packaging cleanups and new HACKING document.
3
+ The unicorn 4.8.0 internal changes unfortunately broke some
4
+ unoffically supported behavior we depended on. This release fixes
5
+ that, but as a result, we lose compatibility of older unicorn
6
+ versions. (Oops!, oh well... :x)
7
7
 
8
- There are also some corner-case bugfixes for *Epoll* users
9
- (sleepy_penguin, these bugs do not affect EM or Cool.io users)
10
- and test suite portability improvements.
8
+ There's also minor bugfixes and documentation updates.
9
+ The website is now at http://rainbows.bogomips.org/ since
10
+ RubyForge is shutting down. The mailing list will be migrated
11
+ soon.
12
+
13
+ In order to ease transitions to future versions of the GPL, we are
14
+ now "GPLv2 or later" instead of explicitly GPLv2 + GPLv3(-only).
15
+ The old Ruby 1.8 license remains an option. If the FSF turns out
16
+ a horrible GPLv4, users are free to continue using GPLv2 or GPLv3.
11
17
 
data/LICENSE CHANGED
@@ -3,15 +3,17 @@ revision control for names and email addresses of all of them.
3
3
 
4
4
  You can redistribute it and/or modify it under either the terms of the
5
5
  GNU General Public License (GPL) as published by the Free Software
6
- Foundation (FSF), version {3.0}[http://www.gnu.org/licenses/gpl-3.0.txt]
7
- or version {2.0}[http://www.gnu.org/licenses/gpl-2.0.txt]
8
- or the Ruby-specific license terms (see below).
6
+ Foundation (FSF), either version 2 of the License, or (at your option)
7
+ any later version. We currently prefer the GPLv3 or later for
8
+ derivative works, but the GPLv2 is fine.
9
9
 
10
- The \Rainbows! project leader (Eric Wong) reserves the right to add future
11
- versions of the GPL (and no other licenses) as published by the FSF to
12
- the licensing terms.
10
+ The complete texts of the GPLv2 and GPLv3 are below:
11
+ GPLv2 - http://www.gnu.org/licenses/gpl-2.0.txt
12
+ GPLv3 - http://www.gnu.org/licenses/gpl-3.0.txt
13
13
 
14
- === Ruby-specific terms (if you're not using the GPLv2/GPLv3)
14
+ You may (against our _preference_) also use the Ruby 1.8 license terms.
15
+
16
+ === Ruby 1.8-specific terms (if you're not using the GPLv2/GPLv3)
15
17
 
16
18
  1. You may make and give away verbatim copies of the source form of the
17
19
  software without restriction, provided that you duplicate all of the
data/NEWS CHANGED
@@ -1,3 +1,20 @@
1
+ === Rainbows! 4.6.0 - fix unicorn 4.8.0 compatibility / 2014-01-17 20:25 UTC
2
+
3
+ The unicorn 4.8.0 internal changes unfortunately broke some
4
+ unoffically supported behavior we depended on. This release fixes
5
+ that, but as a result, we lose compatibility of older unicorn
6
+ versions. (Oops!, oh well... :x)
7
+
8
+ There's also minor bugfixes and documentation updates.
9
+ The website is now at http://rainbows.bogomips.org/ since
10
+ RubyForge is shutting down. The mailing list will be migrated
11
+ soon.
12
+
13
+ In order to ease transitions to future versions of the GPL, we are
14
+ now "GPLv2 or later" instead of explicitly GPLv2 + GPLv3(-only).
15
+ The old Ruby 1.8 license remains an option. If the FSF turns out
16
+ a horrible GPLv4, users are free to continue using GPLv2 or GPLv3.
17
+
1
18
  === Rainbows! 4.5.0 - hijacking support / 2013-02-27 10:28 UTC
2
19
 
3
20
  This release adds hijacking support for Rack 1.5.x users.
data/README CHANGED
@@ -90,7 +90,7 @@ fast applications.
90
90
  == License
91
91
 
92
92
  \Rainbows! is copyright 2009,2010 by all contributors (see logs in git).
93
- \Rainbows! is licensed under the Ruby (1.8) license or the GPL (v2 or v3).
93
+ \Rainbows! is licensed under the Ruby (1.8) license or the GPLv2 or later.
94
94
  See the included {LICENSE}[link:LICENSE.html] file for more details.
95
95
 
96
96
  \Rainbows! is 100% Free Software.
data/Rakefile CHANGED
@@ -35,43 +35,6 @@ task :publish_news do
35
35
  rf.post_news('rainbows', subject, body)
36
36
  end
37
37
 
38
- desc "post to RAA"
39
- task :raa_update do
40
- require 'net/http'
41
- require 'net/netrc'
42
- rc = Net::Netrc.locate('rainbows-raa') or abort "~/.netrc not found"
43
- password = rc.password
44
-
45
- s = Gem::Specification.load('rainbows.gemspec')
46
- desc = [ s.description.strip ]
47
- desc << ""
48
- desc << "* #{s.email}"
49
- desc << "* #{git_url}"
50
- desc << "* #{cgit_url}"
51
- desc = desc.join("\n")
52
- uri = URI.parse('http://raa.ruby-lang.org/regist.rhtml')
53
- form = {
54
- :name => s.name,
55
- :short_description => s.summary,
56
- :version => s.version.to_s,
57
- :status => 'experimental',
58
- :owner => s.authors.first,
59
- :email => s.email,
60
- :category_major => 'Library',
61
- :category_minor => 'Web',
62
- :url => s.homepage,
63
- :download => "http://rubyforge.org/frs/?group_id=8977",
64
- :license => "Ruby's",
65
- :description_style => 'Plain',
66
- :description => desc,
67
- :pass => password,
68
- :submit => "Update",
69
- }
70
- res = Net::HTTP.post_form(uri, form)
71
- p res
72
- puts res.body
73
- end
74
-
75
38
  desc "post to FM"
76
39
  task :fm_update do
77
40
  require 'net/http'
data/SIGNALS CHANGED
@@ -10,6 +10,16 @@ between \Rainbows!, Unicorn and nginx.
10
10
  === Master Process
11
11
 
12
12
  * HUP - reload config file, app, and gracefully restart all workers
13
+ If the "preload_app" directive is false (the default), then workers
14
+ will also pick up any application code changes when restarted. If
15
+ "preload_app" is true, then application code changes will have no
16
+ effect; USR2 + QUIT (see below) must be used to load newer code in
17
+ this case. When reloading the application, +Gem.refresh+ will
18
+ be called so updated code for your application can pick up newly
19
+ installed RubyGems. It is not recommended that you uninstall
20
+ libraries your application depends on while Rainbows! is running,
21
+ as respawned workers may enter a spawn loop when they fail to
22
+ load an uninstalled dependency.
13
23
 
14
24
  * INT/TERM - quick shutdown, kills all workers immediately
15
25
 
data/lib/rainbows/base.rb CHANGED
@@ -8,24 +8,33 @@
8
8
  module Rainbows::Base
9
9
  # :stopdoc:
10
10
 
11
+ def sig_receiver(worker)
12
+ begin
13
+ worker.to_io.kgio_wait_readable
14
+ worker.kgio_tryaccept # Unicorn::Worker#kgio_tryaccept
15
+ rescue => e
16
+ Rainbows.alive or return
17
+ Unicorn.log_error(Rainbows.server.logger, "signal receiver", e)
18
+ end while true
19
+ end
20
+
11
21
  # this method is called by all current concurrency models
12
22
  def init_worker_process(worker) # :nodoc:
13
- super(worker)
23
+ readers = super(worker)
14
24
  Rainbows::Response.setup
15
25
  Rainbows::MaxBody.setup
16
26
  Rainbows.worker = worker
17
27
 
18
- # we're don't use the self-pipe mechanism in the Rainbows! worker
19
- # since we don't defer reopening logs
20
- Rainbows::HttpServer::SELF_PIPE.each { |x| x.close }.clear
21
-
22
28
  # spawn Threads since Logger takes a mutex by default and
23
29
  # we can't safely lock a mutex in a signal handler
24
30
  trap(:USR1) { Thread.new { reopen_worker_logs(worker.nr) } }
25
31
  trap(:QUIT) { Thread.new { Rainbows.quit! } }
26
32
  [:TERM, :INT].each { |sig| trap(sig) { exit!(0) } } # instant shutdown
27
33
  Rainbows::ProcessClient.const_set(:APP, Rainbows.server.app)
34
+ Thread.new { sig_receiver(worker) }
28
35
  logger.info "Rainbows! #@use worker_connections=#@worker_connections"
36
+ Rainbows.readers = readers # for Rainbows.quit
37
+ readers # unicorn 4.8+ needs this
29
38
  end
30
39
 
31
40
  def process_client(client)
@@ -19,6 +19,8 @@ require 'sendfile'
19
19
  # small enough to always be in your kernel page cache. This concurrency
20
20
  # model may starve clients if you have slow disks and large static files.
21
21
  #
22
+ # Do not use this if you have slow external dependencies.
23
+ #
22
24
  # === RubyGem Requirements
23
25
  #
24
26
  # * raindrops 0.6.0 or later
@@ -25,7 +25,7 @@ module Rainbows::Error
25
25
  def self.response(e)
26
26
  case e
27
27
  when EOFError, Errno::ECONNRESET, Errno::EPIPE, Errno::EINVAL,
28
- Errno::EBADF, Errno::ENOTCONN
28
+ Errno::EBADF, Errno::ENOTCONN, Errno::ETIMEDOUT, Errno::EHOSTUNREACH
29
29
  # swallow error if client shuts down one end or disconnects
30
30
  when Unicorn::HttpParserError
31
31
  Rainbows::Const::ERROR_400_RESPONSE # try to tell the client they're bad
@@ -1 +1 @@
1
- Rainbows::Const::RAINBOWS_VERSION = '4.5.0'
1
+ Rainbows::Const::RAINBOWS_VERSION = '4.6.0'
@@ -7,6 +7,8 @@ require 'rainbows/epoll'
7
7
  # for Ruby 1.9 users as it can avoid accept()-scalability issues on
8
8
  # multicore machines with many worker processes.
9
9
  #
10
+ # Do not use this if you have slow external dependencies.
11
+ #
10
12
  # === RubyGem Requirements
11
13
  #
12
14
  # * raindrops 0.6.0 or later
data/lib/rainbows.rb CHANGED
@@ -4,7 +4,7 @@ require 'unicorn'
4
4
  # the value passed to TCP_DEFER_ACCEPT actually matters in Linux 2.6.32+
5
5
  Unicorn::SocketHelper::DEFAULTS[:tcp_defer_accept] = 60
6
6
 
7
- # See http://rainbows.rubyforge.org/ for documentation
7
+ # See http://rainbows.bogomips.org/ for documentation
8
8
  module Rainbows
9
9
  # :stopdoc:
10
10
  O = {}
@@ -55,6 +55,7 @@ module Rainbows
55
55
  attr_reader :alive
56
56
  attr_writer :worker
57
57
  attr_writer :forked
58
+ attr_writer :readers
58
59
  end
59
60
 
60
61
  def self.config!(mod, *opts)
@@ -88,7 +89,9 @@ module Rainbows
88
89
  @alive = false
89
90
  Rainbows::HttpParser.quit
90
91
  @expire = Time.now + (@server.timeout * 2.0)
91
- Unicorn::HttpServer::LISTENERS.each { |s| s.close rescue nil }.clear
92
+ tmp = @readers.dup
93
+ @readers.clear
94
+ tmp.each { |s| s.close rescue nil }.clear
92
95
  @at_quit.each { |task| task.call }
93
96
  end
94
97
  false
data/rainbows.gemspec CHANGED
@@ -28,8 +28,9 @@ Gem::Specification.new do |s|
28
28
  s.add_dependency(%q<kgio>, ['~> 2.5'])
29
29
 
30
30
  # we need Unicorn for the HTTP parser and process management
31
- # 4.6.0+ supports hijacking, 4.6.2 fixes the chunk parser (for Ruby 2.0.0)
32
- s.add_dependency(%q<unicorn>, ["~> 4.6", ">= 4.6.2"])
31
+ # we need unicorn 4.8.0+ since we depend on undocumented/unsupported
32
+ # unicorn internals.
33
+ s.add_dependency(%q<unicorn>, ["~> 4.8"])
33
34
 
34
35
  s.add_development_dependency(%q<isolate>, "~> 3.1")
35
36
  s.add_development_dependency(%q<wrongdoc>, "~> 1.6")
@@ -57,5 +58,5 @@ Gem::Specification.new do |s|
57
58
 
58
59
  # We inherited the Ruby 1.8 license from Mongrel, so we're stuck with it.
59
60
  # GPLv3 is preferred.
60
- s.licenses = ["GPLv2", "GPLv3", "Ruby 1.8"]
61
+ s.licenses = ["GPLv2+", "Ruby 1.8"]
61
62
  end
@@ -60,7 +60,7 @@ t_begin "smallest HTTP/0.9 request works right" && {
60
60
 
61
61
  t_begin "HTTP/1.1 request fails" && {
62
62
  curl -vsSf http://$listen/ > $tmp 2>&1 && die "unexpected curl success"
63
- grep '400$' $tmp
63
+ grep '400\( Bad Request\)\?$' $tmp
64
64
  }
65
65
 
66
66
  t_begin "increase client_max_header_size on reload" && {
data/t/test_isolate.rb CHANGED
@@ -16,14 +16,14 @@ $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 'kgio', '2.8.0'
19
+ gem 'kgio', '2.8.1'
20
20
  gem 'rack', '1.5.2'
21
21
  gem 'kcar', '0.4.0'
22
- gem 'raindrops', '0.10.0'
23
- gem 'unicorn', '4.6.2'
22
+ gem 'raindrops', '0.12.0'
23
+ gem 'unicorn', '4.8.0'
24
24
 
25
25
  if engine == "ruby"
26
- gem 'sendfile', '1.1.0'
26
+ gem 'sendfile', '1.2.1'
27
27
  gem 'cool.io', '1.1.0'
28
28
 
29
29
  gem 'eventmachine', '1.0.0'
@@ -39,10 +39,10 @@ Isolate.now!(opts) do
39
39
  end
40
40
 
41
41
  if RUBY_PLATFORM =~ /linux/
42
- gem 'sleepy_penguin', '3.1.0'
42
+ gem 'sleepy_penguin', '3.3.0'
43
43
 
44
44
  # is 2.6.32 new enough?
45
- gem 'io_splice', '4.1.1' if `uname -r`.strip > '2.6.32'
45
+ gem 'io_splice', '4.2.0' if `uname -r`.strip > '2.6.32'
46
46
  end
47
47
  end
48
48
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: !binary |-
3
3
  cmFpbmJvd3M=
4
4
  version: !ruby/object:Gem::Version
5
- version: 4.5.0
5
+ version: 4.6.0
6
6
  prerelease:
7
7
  platform: ruby
8
8
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-02-27 00:00:00.000000000 Z
13
+ date: 2014-01-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: !binary |-
@@ -64,12 +64,7 @@ dependencies:
64
64
  fj4=
65
65
  - !ruby/object:Gem::Version
66
66
  version: !binary |-
67
- NC42
68
- - - !binary |-
69
- Pj0=
70
- - !ruby/object:Gem::Version
71
- version: !binary |-
72
- NC42LjI=
67
+ NC44
73
68
  type: :runtime
74
69
  prerelease: false
75
70
  version_requirements: !ruby/object:Gem::Requirement
@@ -79,12 +74,7 @@ dependencies:
79
74
  fj4=
80
75
  - !ruby/object:Gem::Version
81
76
  version: !binary |-
82
- NC42
83
- - - !binary |-
84
- Pj0=
85
- - !ruby/object:Gem::Version
86
- version: !binary |-
87
- NC42LjI=
77
+ NC44
88
78
  - !ruby/object:Gem::Dependency
89
79
  name: !binary |-
90
80
  aXNvbGF0ZQ==
@@ -475,12 +465,10 @@ files:
475
465
  - t/worker-follows-master-to-death.ru
476
466
  - t/write-on-close.ru
477
467
  - vs_Unicorn
478
- homepage: http://rainbows.rubyforge.org/
468
+ homepage: http://rainbows.bogomips.org/
479
469
  licenses:
480
470
  - !binary |-
481
- R1BMdjI=
482
- - !binary |-
483
- R1BMdjM=
471
+ R1BMdjIr
484
472
  - !binary |-
485
473
  UnVieSAxLjg=
486
474
  post_install_message: