rainbows 5.1.1 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6e4607c3566fdb21ae23f5a82f632f4cbbdbc43f
4
- data.tar.gz: 9cecf17a6fd35957c43d61b4ec45bca1ccc6332f
2
+ SHA256:
3
+ metadata.gz: c32acc2fd11a17dd204cc22e7d8aedab4c0e14d1b07013d6ee1c0c35d6a2018d
4
+ data.tar.gz: a63584f7b9b1622c292d1dde98d9c70c45a9fce1d5b550fafae42d24c80aff4d
5
5
  SHA512:
6
- metadata.gz: 9b5e8042be5d1ee2400cfdf208a7324be36eba075d7833bd2fee64871245ac1ab20061265df43aeca553c643dd86e375f03f7a8b78bb5fdd2c2b6a1e5077edbc
7
- data.tar.gz: 83ae9288e342e841dd66a3218fcd9925b8fcf4bbd926c4ba3a77dd09127d7d6be5e5769c9c05db7dc9da1759f0bb6e05161eb0ea8ccf0741456ca14fca4b1cf4
6
+ metadata.gz: 8e2b64730662047ddb95b124e4c88816129e0a7fc12e92d38763eb09da69ebdc7baa1a7bf6f9ed9b6c162ab513a77a49a641e6afacb6421ccb15bc4bb6be314f
7
+ data.tar.gz: 9af900df457b11b8e7f35ef423e5814265fd31494c3d7e097567b043acaa7c92ba245f9b87432529e40ddff9f166e6e2fe91d45931570caebf95a28577de9b62
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  cgit_url: https://bogomips.org/rainbows.git
3
- git_url: git://bogomips.org/rainbows.git
3
+ git_url: https://bogomips.org/rainbows.git
4
4
  rdoc_url: https://bogomips.org/rainbows/
5
5
  merge_html:
6
6
  rainbows_1: Documentation/rainbows.1.html
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- DEF_VER = "v5.1.1"
2
+ DEF_VER = "v5.2.0"
3
3
  CONSTANT = "Rainbows::Const::RAINBOWS_VERSION"
4
4
  RVF = "lib/rainbows/version.rb"
5
5
  GVF = "GIT-VERSION-FILE"
data/HACKING CHANGED
@@ -44,12 +44,12 @@ Please Cc: everyone on replies, as not everyone is subscribed.
44
44
 
45
45
  == Building a Gem
46
46
 
47
- In order to build the gem, you must install the following components:
47
+ In order to build the gem, you must install the following components
48
+ for documentation:
48
49
 
49
- * olddoc (RubyGem)
50
50
  * pandoc
51
51
 
52
- You can build the Unicorn gem with the following command:
52
+ You can build the Rainbows! gem with the following command:
53
53
 
54
54
  gmake gem
55
55
 
data/README CHANGED
@@ -1,4 +1,4 @@
1
- = Rainbows! - unicorn for sleepy apps and slow clients
1
+ = Rainbows! - Rack app server for sleepy apps and slow clients
2
2
 
3
3
  \Rainbows! is an HTTP server for sleepy Rack applications. It is based on
4
4
  unicorn, but designed to handle applications that expect long
