sinatra 3.1.0 → 3.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
2
  SHA256:
3
- metadata.gz: 315dee3d85d7778ffa48e041bd60370e9e89ecd3c01dbf0cf9450e41c62dc0d8
4
- data.tar.gz: '083a914c0b520684471e2715ec091c67ca8121bfb8b5d4cf410307d6e14e4ac5'
3
+ metadata.gz: 6eddf8c0c677b8b8b7f15bb03834147034ead41bc6310bf773ac84712bb43a14
4
+ data.tar.gz: c35de3457f199d57a3c8a4419bd0ad113df38ba071cfffbcc79311db910bc1cb
5
5
  SHA512:
6
- metadata.gz: 2790a4d58595f0f89667c5fd4530dde2de532ddaf02628f373162cc47d393732b1c9475ab59775c756750dfb52e60e7091118936ac8e70739fb266b46f82d3bd
7
- data.tar.gz: eb74f34bf0b9a681557809c656754312eb266e66c3b68fcabbf95699c3273cf4d998e3969224b09df9127ff90f5d34fba5bc93b1ff0c321b4a7646ddfcc0b6b7
6
+ metadata.gz: 33e0785425af5a32c7e09d95e2d11e02d83cdda1d907b34197c63642bfec81cd04a40ffc2e25486fe45af66d9a681f57c41d083d7bc56f24b69f1cf4b3a478f6
7
+ data.tar.gz: 6aa65f3b65c819171bcadb61a3a43c3ff7af748d29a9177dbd02549229e3b9fa64b338d0404383b97615e74aa5381dd8a4c997edbf86ca0e8a2970e0213b2ece
data/AUTHORS.md CHANGED
@@ -2,31 +2,37 @@ Sinatra was designed and developed by Blake Mizerany in California.
2
2
 
3
3
  ### Current Team
4
4
 
5
- * **Konstantin Haase** (maintainer)
5
+ * **Eloy Perez**
6
+ * **Jordan Owens**
7
+ * **Olle Jonsson**
8
+ * **Patrik Ragnarsson**
6
9
  * **Zachary Scott**
7
- * **Kashyap Kondamudi**
8
- * **Ashley Williams**
9
- * **Trevor Bramble**
10
- * **Kunpei Sakai**
11
10
 
12
11
  ### Alumni
13
12
 
14
13
  * **Blake Mizerany** (creator)
14
+ * **Konstantin Haase** (maintainer)
15
15
  * **Ryan Tomayko**
16
16
  * **Simon Rozet**
17
17
  * **Katrina Owen**
18
+ * **Kashyap Kondamudi**
19
+ * **Ashley Williams**
20
+ * **Trevor Bramble**
21
+ * **Kunpei Sakai**
18
22
 
19
23
  ### Thanks
20
24
 
21
25
  Sinatra would not have been possible without strong company backing.
22
26
  In the past, financial and emotional support have been provided mainly by
