ably-rest 1.2.7 → 1.2.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe0effbbdbf06ec156644acbdfa136ca4f71a16596e135e8985adee878a3dbec
4
- data.tar.gz: 6b395025a9a255ef6c9e6f1f73264e08df7af56693a1462298913e1ebbfe95d4
3
+ metadata.gz: c34f77f0e3e6c5f4f7e30cc93ae8d1a53e9e217d7f73adb6fb90d3f099a74452
4
+ data.tar.gz: 4ece3c4eed50aeb3ea1e17095570ff8fc66dba7fd5a7ead9d69aa8b5e58c7afb
5
5
  SHA512:
6
- metadata.gz: 24ecfffacd775f17da1e7579511c3c15b3f87a61ed09b13ac11409cd828fee0f0fbef045e6092892e0aaddc60fdc5e03559712fa6843a68e3f7613a9d1ce6304
7
- data.tar.gz: 75ac997a4ffce74a7bcd47d153663402c97e08db11dcfdf52db5be673cfb5ad35231d80718f613329c2dc0f496071eedba6d5bfae7905ea6a417d44cfbf21fcb
6
+ metadata.gz: 4ae3b30de33e2cf4b21b84a60c6ce5dcce35b97499fcf8c81abadd6998f8288c0d148a922eadba31ca6204eceff7336741970211036c12505e7490e2327a14a3
7
+ data.tar.gz: 7e2e7843df13707d766ad9629062c8e6c862e2d7dbcde25c05478f621bd91ac2386e8f0528bf1cf9109bcb9e4d00689800c1d3b4ce6343d46ba14541b027685b
data/README.md CHANGED
@@ -151,6 +151,8 @@ To see what has changed in recent versions of Bundler, see the [CHANGELOG](CHANG
151
151
 
152
152
  Please note that the bulk of this repo is in fact a submodule of the [Ably Ruby REST & Realtime library](https://github.com/ably/ably-ruby). If you want to issue a PR, it is likely you should be looking in that repo to add features or make contributions.
153
153
 
154
+ The dependencies in [`ably-rest.gemspec`](./ably-rest.gemspec) must be manually kept in sync with those in [`lib/submodules/ably-ruby/ably.gemspec`](./lib/submodules/ably-ruby/ably.gemspec).
155
+
154
156
  1. Fork it
155
157
  2. When pulling to local, make sure to also pull submodules (git submodule init && git submodule update)
156
158
  3. Create your feature branch (`git checkout -b my-new-feature`)
@@ -167,11 +169,12 @@ Please note that the bulk of this repo is in fact a submodule of the [Ably Ruby
167
169
  4. Ensure submodules of this submodule are up to date using `git submodule update`
168
170
  5. Change dir back to root / `ably-ruby-rest`
169
171
  6. Stage changes made at submodule file `git add lib/submodules/ably-ruby`
170
- 7. Commit the change `git commit -m "Version upgrade to v1.2.3"` and push the changes.
171
- 8. Make a PR against `main`. Once the PR is approved, merge it into `main`
172
- 9. Add a tag to the new `main` head commit and push to origin such as `git tag v1.2.3 && git push origin v1.2.3`
173
- 10. Visit [https://github.com/ably/ably-ruby/tags](https://github.com/ably/ably-ruby/tags) and `Add release notes` for the release including links to the changelog entry.
174
- 11. Run `rake release` to publish the gem to [Rubygems](https://rubygems.org/gems/ably-rest)
172
+ 7. Bring dependency versions in [`ably-rest.gemspec`](./ably-rest.gemspec) in line with [`lib/submodules/ably-ruby/ably.gemspec`](./lib/submodules/ably-ruby/ably.gemspec)
173
+ 8. Commit the change `git commit -m "Version upgrade to v1.2.3"` and push the changes.
174
+ 9. Make a PR against `main`. Once the PR is approved, merge it into `main`
175
+ 10. Add a tag to the new `main` head commit and push to origin such as `git tag v1.2.3 && git push origin v1.2.3`
176
+ 11. Visit [https://github.com/ably/ably-ruby/tags](https://github.com/ably/ably-ruby/tags) and `Add release notes` for the release including links to the changelog entry.
177
+ 12. Run `rake release` to publish the gem to [Rubygems](https://rubygems.org/gems/ably-rest)
175
178
 
176
179
  See the [Ably Ruby release process notes](https://github.com/ably/ably-ruby#release-process).
177
180
 
data/ably-rest.gemspec CHANGED
@@ -32,25 +32,22 @@ Gem::Specification.new do |spec|
32
32
  spec.require_paths = ['lib']
33
33
 
34
34
  spec.add_runtime_dependency 'faraday', '~> 2.2'
35
- spec.add_runtime_dependency 'excon', '~> 0.55'
36
35
  spec.add_runtime_dependency 'typhoeus', '~> 1.4'
37
- spec.add_runtime_dependency 'faraday-typhoeus', '~> 0.2.0'
36
+ spec.add_runtime_dependency 'faraday-typhoeus', '~> 1.1.0'
38
37
 
39
38
  spec.add_runtime_dependency 'json'
40
- spec.add_runtime_dependency 'msgpack', '>= 1.5.2', '< 2.0'
39
+ spec.add_runtime_dependency 'msgpack', '>= 1.3.0'
41
40
  spec.add_runtime_dependency 'addressable', '>= 2.0.0'
42
41
 
43
42
  spec.add_development_dependency 'bundler', '>= 1.3.0'
44
- spec.add_development_dependency 'rake', '~> 13.0.6'
43
+ spec.add_development_dependency 'rake', '~> 13.0'
45
44
  spec.add_development_dependency 'redcarpet', '~> 3.3'
46
- spec.add_development_dependency 'rspec', '~> 3.11'
47
- spec.add_development_dependency 'rspec-retry', '~> 0.6.2'
45
+ spec.add_development_dependency 'rspec', '~> 3.11.0'
46
+ spec.add_development_dependency 'rspec-retry', '~> 0.6'
48
47
  spec.add_development_dependency 'yard', '~> 0.9'
49
-
50
- spec.add_development_dependency 'webmock', '~> 3.14.0'
51
- spec.add_development_dependency 'coveralls'
48
+ spec.add_development_dependency 'webmock', '~> 3.11'
52
49
  spec.add_development_dependency 'pry', '~> 0.14.1'
53
- spec.add_development_dependency 'pry-byebug'
50
+ spec.add_development_dependency 'pry-byebug', '~> 3.8.0'
54
51
 
55
52
  if RUBY_VERSION.match(/^3\./)
56
53
  spec.add_development_dependency 'webrick', '~> 1.7.0'
@@ -32,8 +32,9 @@ jobs:
32
32
  run: |
33
33
  mkdir junit
34
34
  bundle exec parallel_rspec --prefix-output-with-test-env-number --first-is-1 -- spec/${{ matrix.type }}
35
- - uses: actions/upload-artifact@v3
35
+ - uses: actions/upload-artifact@v4
36
36
  with:
37
+ name: test-results-ruby-${{ matrix.ruby }}-${{ matrix.protocol }}-${{ matrix.type }}
37
38
  path: |
38
39
  junit/
39
40
  coverage/
@@ -45,7 +46,7 @@ jobs:
45
46
  server-url: 'https://test-observability.herokuapp.com'
46
47
  server-auth: ${{ secrets.TEST_OBSERVABILITY_SERVER_AUTH_KEY }}
47
48
  path: 'junit/'
48
- - uses: coverallsapp/github-action@1.1.3
49
+ - uses: coverallsapp/github-action@v2
49
50
  with:
50
51
  github-token: ${{ secrets.GITHUB_TOKEN }}
51
52
  flag-name: ruby-${{ matrix.ruby }}-${{ matrix.protocol }}-${{ matrix.type }}
@@ -55,7 +56,7 @@ jobs:
55
56
  runs-on: ubuntu-latest
56
57
  steps:
57
58
  - name: Coveralls Finished
58
- uses: coverallsapp/github-action@1.1.3
59
+ uses: coverallsapp/github-action@v2
59
60
  with:
60
61
  github-token: ${{ secrets.github_token }}
61
62
  parallel-finished: true
@@ -1,5 +1,18 @@
1
1
  # Change Log
2
2
 
3
+ ## [v1.2.8](https://github.com/ably/ably-ruby/tree/v1.2.8)
4
+
5
+ [Full Changelog](https://github.com/ably/ably-ruby/compare/v1.2.7...v1.2.8)
6
+
7
+ **Fixed bugs:**
8
+
9
+ * Fix incompatibility with `websocket-driver` 0.8 (#443)
10
+ * Do not use fallback hosts as a result of a token error (#443)
11
+
12
+ **Updated dependencies:**
13
+
14
+ * Bump `faraday-typhoeus` to 1.1.0 (#442)
15
+
3
16
  ## [v1.2.7](https://github.com/ably/ably-ruby/tree/v1.2.7)
4
17
 
5
18
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v1.2.6...v1.2.7)
@@ -1,4 +1,4 @@
1
- # Ably Realtime & REST Client Library 1.2.7 Specification
1
+ # Ably Realtime & REST Client Library 1.2.8 Specification
2
2
 
3
3
  ### Ably::Realtime::Auth
4
4
  _(see [spec/acceptance/realtime/auth_spec.rb](./spec/acceptance/realtime/auth_spec.rb))_
@@ -646,7 +646,7 @@ _(see [spec/acceptance/realtime/connection_failures_spec.rb](./spec/acceptance/r
646
646
  * authentication failure
647
647
  * when API key is invalid
648
648
  * with invalid app part of the key
649
- * [enters the failed state and returns a not found error](./spec/acceptance/realtime/connection_failures_spec.rb#L29)
649
+ * [enters the failed state and returns an invalid credentials error](./spec/acceptance/realtime/connection_failures_spec.rb#L29)
650
650
  * with invalid key name part of the key
651
651
  * [enters the failed state and returns an authorization error](./spec/acceptance/realtime/connection_failures_spec.rb#L44)
652
652
  * with auth_url
@@ -2323,16 +2323,16 @@ _(see [spec/acceptance/rest/base_spec.rb](./spec/acceptance/rest/base_spec.rb))_
2323
2323
  * using JSON protocol
2324
2324
  * failed requests
2325
2325
  * due to invalid Auth
2326
- * [should raise an InvalidRequest exception with a valid error message and code](./spec/acceptance/rest/base_spec.rb#L75)
2326
+ * [should raise an UnauthorizedRequest exception with a valid error message and code](./spec/acceptance/rest/base_spec.rb#L75)
2327
2327
  * server error with JSON error response body
2328
- * [should raise a ServerError exception](./spec/acceptance/rest/base_spec.rb#L96)
2328
+ * [should raise a ServerError exception](./spec/acceptance/rest/base_spec.rb#L95)
2329
2329
  * 500 server error without a valid JSON response body
2330
- * [should raise a ServerError exception](./spec/acceptance/rest/base_spec.rb#L109)
2330
+ * [should raise a ServerError exception](./spec/acceptance/rest/base_spec.rb#L108)
2331
2331
  * token authentication failures
2332
2332
  * when auth#token_renewable?
2333
- * [should automatically reissue a token](./spec/acceptance/rest/base_spec.rb#L147)
2333
+ * [should automatically reissue a token](./spec/acceptance/rest/base_spec.rb#L146)
2334
2334
  * when NOT auth#token_renewable?
2335
- * [should raise an TokenExpired exception](./spec/acceptance/rest/base_spec.rb#L162)
2335
+ * [should raise an TokenExpired exception](./spec/acceptance/rest/base_spec.rb#L161)
2336
2336
 
2337
2337
  ### Ably::Rest::Channel
2338
2338
  _(see [spec/acceptance/rest/channel_spec.rb](./spec/acceptance/rest/channel_spec.rb))_
@@ -3100,7 +3100,7 @@ _(see [spec/acceptance/rest/presence_spec.rb](./spec/acceptance/rest/presence_sp
3100
3100
  * default :limit
3101
3101
  * [defaults to a limit of 100](./spec/acceptance/rest/presence_spec.rb#L86)
3102
3102
  * with :client_id option
3103
- * FAILED: ~~[returns a list members filtered by the provided client ID](./spec/acceptance/rest/presence_spec.rb#L95)~~
3103
+ * [returns a list members filtered by the provided client ID](./spec/acceptance/rest/presence_spec.rb#L95)
3104
3104
  * with :connection_id option
3105
3105
  * [returns a list members filtered by the provided connection ID](./spec/acceptance/rest/presence_spec.rb#L106)
3106
3106
  * [returns a list members filtered by the provided connection ID](./spec/acceptance/rest/presence_spec.rb#L110)
@@ -5075,6 +5075,6 @@ _(see [spec/unit/util/pub_sub_spec.rb](./spec/unit/util/pub_sub_spec.rb))_
5075
5075
 
5076
5076
  ## Test summary
5077
5077
 
5078
- * Passing tests: 2494
5078
+ * Passing tests: 2495
5079
5079
  * Pending tests: 5
5080
- * Failing tests: 1
5080
+ * Failing tests: 0
@@ -22,10 +22,11 @@ Gem::Specification.new do |spec|
22
22
  spec.add_runtime_dependency 'ably-em-http-request', '~> 1.1.8'
23
23
  spec.add_runtime_dependency 'statesman', '~> 9.0'
24
24
  spec.add_runtime_dependency 'faraday', '~> 2.2'
25
- spec.add_runtime_dependency 'faraday-typhoeus', '~> 0.2.0'
25
+ spec.add_runtime_dependency 'faraday-typhoeus', '~> 1.1.0'
26
26
  spec.add_runtime_dependency 'typhoeus', '~> 1.4'
27
27
  spec.add_runtime_dependency 'json'
28
- spec.add_runtime_dependency 'websocket-driver', '~> 0.7'
28
+ # We disallow minor version updates, because this gem has introduced breaking API changes in minor releases before (which it's within its rights to do, given it's pre-v1). If you want to allow a new minor version, bump here and run the tests.
29
+ spec.add_runtime_dependency 'websocket-driver', '~> 0.8.0'
29
30
  spec.add_runtime_dependency 'msgpack', '>= 1.3.0'
30
31
  spec.add_runtime_dependency 'addressable', '>= 2.0.0'
31
32
 
@@ -257,7 +257,7 @@ module Ably::Realtime
257
257
  when :json
258
258
  JSON.parse(data)
259
259
  when :msgpack
260
- MessagePack.unpack(data.pack('C*'))
260
+ MessagePack.unpack(data)
261
261
  else
262
262
  client.logger.fatal { "WebsocketTransport: Unsupported Protocol Message format #{client.protocol}" }
263
263
  data
@@ -690,16 +690,44 @@ module Ably
690
690
  end
691
691
 
692
692
  def use_fallback_if_disconnected?
693
- second_reconnect_attempt_for(:disconnected, 1)
693
+ unless second_reconnect_attempt_for(:disconnected, 1)
694
+ return false
695
+ end
696
+
697
+ does_error_necessitate_fallback(reason_for_last_time_in(:disconnected))
694
698
  end
695
699
 
696
700
  def use_fallback_if_suspended?
697
- second_reconnect_attempt_for(:suspended, 2) # on first suspended state use default Ably host again
701
+ unless second_reconnect_attempt_for(:suspended, 2) # on first suspended state use default Ably host again
702
+ return false
703
+ end
704
+
705
+ does_error_necessitate_fallback(reason_for_last_time_in(:suspended))
698
706
  end
699
707
 
700
708
  def second_reconnect_attempt_for(state, first_attempt_count)
701
709
  previous_state == state && manager.retry_count_for_state(state) >= first_attempt_count
702
710
  end
711
+
712
+ # Provides a partial implementation of RTN17f's logic for whether an error necessitates a fallback host.
713
+ def does_error_necessitate_fallback(error)
714
+ return false unless error
715
+
716
+ # For now we just explicitly exclude token errors. TODO: implement properly in https://github.com/ably/ably-ruby/issues/444
717
+
718
+ if error.respond_to?(:status_code) && error.status_code == 401 && error.respond_to?(:code) && Ably::Exceptions::TOKEN_EXPIRED_CODE.include?(error.code)
719
+ return false
720
+ end
721
+
722
+ true
723
+ end
724
+
725
+ # Returns the error associated with the last state change to the given state (e.g. :disconnected).
726
+ def reason_for_last_time_in(state)
727
+ history_item = state_history.reverse.find do |history_item|
728
+ history_item.fetch(:state) == state
729
+ end.fetch(:metadata).reason
730
+ end
703
731
  end
704
732
  end
705
733
  end
@@ -1,5 +1,5 @@
1
1
  module Ably
2
- VERSION = '1.2.7'
2
+ VERSION = '1.2.8'
3
3
  # The level of compatibility with the Ably service that this SDK supports.
4
4
  # Also referred to as the 'wire protocol version'.
5
5
  # spec : CSV2
@@ -34,7 +34,7 @@ describe Ably::Realtime::Client, :event_machine do
34
34
  client.connection.once(:failed) do
35
35
  expect(custom_logger_object.logs.find do |severity, message|
36
36
  next unless %w(fatal error).include?(severity.to_s)
37
- message.match(%r{https://help.ably.io/error/40400})
37
+ message.match(%r{https://help.ably.io/error/40101})
38
38
  end).to_not be_nil
39
39
  stop_reactor
40
40
  end
@@ -26,13 +26,13 @@ describe Ably::Realtime::Connection, 'failures', :event_machine do
26
26
  context 'with invalid app part of the key' do
27
27
  let(:invalid_key) { 'not_an_app.invalid_key_name:invalid_key_value' }
28
28
 
29
- it 'enters the failed state and returns a not found error' do
29
+ it 'enters the failed state and returns an invalid credentials error' do
30
30
  connection.on(:failed) do |connection_state_change|
31
31
  error = connection_state_change.reason
32
32
  expect(connection.state).to eq(:failed)
33
33
  # TODO: Check error type is an InvalidToken exception
34
- expect(error.status).to eq(404)
35
- expect(error.code).to eq(40400) # not found
34
+ expect(error.status).to eq(401)
35
+ expect(error.code).to eq(40101) # invalid credentials
36
36
  stop_reactor
37
37
  end
38
38
  end
@@ -46,7 +46,7 @@ describe Ably::Realtime::Connection, 'failures', :event_machine do
46
46
  error = connection_state_change.reason
47
47
  expect(connection.state).to eq(:failed)
48
48
  # TODO: Check error type is a TokenNotFound exception
49
- expect(error.status).to eq(401)
49
+ expect(error.status).to eq(404)
50
50
  expect(error.code).to eq(40400) # not found
51
51
  stop_reactor
52
52
  end
@@ -1396,10 +1396,10 @@ describe Ably::Realtime::Connection, 'failures', :event_machine do
1396
1396
  channel = client.channels.get("foo")
1397
1397
  channel.attach do
1398
1398
  connection.once(:failed) do |state_change|
1399
- expect(state_change.reason.code).to eql(40400)
1400
- expect(connection.error_reason.code).to eql(40400)
1399
+ expect(state_change.reason.code).to eql(40101)
1400
+ expect(connection.error_reason.code).to eql(40101)
1401
1401
  expect(channel).to be_failed
1402
- expect(channel.error_reason.code).to eql(40400)
1402
+ expect(channel.error_reason.code).to eql(40101)
1403
1403
  stop_reactor
1404
1404
  end
1405
1405
 
@@ -72,13 +72,12 @@ describe Ably::Rest do
72
72
 
73
73
  describe 'failed requests' do
74
74
  context 'due to invalid Auth' do
75
- it 'should raise an InvalidRequest exception with a valid error message and code' do
75
+ it 'should raise an UnauthorizedRequest exception with a valid error message and code' do
76
76
  invalid_client = Ably::Rest::Client.new(key: 'appid.keyuid:keysecret', environment: environment)
77
77
  expect { invalid_client.channel('test').publish('foo', 'choo') }.to raise_error do |error|
78
- expect(error).to be_a(Ably::Exceptions::ResourceMissing)
79
- expect(error.message).to match(/No application found/)
80
- expect(error.code).to eql(40400)
81
- expect(error.status).to eql(404)
78
+ expect(error).to be_a(Ably::Exceptions::UnauthorizedRequest)
79
+ expect(error.code).to eql(40101)
80
+ expect(error.status).to eql(401)
82
81
  end
83
82
  end
84
83
  end
@@ -33,9 +33,9 @@ describe Ably::Rest::Client do
33
33
  it 'logs an entry with a help href url matching the code #TI5' do
34
34
  begin
35
35
  client.channels.get('foo').publish('test')
36
- raise 'Expected Ably::Exceptions::ResourceMissing'
37
- rescue Ably::Exceptions::ResourceMissing => err
38
- expect err.to_s.match(%r{https://help.ably.io/error/40400})
36
+ raise 'Expected Ably::Exceptions::UnauthorizedRequest'
37
+ rescue Ably::Exceptions::UnauthorizedRequest => err
38
+ expect err.to_s.match(%r{https://help.ably.io/error/40101})
39
39
  end
40
40
  end
41
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ably-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.7
4
+ version: 1.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew O'Riordan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-11 00:00:00.000000000 Z
11
+ date: 2025-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.2'
27
- - !ruby/object:Gem::Dependency
28
- name: excon
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.55'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0.55'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: typhoeus
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +44,14 @@ dependencies:
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: 0.2.0
47
+ version: 1.1.0
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: 0.2.0
54
+ version: 1.1.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: json
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -86,20 +72,14 @@ dependencies:
86
72
  requirements:
87
73
  - - ">="
88
74
  - !ruby/object:Gem::Version
89
- version: 1.5.2
90
- - - "<"
91
- - !ruby/object:Gem::Version
92
- version: '2.0'
75
+ version: 1.3.0
93
76
  type: :runtime
94
77
  prerelease: false
95
78
  version_requirements: !ruby/object:Gem::Requirement
96
79
  requirements:
97
80
  - - ">="
98
81
  - !ruby/object:Gem::Version
99
- version: 1.5.2
100
- - - "<"
101
- - !ruby/object:Gem::Version
102
- version: '2.0'
82
+ version: 1.3.0
103
83
  - !ruby/object:Gem::Dependency
104
84
  name: addressable
105
85
  requirement: !ruby/object:Gem::Requirement
@@ -134,14 +114,14 @@ dependencies:
134
114
  requirements:
135
115
  - - "~>"
136
116
  - !ruby/object:Gem::Version
137
- version: 13.0.6
117
+ version: '13.0'
138
118
  type: :development
139
119
  prerelease: false
140
120
  version_requirements: !ruby/object:Gem::Requirement
141
121
  requirements:
142
122
  - - "~>"
143
123
  - !ruby/object:Gem::Version
144
- version: 13.0.6
124
+ version: '13.0'
145
125
  - !ruby/object:Gem::Dependency
146
126
  name: redcarpet
147
127
  requirement: !ruby/object:Gem::Requirement
@@ -162,28 +142,28 @@ dependencies:
162
142
  requirements:
163
143
  - - "~>"
164
144
  - !ruby/object:Gem::Version
165
- version: '3.11'
145
+ version: 3.11.0
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
149
  requirements:
170
150
  - - "~>"
171
151
  - !ruby/object:Gem::Version
172
- version: '3.11'
152
+ version: 3.11.0
173
153
  - !ruby/object:Gem::Dependency
174
154
  name: rspec-retry
175
155
  requirement: !ruby/object:Gem::Requirement
176
156
  requirements:
177
157
  - - "~>"
178
158
  - !ruby/object:Gem::Version
179
- version: 0.6.2
159
+ version: '0.6'
180
160
  type: :development
181
161
  prerelease: false
182
162
  version_requirements: !ruby/object:Gem::Requirement
183
163
  requirements:
184
164
  - - "~>"
185
165
  - !ruby/object:Gem::Version
186
- version: 0.6.2
166
+ version: '0.6'
187
167
  - !ruby/object:Gem::Dependency
188
168
  name: yard
189
169
  requirement: !ruby/object:Gem::Requirement
@@ -204,28 +184,14 @@ dependencies:
204
184
  requirements:
205
185
  - - "~>"
206
186
  - !ruby/object:Gem::Version
207
- version: 3.14.0
187
+ version: '3.11'
208
188
  type: :development
209
189
  prerelease: false
210
190
  version_requirements: !ruby/object:Gem::Requirement
211
191
  requirements:
212
192
  - - "~>"
213
193
  - !ruby/object:Gem::Version
214
- version: 3.14.0
215
- - !ruby/object:Gem::Dependency
216
- name: coveralls
217
- requirement: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - ">="
220
- - !ruby/object:Gem::Version
221
- version: '0'
222
- type: :development
223
- prerelease: false
224
- version_requirements: !ruby/object:Gem::Requirement
225
- requirements:
226
- - - ">="
227
- - !ruby/object:Gem::Version
228
- version: '0'
194
+ version: '3.11'
229
195
  - !ruby/object:Gem::Dependency
230
196
  name: pry
231
197
  requirement: !ruby/object:Gem::Requirement
@@ -244,16 +210,16 @@ dependencies:
244
210
  name: pry-byebug
245
211
  requirement: !ruby/object:Gem::Requirement
246
212
  requirements:
247
- - - ">="
213
+ - - "~>"
248
214
  - !ruby/object:Gem::Version
249
- version: '0'
215
+ version: 3.8.0
250
216
  type: :development
251
217
  prerelease: false
252
218
  version_requirements: !ruby/object:Gem::Requirement
253
219
  requirements:
254
- - - ">="
220
+ - - "~>"
255
221
  - !ruby/object:Gem::Version
256
- version: '0'
222
+ version: 3.8.0
257
223
  - !ruby/object:Gem::Dependency
258
224
  name: webrick
259
225
  requirement: !ruby/object:Gem::Requirement