@@ -51,7 +51,7 @@ network concurrency.
51
51
  * Designed for {Rack}[http://rack.github.io/], the standard for
52
52
  modern Ruby HTTP applications.
53
53
 
54
- * Built on {Unicorn}[https://bogomips.org/unicorn/], inheriting its
54
+ * Built on {unicorn}[https://bogomips.org/unicorn/], inheriting its
55
55
  process/socket management features such as transparent upgrades and
56
56
  Ruby configuration DSL.
57
57
 
@@ -81,7 +81,6 @@ network concurrency.
81
81
  * HTTP server push
82
82
  * Long polling
83
83
  * Reverse AJAX
84
- * real-time upload processing (via {upr}[http://upr.bogomips.org/])
85
84
 
86
85
  \Rainbows! can also be used to service slow clients directly even with
87
86
  fast applications.
@@ -123,7 +122,7 @@ config file:
123
122
 
124
123
  worker_processes 4 # assuming four CPU cores
125
124
  Rainbows! do
126
- use :FiberSpawn
125
+ use :ThreadSpawn
127
126
  worker_connections 100
128
127
  end
129
128
 
@@ -136,23 +135,24 @@ for more details.
136
135
  You can get the latest source via git from the following locations
137
136
  (these versions may not be stable):
138
137
 
139
- git://bogomips.org/rainbows.git
140
- git://repo.or.cz/rainbows.git (mirror)
138
+ https://bogomips.org/rainbows.git
139
+ https://repo.or.cz/rainbows.git (mirror)
141
140
 
142
141
  You may browse the code from the web and download the latest snapshot
143
142
  tarballs here:
144
143
 
145
144
  * https://bogomips.org/rainbows.git
146
- * http://repo.or.cz/w/rainbows.git (gitweb)
145
+ * https://repo.or.cz/rainbows.git (gitweb)
147
146
 
148
147
  Inline patches (from "git format-patch") to the mailing list are
149
148
  preferred because they allow code review and comments in the reply to
150
149
  the patch.
151
150
 
152
151
  We will adhere to mostly the same conventions for patch submissions as
153
- git itself. See the Documentation/SubmittingPatches document
154
- distributed with git on on patch submission guidelines to follow. Just
155
- don't email the git mailing list or maintainer with \Rainbows! patches.
152
+ git itself. See the
153
+ https://80x24.org/mirrors/git.git/tree/Documentation/SubmittingPatches?h=v2.20.1
154
+ document distributed with git on on patch submission guidelines to follow.
155
+ Just don't email the git mailing list or maintainer with \Rainbows! patches.
156
156
 
157
157
  == Disclaimer
158
158
 
@@ -97,7 +97,7 @@ def call(env) # :nodoc:
97
97
 
98
98
  app = pool.shift
99
99
  app.call(env)
100
- ensure
101
- pool << app
100
+ ensure
101
+ pool << app
102
102
  end
103
103
  end
@@ -49,8 +49,8 @@ def reopen_worker_logs(worker_nr)
49
49
  logger.info "worker=#{worker_nr} reopening logs..."
50
50
  Unicorn::Util.reopen_logs
51
51
  logger.info "worker=#{worker_nr} done reopening logs"
52
- rescue
53
- Rainbows.quit! # let the master reopen and refork us
52
+ rescue
53
+ Rainbows.quit! # let the master reopen and refork us
54
54
  end
55
55
  # :startdoc:
56
56
  end
@@ -46,8 +46,8 @@ def Rainbows!(&block)
46
46
  block_given? or raise ArgumentError, "Rainbows! requires a block"
47
47
  @block = true
48
48
  instance_eval(&block)
49
- ensure
50
- @block = false
49
+ ensure
50
+ @block = false
51
51
  end
52
52
 
53
53
  def check! # :nodoc:
@@ -160,8 +160,8 @@ def on_write_complete
160
160
  on_read(''.freeze)
161
161
  end
162
162
  end
163
- rescue => e
164
- handle_error(e)
163
+ rescue => e
164
+ handle_error(e)
165
165
  end
166
166
 
167
167
  def handle_error(e)
@@ -170,8 +170,8 @@ def handle_error(e)
170
170
  @_io.kgio_trywrite(msg) rescue nil
171
171
  end
172
172
  @_write_buffer.clear
173
- ensure
174
- quit
173
+ ensure
174
+ quit
175
175
  end
176
176
 
177
177
  def close_deferred
@@ -16,8 +16,8 @@ def app_call input
16
16
  def response_write(response)
17
17
  return hijacked if @hp.hijacked?
18
18
  ev_write_response(*response, @hp.next?)
19
- rescue => e
20
- handle_error(e)
19
+ rescue => e
20
+ handle_error(e)
21
21
  end
22
22
 
23
23
  # fails-safe application dispatch, we absolutely cannot
@@ -39,8 +39,8 @@ def epoll_once
39
39
  @wr_queue = [] # may contain String, ResponsePipe, and StreamFile objects
40
40
  post_init
41
41
  on_readable
42
- rescue => e
43
- handle_error(e)
42
+ rescue => e
43
+ handle_error(e)
44
44
  end
45
45
 
46
46
  def on_readable
@@ -56,9 +56,9 @@ def on_readable
56
56
  break
57
57
  end until :close == @state
58
58
  close unless closed?
59
- rescue Errno::ECONNRESET
60
- close
61
- rescue IOError
59
+ rescue Errno::ECONNRESET
60
+ close
61
+ rescue IOError
62
62
  end
63
63
 
64
64
  def app_call input # called by on_read()
@@ -146,8 +146,8 @@ def on_deferred_write_complete
146
146
 
147
147
  def handle_error(e)
148
148
  msg = Rainbows::Error.response(e) and kgio_trywrite(msg) rescue nil
149
- ensure
150
- close
149
+ ensure
150
+ close
151
151
  end
152
152
 
153
153
  def write_deferred(obj)
@@ -171,8 +171,8 @@ def on_writable
171
171
  when :deferred
172
172
  return
173
173
  end while true
174
- rescue => e
175
- handle_error(e)
174
+ rescue => e
175
+ handle_error(e)
176
176
  end
177
177
 
178
178
  def write(buf)
@@ -227,9 +227,9 @@ def stream_file(sf) # +sf+ is a Rainbows::StreamFile object
227
227
  else
228
228
  return n # :wait_writable or nil
229
229
  end while true
230
- rescue
231
- sf.close
232
- raise
230
+ rescue
231
+ sf.close
232
+ raise
233
233
  end
234
234
 
235
235
  def defer_file_stream(offset, count, io, body)
@@ -263,8 +263,8 @@ def stream_pipe(pipe)
263
263
  else # nil => EOF
264
264
  return pipe.close # nil
265
265
  end while true
266
- rescue
267
- pipe.close
268
- raise
266
+ rescue
267
+ pipe.close
268
+ raise
269
269
  end
270
270
  end
@@ -14,9 +14,9 @@ def initialize(io, client, body)
14
14
  def epoll_run
15
15
  return close if @client.closed?
16
16
  @client.stream_pipe(self) or @client.on_deferred_write_complete
17
- rescue => e
18
- close
19
- @client.handle_error(e)
17
+ rescue => e
18
+ close
19
+ @client.handle_error(e)
20
20
  end
21
21
 
22
22
  def close
@@ -8,18 +8,18 @@ module Rainbows::Error
8
8
  # the socket is closed at the end of this function
9
9
  def self.write(io, e)
10
10
  msg = response(e) and Kgio.trywrite(io, msg)
11
- rescue
11
+ rescue
12
12
  end
13
13
 
14
14
  def self.app(e)
15
15
  Unicorn.log_error(Rainbows.server.logger, "app error", e)
16
- rescue
16
+ rescue
17
17
  end
18
18
 
19
19
  def self.listen_loop(e)
20
20
  Rainbows.alive or return
21
21
  Unicorn.log_error(Rainbows.server.logger, "listen loop error", e)
22
- rescue
22
+ rescue
23
23
  end
24
24
 
25
25
  def self.response(e)
@@ -43,8 +43,8 @@ def want_more
43
43
 
44
44
  def handle_error(e)
45
45
  msg = Rainbows::Error.response(e) and write(msg)
46
- ensure
47
- quit
46
+ ensure
47
+ quit
48
48
  end
49
49
 
50
50
  # returns whether to enable response chunking for autochunk models
@@ -119,8 +119,8 @@ def on_read(data)
119
119
  want_more
120
120
  end
121
121
  end
122
- rescue => e
123
- handle_error(e)
122
+ rescue => e
123
+ handle_error(e)
124
124
  end
125
125
 
126
126
  def err_413(msg)
@@ -19,8 +19,8 @@ def write_body_file(body, range)
19
19
  else # nil
20
20
  return
21
21
  end while true
22
- ensure
23
- close_if_private(body)
22
+ ensure
23
+ close_if_private(body)
24
24
  end
25
25
  end
26
26
 
@@ -37,8 +37,8 @@ def each
37
37
  buf = readpartial(16384)
38
38
  yield buf
39
39
  yield buf while readpartial(16384, buf)
40
- rescue EOFError
41
- self
40
+ rescue EOFError
41
+ self
42
42
  end
43
43
 
44
44
  def closed?
@@ -71,10 +71,10 @@ def trysetrlimit(resource, want)
71
71
  @logger.warn "#{svc} may monopolize resources dictated by #{resource}" \
72
72
  " and leave none for your app"
73
73
  end
74
- rescue => e
75
- @logger.error e.message
76
- @logger.error "#{resource} needs to be increased to >=#{want} before" \
77
- " starting #{svc}"
74
+ rescue => e
75
+ @logger.error e.message
76
+ @logger.error "#{resource} needs to be increased to >=#{want} before" \
77
+ " starting #{svc}"
78
78
  end
79
79
 
80
80
  def svc
@@ -83,8 +83,8 @@ def process_pipeline(env, hp)
83
83
  write_response(status, headers, body, alive = hp.next?) or return
84
84
  end while alive && pipeline_ready(hp)
85
85
  alive or close
86
- rescue => e
87
- handle_error(e)
86
+ rescue => e
87
+ handle_error(e)
88
88
  end
89
89
 
90
90
  # override this in subclass/module
@@ -91,8 +91,8 @@ def write_response(status, headers, body, alive)
91
91
  body = write_headers(status, headers, alive, body)
92
92
  write_body_each(body) if body
93
93
  body
94
- ensure
95
- body.close if body.respond_to?(:close)
94
+ ensure
95
+ body.close if body.respond_to?(:close)
96
96
  end
97
97
  end
98
98
  include Each
@@ -102,8 +102,8 @@ module Sendfile
102
102
  def write_body_file(body, range)
103
103
  io = body_to_io(body)
104
104
  range ? sendfile(io, range[0], range[1]) : sendfile(io, 0)
105
- ensure
106
- close_if_private(io)
105
+ ensure
106
+ close_if_private(io)
107
107
  end
108
108
  end
109
109
  include Sendfile
@@ -129,8 +129,8 @@ def write_body_file(body, range)
129
129
  # isn't used or available.
130
130
  def write_body_stream(body)
131
131
  COPY_STREAM.copy_stream(io = body_to_io(body), self)
132
- ensure
133
- close_if_private(io)
132
+ ensure
133
+ close_if_private(io)
134
134
  end
135
135
  else # ! COPY_STREAM
136
136
  alias write_body_stream write_body_each
@@ -199,8 +199,8 @@ def write_response_path(status, headers, body, alive)
199
199
  write_body_stream(body) if body
200
200
  end
201
201
  body
202
- ensure
203
- body.close if body.respond_to?(:close)
202
+ ensure
203
+ body.close if body.respond_to?(:close)
204
204
  end
205
205
 
206
206
  module ToPath
@@ -75,8 +75,8 @@ def worker_loop(worker) #:nodoc:
75
75
  end
76
76
 
77
77
  Actor.sleep 1 while Rainbows.tick || nr > 0
78
- rescue Errno::EMFILE
79
- # ignore, let another worker process take it
78
+ rescue Errno::EMFILE
79
+ # ignore, let another worker process take it
80
80
  end
81
81
 
82
82
  def revactorize_listeners #:nodoc:
@@ -26,8 +26,8 @@ def write_body_file(body, range)
26
26
  else # nil
27
27
  return
28
28
  end while true
29
- ensure
30
- close_if_private(body)
29
+ ensure
30
+ close_if_private(body)
31
31
  end
32
32
  end
33
33
 
@@ -34,7 +34,7 @@ def kgio_read(length, dst = "")
34
34
  # ugh, read returned too much
35
35
  @rbuf << tmp[length, tmp.size]
36
36
  dst.replace(tmp[0, length])
37
- rescue EOFError
37
+ rescue EOFError
38
38
  end
39
39
 
40
40
  # just proxy any remaining methods TeeInput may use
@@ -36,17 +36,17 @@ def on_readable
36
36
  return close
37
37
  end while true # we always read until EAGAIN or EOF
38
38
 
39
- rescue => e
40
- case e
41
- when Errno::ECONNRESET
42
- @env['async.callback'].call(@response)
43
- return close
44
- when SystemCallError
45
- else
46
- Unicorn.log_error(@env["rack.logger"], "on_readable", e)
47
- end
48
- @env['async.callback'].call(Rainbows::ReverseProxy::E502)
49
- close
39
+ rescue => e
40
+ case e
41
+ when Errno::ECONNRESET
42
+ @env['async.callback'].call(@response)
43
+ return close
44
+ when SystemCallError
45
+ else
46
+ Unicorn.log_error(@env["rack.logger"], "on_readable", e)
47
+ end
48
+ @env['async.callback'].call(Rainbows::ReverseProxy::E502)
49
+ close
50
50
  end
51
51
  end
52
52
 
@@ -47,9 +47,9 @@ def epoll_run
47
47
  when :wait_writable
48
48
  return @wr_queue.unshift(buf)
49
49
  end while true
50
- rescue => err
51
- @to_io.close
52
- N.decr(0, 1)
50
+ rescue
51
+ @to_io.close
52
+ N.decr(0, 1)
53
53
  end
54
54
 
55
55
  def on_write_complete
@@ -134,11 +134,11 @@ def call(env)
134
134
  @lock.synchronize { @active.delete(Thread.current) }
135
135
  # Thread#raise no longer possible here
136
136
  end
137
- rescue ExecutionExpired
138
- # If we got here, it's because the watchdog thread raised an exception
139
- # here to kill us. The watchdog uses @active.delete_if with a lock,
140
- # so we guaranteed it's
141
- [ 408, { 'Content-Type' => 'text/plain', 'Content-Length' => '0' }, [] ]
137
+ rescue ExecutionExpired
138
+ # If we got here, it's because the watchdog thread raised an exception
139
+ # here to kill us. The watchdog uses @active.delete_if with a lock,
140
+ # so we guaranteed it's
141
+ [ 408, { 'Content-Type' => 'text/plain', 'Content-Length' => '0' }, [] ]
142
142
  end
143
143
 
144
144
  # The watchdog thread is the one that does the job of killing threads
@@ -40,8 +40,8 @@ def epoll_once
40
40
  @wr_queue = [] # may contain String, ResponsePipe, and StreamFile objects
41
41
  post_init
42
42
  EP.set(self, IN) # wake up the main thread
43
- rescue => e
44
- Rainbows::Error.write(self, e)
43
+ rescue => e
44
+ Rainbows::Error.write(self, e)
45
45
  end
46
46
 
47
47
  def on_close
@@ -95,8 +95,8 @@ def close
95
95
 
96
96
  def handle_error(e)
97
97
  super
98
- ensure
99
- closed? or close
98
+ ensure
99
+ closed? or close
100
100
  end
101
101
 
102
102
  def queue!
@@ -114,8 +114,8 @@ def epoll_run(buf)
114
114
  else
115
115
  return close
116
116
  end while true
117
- rescue => e
118
- handle_error(e)
117
+ rescue => e
118
+ handle_error(e)
119
119
  end
120
120
 
121
121
  def run
@@ -84,8 +84,8 @@ def close
84
84
 
85
85
  def handle_error(e)
86
86
  super
87
- ensure
88
- closed? or close
87
+ ensure
88
+ closed? or close
89
89
  end
90
90
 
91
91
  def epoll_run(buf)
@@ -98,8 +98,8 @@ def epoll_run(buf)
98
98
  else
99
99
  return close
100
100
  end while true
101
- rescue => e
102
- handle_error(e)
101
+ rescue => e
102
+ handle_error(e)
103
103
  end
104
104
 
105
105
  def spawn(env, hp)
@@ -1,22 +1,21 @@
1
1
  # -*- encoding: binary -*-
2
- ENV["VERSION"] or abort "VERSION= must be specified"
3
- manifest = File.readlines('.manifest').map! { |x| x.chomp! }
4
- require 'olddoc'
5
- extend Olddoc::Gemspec
6
- name, summary, title = readme_metadata
2
+ manifest = File.exist?('.manifest') ?
3
+ IO.readlines('.manifest').map!(&:chomp!) : `git ls-files`.split("\n")
7
4
 
8
5
  Gem::Specification.new do |s|
9
6
  s.name = %q{rainbows}
10
- s.version = ENV["VERSION"].dup
7
+ s.version = (ENV["VERSION"] || '5.1.1').dup
11
8
 
12
- s.authors = ["#{name} hackers"]
13
- s.description = readme_description
9
+ s.authors = ['Rainbows! hackers']
10
+ s.description = File.read('README').split("\n\n")[1]
14
11
  s.email = %q{rainbows-public@bogomips.org}
15
12
  s.executables = %w(rainbows)
16
- s.extra_rdoc_files = extra_rdoc_files(manifest)
13
+ s.extra_rdoc_files = IO.readlines('.document').map!(&:chomp!).keep_if do |f|
14
+ File.exist?(f)
15
+ end
17
16
  s.files = manifest
18
- s.homepage = Olddoc.config['rdoc_url']
19
- s.summary = summary
17
+ s.homepage = 'https://bogomips.org/rainbows/'
18
+ s.summary = 'Rack app server for sleepy apps and slow clients'
20
19
 
21
20
  # we want a newer Rack for a valid HeaderHash#each
22
21
  s.add_dependency(%q<rack>, ['>= 1.1', '< 3.0'])
@@ -29,7 +28,6 @@
29
28
  s.add_dependency(%q<unicorn>, ["~> 5.1"])
30
29
 
31
30
  s.add_development_dependency(%q<isolate>, "~> 3.1")
32
- s.add_development_dependency(%q<olddoc>, "~> 1.2")
33
31
 
34
32
  # optional runtime dependencies depending on configuration
35
33
  # see t/test_isolate.rb for the exact versions we've tested with
@@ -58,5 +56,14 @@
58
56
  # We cannot automatically switch licenses when Ruby changes their license,
59
57
  # so we remain optionally-licensed under the terms of Ruby 1.8 despite
60
58
  # not having a good way to specify this in an SPDX-compatible way...
61
- s.licenses = ['GPL-2.0+', 'Nonstandard'] # Nonstandard = 'Ruby 1.8'
59
+ ruby_1_8 = 'Nonstandard'
60
+ s.licenses = [ 'GPL-2.0+', ruby_1_8 ]
61
+ s.metadata = {
62
+ 'bug_tracker_uri' => 'https://bogomips.org/rainbows/#label-Contact',
63
+ 'changelog_uri' => 'https://bogomips.org/rainbows/NEWS.html',
64
+ 'documentation_uri' => 'https://bogomips.org/rainbows/',
65
+ 'homepage_uri' => 'https://bogomips.org/rainbows/',
66
+ 'mailing_list_uri' => 'https://bogomips.org/rainbows-public/',
67
+ 'source_code_uri' => 'https://bogomips.org/rainbows.git',
68
+ }
62
69
  end
@@ -31,7 +31,7 @@ begin
31
31
  # when running tests in parallel with gmake. Create a lock file while
32
32
  # we have the port here to ensure that does not happen.
33
33
  lock_path = "#{Dir::tmpdir}/unicorn_test.#{addr}:#{port}.lock"
34
- lock = File.open(lock_path, File::WRONLY|File::CREAT|File::EXCL, 0600)
34
+ File.open(lock_path, File::WRONLY|File::CREAT|File::EXCL, 0600)
35
35
  rescue Errno::EEXIST
36
36
  sock.close rescue nil
37
37
  retry
@@ -45,9 +45,9 @@ def lazy_close(io)
45
45
  [ 200,
46
46
  {
47
47
  "Content-Length" => r.bytesize.to_s,
48
- "rack.hijack" => proc do |io|
49
- io.write(r)
50
- lazy_close(io)
48
+ "rack.hijack" => proc do |sock|
49
+ sock.write(r)
50
+ lazy_close(sock)
51
51
  end
52
52
  },
53
53
  DieIfUsed.new
@@ -18,7 +18,7 @@
18
18
  end while input.read(rand(cap), buf)
19
19
  end
20
20
  when "/each"
21
- input.each { |buf| digest.update(buf) }
21
+ input.each { |chunk| digest.update(chunk) }
22
22
  else
23
23
  if buf = input.read(rand(cap))
24
24
  begin
@@ -16,11 +16,11 @@
16
16
  lock = File.open(__FILE__, "rb")
17
17
  lock.flock(File::LOCK_EX)
18
18
  Isolate.now!(opts) do
19
- gem 'kgio', '2.11.0'
20
- gem 'rack', '2.0.1'
19
+ gem 'kgio', '2.11.2'
20
+ gem 'rack', '2.0.6'
21
21
  gem 'kcar', '0.6.0'
22
- gem 'raindrops', '0.18.0'
23
- gem 'unicorn', '5.3.0'
22
+ gem 'raindrops', '0.19.0'
23
+ gem 'unicorn', '5.4.1'
24
24
 
25
25
  if engine == "ruby"
26
26
  gem 'sendfile', '1.2.2'
@@ -43,7 +43,7 @@
43
43
  end
44
44
 
45
45
  if RUBY_PLATFORM =~ /linux/
46
- gem 'sleepy_penguin', '3.4.1'
46
+ gem 'sleepy_penguin', '3.5.1'
47
47
 
48
48
  # is 2.6.32 new enough?
49
49
  gem 'io_splice', '4.4.0' if `uname -r`.strip > '2.6.32'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rainbows
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.1
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rainbows! hackers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-02 00:00:00.000000000 Z
11
+ date: 2019-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -72,20 +72,6 @@ dependencies:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '3.1'
75
- - !ruby/object:Gem::Dependency
76
- name: olddoc
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '1.2'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '1.2'
89
75
  description: |-
90
76
  \Rainbows! is an HTTP server for sleepy Rack applications. It is based on
91
77
  unicorn, but designed to handle applications that expect long
@@ -436,7 +422,13 @@ homepage: https://bogomips.org/rainbows/
436
422
  licenses:
437
423
  - GPL-2.0+
438
424
  - Nonstandard
439
- metadata: {}
425
+ metadata:
426
+ bug_tracker_uri: https://bogomips.org/rainbows/#label-Contact
427
+ changelog_uri: https://bogomips.org/rainbows/NEWS.html
428
+ documentation_uri: https://bogomips.org/rainbows/
429
+ homepage_uri: https://bogomips.org/rainbows/
430
+ mailing_list_uri: https://bogomips.org/rainbows-public/
431
+ source_code_uri: https://bogomips.org/rainbows.git
440
432
  post_install_message:
441
433
  rdoc_options: []
442
434
  require_paths:
@@ -452,9 +444,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
452
444
  - !ruby/object:Gem::Version
453
445
  version: '0'
454
446
  requirements: []
455
- rubyforge_project:
456
- rubygems_version: 2.6.10
447
+ rubygems_version: 3.0.1
457
448
  signing_key:
458
449
  specification_version: 4
459
- summary: "- unicorn for sleepy apps and slow clients"
450
+ summary: Rack app server for sleepy apps and slow clients
460
451
  test_files: []