23
- [Heroku](http://heroku.com), [GitHub](https://github.com) and
24
- [Engine Yard](http://www.engineyard.com/), and is now taken care of by
25
- [Travis CI](http://travis-ci.com/).
27
+ [Heroku](https://heroku.com), [GitHub](https://github.com),
28
+ [Engine Yard](http://www.engineyard.com/) and [Travis CI](https://travis-ci.com/),
29
+ and is now taken care of by [84codes](https://www.84codes.com/).
26
30
 
27
31
  Special thanks to the following extraordinary individuals, without whom
28
32
  Sinatra would not be possible:
29
33
 
34
+ * [Benoit Daloze](https://eregon.me/blog/) (eregon) for help around TruffleRuby
35
+ and keyword arguments use in mustermann.
30
36
  * [Ryan Tomayko](http://tomayko.com/) (rtomayko) for constantly fixing
31
37
  whitespace errors __60d5006__
32
38
  * [Ezra Zygmuntowicz](http://brainspl.at/) (ezmobius) for initial help and
data/CHANGELOG.md CHANGED
@@ -2,6 +2,29 @@
2
2
 
3
3
  * _Your new feature here._
4
4
 
5
+ ## 3.2.0 / 2023-12-29
6
+
7
+ * New: Add `#except` method to `Sinatra::IndifferentHash` ([#1940])
8
+
9
+ * New: Use `Exception#detailed_message` to show backtrace ([#1952])
10
+
11
+ * New: Add `Sinatra::HamlHelpers` to sinatra-contrib ([#1960])
12
+
13
+ * Fix: Add `base64` to rack-protection runtime dependencies ([#1946])
14
+
15
+ * Fix: Avoid open-ended dependencies for sinatra-contrib and rack-protection ([#1949])
16
+
17
+ * Fix: Helpful message when `Sinatra::Runner` times out ([#1975])
18
+
19
+ * Fix: Ruby 3.3 + Bundler 2.5 compatibility ([#1975])
20
+
21
+ [#1940]: https://github.com/sinatra/sinatra/pull/1940
22
+ [#1946]: https://github.com/sinatra/sinatra/pull/1946
23
+ [#1949]: https://github.com/sinatra/sinatra/pull/1949
24
+ [#1952]: https://github.com/sinatra/sinatra/pull/1952
25
+ [#1960]: https://github.com/sinatra/sinatra/pull/1960
26
+ [#1975]: https://github.com/sinatra/sinatra/pull/1960
27
+
5
28
  ## 3.1.0 / 2023-08-07
6
29
 
7
30
  * New: Add sass support via sass-embedded [#1911] by なつき
@@ -16,6 +39,7 @@
16
39
 
17
40
  * Fix: rack-protection: specify rack version requirement [#1932] by Patrik Ragnarsson
18
41
 
42
+ [#1911]: https://github.com/sinatra/sinatra/pull/1911
19
43
  [#1913]: https://github.com/sinatra/sinatra/pull/1913
20
44
  [#1900]: https://github.com/sinatra/sinatra/pull/1900
21
45
  [#1924]: https://github.com/sinatra/sinatra/pull/1924
data/Gemfile CHANGED
@@ -24,9 +24,9 @@ puma_version = { github: 'puma/puma' } if puma_version == 'head'
24
24
  gem 'puma', puma_version
25
25
 
26
26
  gem 'minitest', '~> 5.0'
27
- gem 'rack-test', github: 'rack/rack-test'
27
+ gem 'rack-test'
28
28
  gem 'rubocop', '~> 1.32.0', require: false
29
- gem 'yard'
29
+ gem 'yard' # used by rake doc
30
30
 
31
31
  gem 'rack-protection', path: 'rack-protection'
32
32
  gem 'sinatra-contrib', path: 'sinatra-contrib'
@@ -37,10 +37,9 @@ gem 'sinatra-contrib', path: 'sinatra-contrib'
37
37
  # https://github.com/socketry/async-http/pull/124/files#r1237988899
38
38
  gem 'traces', '< 0.10.0' if RUBY_VERSION >= '2.6.0' && RUBY_VERSION < '2.7.0'
39
39
 
40
- gem 'activesupport', '~> 6.1'
41
-
42
40
  gem 'asciidoctor'
43
41
  gem 'builder'
42
+ gem 'childprocess'
44
43
  gem 'commonmarker', '~> 0.23.4', platforms: [:ruby]
45
44
  gem 'erubi'
46
45
  gem 'eventmachine'
@@ -48,19 +47,25 @@ gem 'falcon', '~> 0.40', platforms: [:ruby]
48
47
  gem 'haml', '~> 6'
49
48
  gem 'kramdown'
50
49
  gem 'liquid'
51
- gem 'markaby'
50
+ # markaby 0.9.1 introduced Ruby 2.7 syntax in https://github.com/markaby/markaby/pull/44
51
+ # and does not specify required_ruby_version
52
+ if RUBY_VERSION >= '2.6.0' && RUBY_VERSION < '2.7.0'
53
+ gem 'markaby', '< 0.9.1'
54
+ else
55
+ gem 'markaby'
56
+ end
52
57
  gem 'nokogiri', '> 1.5.0'
53
58
  gem 'pandoc-ruby', '~> 2.0.2'
54
59
  gem 'rabl'
55
- gem 'rainbows', platforms: [:mri] # uses #fork
56
- gem 'rdiscount', platforms: [:ruby]
60
+ if RUBY_ENGINE == 'truffleruby'
61
+ gem 'rdiscount', '< 2.2.7.2' # https://github.com/oracle/truffleruby/issues/3362
62
+ else
63
+ gem 'rdiscount', platforms: [:ruby]
64
+ end
57
65
  gem 'rdoc'
58
66
  gem 'redcarpet', platforms: [:ruby]
59
67
  gem 'sass-embedded', '~> 1.54'
60
68
  gem 'simplecov', require: false
61
69
  gem 'slim', '~> 4'
62
70
  gem 'yajl-ruby', platforms: [:ruby]
63
-
64
- gem 'json', platforms: %i[jruby mri]
65
-
66
- gem 'jar-dependencies', '= 0.4.1', platforms: [:jruby] # Gem::LoadError with jar-dependencies 0.4.2
71
+ gem 'zeitwerk'
data/README.md CHANGED
@@ -846,7 +846,7 @@ It also takes a block for inline templates (see [example](#inline-templates)).
846
846
  <table>
847
847
  <tr>
848
848
  <td>Dependency</td>
849
- <td><a href="http://slim-lang.com/" title="Slim Lang">Slim Lang</a></td>
849
+ <td><a href="https://slim-template.github.io/" title="Slim Lang">Slim Lang</a></td>
850
850
  </tr>
851
851
  <tr>
852
852
  <td>File Extension</td>
@@ -1199,22 +1199,6 @@ $ ruby -e "require 'securerandom'; puts SecureRandom.hex(64)"
1199
1199
  99ae8af...snip...ec0f262ac
1200
1200
  ```
1201
1201
 
1202
- **Session Secret Generation (Bonus Points)**
1203
-
1204
- Use the [sysrandom gem](https://github.com/cryptosphere/sysrandom#readme) to
1205
- use the system RNG facilities to generate random values instead of
1206
- userspace `OpenSSL` which MRI Ruby currently defaults to:
1207
-
1208
- ```text
1209
- $ gem install sysrandom
1210
- Building native extensions. This could take a while...
1211
- Successfully installed sysrandom-1.x
1212
- 1 gem installed
1213
-
1214
- $ ruby -e "require 'sysrandom/securerandom'; puts SecureRandom.hex(64)"
1215
- 99ae8af...snip...ec0f262ac
1216
- ```
1217
-
1218
1202
  **Session Secret Environment Variable**
1219
1203
 
1220
1204
  Set a `SESSION_SECRET` environment variable for Sinatra to the value you
@@ -1229,14 +1213,10 @@ purposes only:
1229
1213
  **Session Secret App Config**
1230
1214
 
1231
1215
  Set up your app config to fail-safe to a secure random secret
1232
- if the `SESSION_SECRET` environment variable is not available.
1233
-
1234
- For bonus points use the [sysrandom
1235
- gem](https://github.com/cryptosphere/sysrandom#readme) here as well:
1216
+ if the `SESSION_SECRET` environment variable is not available:
1236
1217
 
1237
1218
  ```ruby
1238
1219
  require 'securerandom'
1239
- # -or- require 'sysrandom/securerandom'
1240
1220
  set :session_secret, ENV.fetch('SESSION_SECRET') { SecureRandom.hex(64) }
1241
1221
  ```
1242
1222
 
@@ -1441,53 +1421,9 @@ to `stream` finishes executing. Streaming does not work at all with Shotgun.
1441
1421
 
1442
1422
  If the optional parameter is set to `keep_open`, it will not call `close` on
1443
1423
  the stream object, allowing you to close it at any later point in the
1444
- execution flow. This only works on evented servers, like Rainbows.
1445
- Other servers will still close the stream:
1446
-
1447
- ```ruby
1448
- # config.ru
1449
- require 'sinatra/base'
1450
-
1451
- class App < Sinatra::Base
1452
- connections = []
1424
+ execution flow.
1453
1425
 
1454
- get '/subscribe', provides: 'text/event-stream' do
1455
- # register a client's interest in server events
1456
- stream(:keep_open) do |out|
1457
- connections << out
1458
- # purge dead connections
1459
- connections.reject!(&:closed?)
1460
- end
1461
- end
1462
-
1463
- post '/' do
1464
- connections.each do |out|
1465
- # notify client that a new message has arrived
1466
- out << "data: #{params[:msg]}\n\n"
1467
-
1468
- # indicate client to connect again
1469
- out.close
1470
- end
1471
-
1472
- 204 # response without entity body
1473
- end
1474
- end
1475
-
1476
- run App
1477
- ```
1478
-
1479
- ```ruby
1480
- # rainbows.conf
1481
- Rainbows! do
1482
- use :EventMachine
1483
- end
1484
- ````
1485
-
1486
- Run:
1487
-
1488
- ```shell
1489
- rainbows -c rainbows.conf
1490
- ```
1426
+ You can have a look at the [chat example](https://github.com/sinatra/sinatra/blob/main/examples/chat.rb)
1491
1427
 
1492
1428
  It's also possible for the client to close the connection when trying to
1493
1429
  write to the socket. Because of this, it's recommended to check
@@ -2878,39 +2814,7 @@ by Konstantin_
2878
2814
  Sinatra doesn't impose any concurrency model but leaves that to the
2879
2815
  underlying Rack handler (server) like Puma or WEBrick. Sinatra
2880
2816
  itself is thread-safe, so there won't be any problem if the Rack handler
2881
- uses a threaded model of concurrency. This would mean that when starting
2882
- the server, you'd have to specify the correct invocation method for the
2883
- specific Rack handler. The following example is a demonstration of how
2884
- to start a multi-threaded Rainbows server:
2885
-
2886
- ```ruby
2887
- # config.ru
2888
-
2889
- require 'sinatra/base'
2890
-
2891
- class App < Sinatra::Base
2892
- get '/' do
2893
- "Hello, World"
2894
- end
2895
- end
2896
-
2897
- run App
2898
- ```
2899
-
2900
- ```ruby
2901
- # rainbows.conf
2902
-
2903
- # Rainbows configurator is based on Unicorn.
2904
- Rainbows! do
2905
- use :ThreadSpawn
2906
- end
2907
- ```
2908
-
2909
- To start the server, the command would be:
2910
-
2911
- ```shell
2912
- rainbows -c rainbows.conf
2913
- ```
2817
+ uses a threaded model of concurrency.
2914
2818
 
2915
2819
  ## Requirement
2916
2820
 
data/Rakefile CHANGED
@@ -191,7 +191,7 @@ if defined?(Gem)
191
191
  end
192
192
  end
193
193
 
194
- desc 'Commits the version to github repository'
194
+ desc 'Commits the version to git (no push)'
195
195
  task :commit_version do
196
196
  %w[
197
197
  lib/sinatra
@@ -203,10 +203,22 @@ if defined?(Gem)
203
203
  end
204
204
 
205
205
  sh <<-SH
206
- git commit --allow-empty -a -m '#{source_version} release' &&
207
- git tag -s v#{source_version} -m '#{source_version} release' &&
208
- git push && (git push origin || true) &&
209
- git push --tags && (git push origin --tags || true)
206
+ git commit --allow-empty --all --message '#{source_version} release'
207
+ SH
208
+ end
209
+
210
+ desc 'Tags the version in git (no push)'
211
+ task :tag_version do
212
+ sh <<-SH
213
+ git tag --sign v#{source_version} --message '#{source_version} release'
214
+ SH
215
+ end
216
+
217
+ desc 'Watch the release workflow run'
218
+ task :watch do
219
+ sh <<-SH
220
+ runId=$(gh run list --workflow=release.yml --limit 1 --json databaseId --jq '.[].databaseId')
221
+ gh run watch --interval 1 --exit-status $runId
210
222
  SH
211
223
  end
212
224
 
data/SECURITY.md CHANGED
@@ -6,7 +6,7 @@ After the initial reply to your report the security team will endeavor to keep y
6
6
 
7
7
  If you have not received a reply to your email within 48 hours, or have not heard from the security team for the past five days there are a few steps you can take:
8
8
 
9
- * Contact the current security coordinator [Zachary Scott](mailto:zzak@ruby-lang.org) directly
9
+ * Reach out to us on [discord](https://discord.gg/ncjsfsNHh7)
10
10
 
11
11
  ## Disclosure Policy
12
12
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.0
1
+ 3.2.0
data/examples/stream.ru CHANGED
@@ -6,7 +6,6 @@
6
6
  #
7
7
  # unicorn stream.ru # gem install unicorn
8
8
  # puma stream.ru # gem install puma
9
- # rainbows -c rainbows.conf stream.ru # gem install rainbows eventmachine
10
9
 
11
10
  require 'sinatra/base'
12
11
 
data/lib/sinatra/base.rb CHANGED
@@ -209,7 +209,7 @@ module Sinatra
209
209
  end
210
210
  end
211
211
 
212
- # Some Rack handlers (Rainbows!) implement an extended body object protocol, however,
212
+ # Some Rack handlers implement an extended body object protocol, however,
213
213
  # some middleware (namely Rack::Lint) will break it by not mirroring the methods in question.
214
214
  # This middleware will detect an extended body object and will make sure it reaches the
215
215
  # handler directly. We do this here, so our middleware and middleware set up by the app will
@@ -502,8 +502,7 @@ module Sinatra
502
502
  # the response body have not yet been generated.
503
503
  #
504
504
  # The close parameter specifies whether Stream#close should be called
505
- # after the block has been executed. This is only relevant for evented
506
- # servers like Rainbows.
505
+ # after the block has been executed.
507
506
  def stream(keep_open = false)
508
507
  scheduler = env['async.callback'] ? EventMachine : Stream
509
508
  current = @params.dup
@@ -1261,7 +1260,19 @@ module Sinatra
1261
1260
  end
1262
1261
 
1263
1262
  def dump_errors!(boom)
1264
- msg = ["#{Time.now.strftime('%Y-%m-%d %H:%M:%S')} - #{boom.class} - #{boom.message}:", *boom.backtrace].join("\n\t")
1263
+ if boom.respond_to?(:detailed_message)
1264
+ msg = boom.detailed_message(highlight: false)
1265
+ if msg =~ /\A(.*?)(?: \(#{ Regexp.quote(boom.class.to_s) }\))?\n/
1266
+ msg = $1
1267
+ additional_msg = $'.lines(chomp: true)
1268
+ else
1269
+ additional_msg = []
1270
+ end
1271
+ else
1272
+ msg = boom.message
1273
+ additional_msg = []
1274
+ end
1275
+ msg = ["#{Time.now.strftime('%Y-%m-%d %H:%M:%S')} - #{boom.class} - #{msg}:", *additional_msg, *boom.backtrace].join("\n\t")
1265
1276
  @env['rack.errors'].puts(msg)
1266
1277
  end
1267
1278
 
@@ -1270,6 +1281,7 @@ module Sinatra
1270
1281
  %r{/sinatra(/(base|main|show_exceptions))?\.rb$}, # all sinatra code
1271
1282
  %r{lib/tilt.*\.rb$}, # all tilt code
1272
1283
  /^\(.*\)$/, # generated code
1284
+ /\/bundled_gems.rb$/, # ruby >= 3.3 with bundler >= 2.5
1273
1285
  %r{rubygems/(custom|core_ext/kernel)_require\.rb$}, # rubygems require hacks
1274
1286
  /active_support/, # active_support require hacks
1275
1287
  %r{bundler(/(?:runtime|inline))?\.rb}, # bundler require hacks
@@ -1995,7 +2007,7 @@ module Sinatra
1995
2007
  </head>
1996
2008
  <body>
1997
2009
  <h2>Sinatra doesn’t know this ditty.</h2>
1998
- <img src='#{uri '/__sinatra__/404.png'}'>
2010
+ <img src='#{request.script_name}/__sinatra__/404.png'>
1999
2011
  <div id="c">
2000
2012
  Try this:
2001
2013
  <pre>#{Rack::Utils.escape_html(code)}</pre>
@@ -21,7 +21,8 @@ module Sinatra
21
21
  # writing interface (calling e.g. <tt>[]=</tt>, <tt>merge</tt>). This mapping
22
22
  # belongs to the public interface. For example, given:
23
23
  #
24
- # hash = Sinatra::IndifferentHash.new(:a=>1)
24
+ # hash = Sinatra::IndifferentHash.new
25
+ # hash[:a] = 1
25
26
  #
26
27
  # You are guaranteed that the key is returned as a string:
27
28
  #
@@ -29,7 +30,8 @@ module Sinatra
29
30
  #
30
31
  # Technically other types of keys are accepted:
31
32
  #
32
- # hash = Sinatra::IndifferentHash.new(:a=>1)
33
+ # hash = Sinatra::IndifferentHash
34
+ # hash[:a] = 1
33
35
  # hash[0] = 0
34
36
  # hash # => { "a"=>1, 0=>0 }
35
37
  #
@@ -186,6 +188,12 @@ module Sinatra
186
188
  dup.tap(&:compact!)
187
189
  end
188
190
 
191
+ def except(*keys)
192
+ keys.map!(&method(:convert_key))
193
+
194
+ super(*keys)
195
+ end if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.0")
196
+
189
197
  private
190
198
 
191
199
  def convert_key(key)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sinatra
4
- VERSION = '3.1.0'
4
+ VERSION = '3.2.0'
5
5
  end
data/sinatra.gemspec CHANGED
@@ -49,6 +49,4 @@ RubyGems 2.0 or newer is required to protect against public gem pushes. You can
49
49
  s.add_dependency 'rack', '~> 2.2', '>= 2.2.4'
50
50
  s.add_dependency 'rack-protection', version
51
51
  s.add_dependency 'tilt', '~> 2.0'
52
-
53
- s.add_development_dependency 'rack-test', '~> 2'
54
52
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Mizerany
8
8
  - Ryan Tomayko
9
9
  - Simon Rozet
10
10
  - Konstantin Haase
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2023-08-07 00:00:00.000000000 Z
14
+ date: 2023-12-29 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: mustermann
@@ -53,14 +53,14 @@ dependencies:
53
53
  requirements:
54
54
  - - '='
55
55
  - !ruby/object:Gem::Version
56
- version: 3.1.0
56
+ version: 3.2.0
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - '='
62
62
  - !ruby/object:Gem::Version
63
- version: 3.1.0
63
+ version: 3.2.0
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: tilt
66
66
  requirement: !ruby/object:Gem::Requirement
@@ -75,20 +75,6 @@ dependencies:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
77
  version: '2.0'
78
- - !ruby/object:Gem::Dependency
79
- name: rack-test
80
- requirement: !ruby/object:Gem::Requirement
81
- requirements:
82
- - - "~>"
83
- - !ruby/object:Gem::Version
84
- version: '2'
85
- type: :development
86
- prerelease: false
87
- version_requirements: !ruby/object:Gem::Requirement
88
- requirements:
89
- - - "~>"
90
- - !ruby/object:Gem::Version
91
- version: '2'
92
78
  description: Sinatra is a DSL for quickly creating web applications in Ruby with minimal
93
79
  effort.
94
80
  email: sinatrarb@googlegroups.com
@@ -111,8 +97,6 @@ files:
111
97
  - VERSION
112
98
  - examples/chat.rb
113
99
  - examples/lifecycle_events.rb
114
- - examples/rainbows.conf
115
- - examples/rainbows.rb
116
100
  - examples/simple.rb
117
101
  - examples/stream.ru
118
102
  - lib/sinatra.rb
@@ -134,7 +118,7 @@ metadata:
134
118
  bug_tracker_uri: https://github.com/sinatra/sinatra/issues
135
119
  mailing_list_uri: http://groups.google.com/group/sinatrarb
136
120
  documentation_uri: https://www.rubydoc.info/gems/sinatra
137
- post_install_message:
121
+ post_install_message:
138
122
  rdoc_options:
139
123
  - "--line-numbers"
140
124
  - "--title"
@@ -155,8 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
139
  - !ruby/object:Gem::Version
156
140
  version: '0'
157
141
  requirements: []
158
- rubygems_version: 3.4.18
159
- signing_key:
142
+ rubygems_version: 3.5.3
143
+ signing_key:
160
144
  specification_version: 4
161
145
  summary: Classy web-development dressed in a DSL
162
146
  test_files: []
@@ -1,3 +0,0 @@
1
- Rainbows! do
2
- use :EventMachine
3
- end
data/examples/rainbows.rb DELETED
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rainbows'
4
-
5
- module Rack
6
- module Handler
7
- class Rainbows
8
- def self.run(app, **options)
9
- rainbows_options = {
10
- listeners: ["#{options[:Host]}:#{options[:Port]}"],
11
- worker_processes: 1,
12
- timeout: 30,
13
- config_file: ::File.expand_path('rainbows.conf', __dir__)
14
- }
15
-
16
- ::Rainbows::HttpServer.new(app, rainbows_options).start.join
17
- end
18
- end
19
-
20
- register :rainbows, ::Rack::Handler::Rainbows
21
- end
22
- end