redis 5.0.0.beta3 → 5.0.1

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: a8bcabf5f725061ad3fba18ed42eed7ce26788cf41b78f2091e6033530e124e0
4
- data.tar.gz: 6b22ffde2abc13f944641c17972013cb4084dd91989127d6a3f9232b1b21ec5d
3
+ metadata.gz: 10ad63f47810f1479a1b36fa446a48220570841059a262d803bd837834f25f15
4
+ data.tar.gz: 78bf177db823e73c022d56f1582b2043155ff4ba0171c7e8857114689f34336a
5
5
  SHA512:
6
- metadata.gz: 21141ffa7c06d44599ba93097ec2000abd6325afe2e7175a15f0c0dddfae7b2a120b8acd5f14937f1c58fb971e2fd04603721388a53f6ea42b66031f8b1f9058
7
- data.tar.gz: 1b0996205f973aba8c7db27726eacbe2a03e4339d0444eee80e68958a5226b70349437a518a5f8d0a7b419106e9c9ae546d349dbf7c639ca9a51a721ca96a51c
6
+ metadata.gz: 17705fee83bdf111cc886b96cd499d9244b126b3676d46422964a927cf2bbbbb297cd349a881fb1dc70dc7033e96a50308825e1f6b6ef23b17ba34a3f3288548
7
+ data.tar.gz: 5601c8ac88f83f5b178114985ef0719ff94514e265c85542f1a1269000261608dae3a9c4c63ba90263eb2c48df20f13fdb035fdf83e9e011b0fbba7ea818d774
data/CHANGELOG.md CHANGED
@@ -1,12 +1,18 @@
1
1
  # Unreleased
2
2
 
3
- # 5.0.0.beta3
3
+ # 5.0.1
4
4
 
5
+ - Added a fake `Redis::Connections.drivers` method to be compatible with older sidekiq versions.
6
+
7
+ # 5.0.0
8
+
9
+ - Eagerly and strictly cast Integer and Float parameters.
10
+ - Allow to call `subscribe`, `unsubscribe`, `psubscribe` and `punsubscribe` from a subscribed client. See #1131.
5
11
  - Use `MD5` for hashing server nodes in `Redis::Distributed`. This should improve keys distribution among servers. See #1089.
6
12
  - Changed `sadd` and `srem` to now always return an Integer.
7
13
  - Added `sadd?` and `srem?` which always return a Boolean.
8
14
  - Added support for `IDLE` paramter in `xpending`.
9
- - Cluster support has been moved to a `rediscluster` companion gem.
15
+ - Cluster support has been moved to a `redis-clustering` companion gem.
10
16
  - `select` no longer record the current database. If the client has to reconnect after `select` was used, it will reconnect to the original database.
11
17
  - Better support Float timeout in blocking commands. See #977.
12
18
  - Removed positional timeout in blocking commands (`BLPOP`, etc). Timeout now must be passed as an option: `r.blpop("key", timeout: 2.5)`
@@ -21,6 +27,13 @@
21
27
  - Removed the `synchrony` driver.
22
28
  - Removed `Redis.exists_returns_integer`, it's now always enabled.
23
29
 
30
+ # 4.8.0
31
+
32
+ * Introduce `sadd?` and `srem?` as boolean returning versions of `sadd` and `srem`.
33
+ * Deprecate `sadd` and `srem` returning a boolean when called with a single argument.
34
+ To enable the redis 5.0 behavior you can set `Redis.sadd_returns_boolean = true`.
35
+ * Deprecate passing `timeout` as a positional argument in blocking commands (`brpop`, `blop`, etc).
36
+
24
37
  # 4.7.1
25
38
 
26
39
  * Gracefully handle OpenSSL 3.0 EOF Errors (`OpenSSL::SSL::SSLError: SSL_read: unexpected eof while reading`). See #1106
data/README.md CHANGED
@@ -77,7 +77,7 @@ The client does not provide connection pooling. Each `Redis` instance
77
77
  has one and only one connection to the server, and use of this connection
78
78
  is protected by a mutex.
79
79
 
80
- As such it is heavilly recommended to use the [`connection_pool` gem], e.g.:
80
+ As such it is heavilly recommended to use the [`connection_pool` gem](https://github.com/mperham/connection_pool), e.g.:
81
81
 
82
82
  ```ruby
83
83
  module MyApp
@@ -91,8 +91,6 @@ end
91
91
  MyApp.redis.incr("some-counter")
92
92
  ```
93
93
 
94
- [`connection_pool` gem](https://github.com/mperham/connection_pool)
95
-
96
94
  ## Sentinel support
97
95
 
98
96
  The client is able to perform automatic failover by using [Redis
@@ -157,7 +155,7 @@ end
157
155
  ```
158
156
 
159
157
  Commands must be called on the yielded objects. If you call methods
160
- on the original client objects from inside a pipeline, they willb e sent immediately:
158
+ on the original client objects from inside a pipeline, they will be sent immediately:
161
159
 
162
160
  ```ruby
163
161
  redis.pipelined do |pipeline|
@@ -74,9 +74,9 @@ class Redis
74
74
  private
75
75
 
76
76
  def _geoarguments(*args, options: nil, sort: nil, count: nil)
77
- args.push sort if sort
78
- args.push 'count', count if count
79
- args.push options if options
77
+ args << sort if sort
78
+ args << 'COUNT' << Integer(count) if count
79
+ args << options if options
80
80
  args
81
81
  end
82
82
  end
@@ -174,7 +174,7 @@ class Redis
174
174
  # @param [Integer] increment
175
175
  # @return [Integer] value of the field after incrementing it
176
176
  def hincrby(key, field, increment)
177
- send_command([:hincrby, key, field, increment])
177
+ send_command([:hincrby, key, field, Integer(increment)])
178
178
  end
179
179
 
180
180
  # Increment the numeric value of a hash field by the given float number.
@@ -184,7 +184,7 @@ class Redis
184
184
  # @param [Float] increment
185
185
  # @return [Float] value of the field after incrementing it
186
186
  def hincrbyfloat(key, field, increment)
187
- send_command([:hincrbyfloat, key, field, increment], &Floatify)
187
+ send_command([:hincrbyfloat, key, field, Float(increment)], &Floatify)
188
188
  end
189
189
 
190
190
  # Get all the fields in a hash.
@@ -427,7 +427,7 @@ class Redis
427
427
 
428
428
  args << cursor
429
429
  args << "MATCH" << match if match
430
- args << "COUNT" << count if count
430
+ args << "COUNT" << Integer(count) if count
431
431
  args << "TYPE" << type if type
432
432
 
433
433
  send_command([command] + args, &block)
@@ -99,10 +99,10 @@ class Redis
99
99
  #
100
100
  # @param [String] key
101
101
  # @param [Integer] count number of elements to remove
102
- # @return [String, Array<String>] the values of the first elements
102
+ # @return [nil, String, Array<String>] the values of the first elements
103
103
  def lpop(key, count = nil)
104
104
  command = [:lpop, key]
105
- command << count if count
105
+ command << Integer(count) if count
106
106
  send_command(command)
107
107
  end
108
108
 
@@ -110,10 +110,10 @@ class Redis
110
110
  #
111
111
  # @param [String] key
112
112
  # @param [Integer] count number of elements to remove
113
- # @return [String, Array<String>] the values of the last elements
113
+ # @return [nil, String, Array<String>] the values of the last elements
114
114
  def rpop(key, count = nil)
115
115
  command = [:rpop, key]
116
- command << count if count
116
+ command << Integer(count) if count
117
117
  send_command(command)
118
118
  end
119
119
 
@@ -189,7 +189,7 @@ class Redis
189
189
  # @param [Integer] index
190
190
  # @return [String]
191
191
  def lindex(key, index)
192
- send_command([:lindex, key, index])
192
+ send_command([:lindex, key, Integer(index)])
193
193
  end
194
194
 
195
195
  # Insert an element before or after another element in a list.
@@ -211,7 +211,7 @@ class Redis
211
211
  # @param [Integer] stop stop index
212
212
  # @return [Array<String>]
213
213
  def lrange(key, start, stop)
214
- send_command([:lrange, key, start, stop])
214
+ send_command([:lrange, key, Integer(start), Integer(stop)])
215
215
  end
216
216
 
217
217
  # Remove elements from a list.
@@ -224,7 +224,7 @@ class Redis
224
224
  # @param [String] value
225
225
  # @return [Integer] the number of removed elements
226
226
  def lrem(key, count, value)
227
- send_command([:lrem, key, count, value])
227
+ send_command([:lrem, key, Integer(count), value])
228
228
  end
229
229
 
230
230
  # Set the value of an element in a list by its index.
@@ -234,7 +234,7 @@ class Redis
234
234
  # @param [String] value
235
235
  # @return [String] `OK`
236
236
  def lset(key, index, value)
237
- send_command([:lset, key, index, value])
237
+ send_command([:lset, key, Integer(index), value])
238
238
  end
239
239
 
240
240
  # Trim a list to the specified range.
@@ -244,7 +244,7 @@ class Redis
244
244
  # @param [Integer] stop stop index
245
245
  # @return [String] `OK`
246
246
  def ltrim(key, start, stop)
247
- send_command([:ltrim, key, start, stop])
247
+ send_command([:ltrim, key, Integer(start), Integer(stop)])
248
248
  end
249
249
 
250
250
  private
@@ -14,50 +14,34 @@ class Redis
14
14
 
15
15
  # Listen for messages published to the given channels.
16
16
  def subscribe(*channels, &block)
17
- synchronize do |_client|
18
- _subscription(:subscribe, 0, channels, block)
19
- end
17
+ _subscription(:subscribe, 0, channels, block)
20
18
  end
21
19
 
22
20
  # Listen for messages published to the given channels. Throw a timeout error
23
21
  # if there is no messages for a timeout period.
24
22
  def subscribe_with_timeout(timeout, *channels, &block)
25
- synchronize do |_client|
26
- _subscription(:subscribe_with_timeout, timeout, channels, block)
27
- end
23
+ _subscription(:subscribe_with_timeout, timeout, channels, block)
28
24
  end
29
25
 
30
26
  # Stop listening for messages posted to the given channels.
31
27
  def unsubscribe(*channels)
32
- raise "Can't unsubscribe if not subscribed." unless subscribed?
33
-
34
- synchronize do |_client|
35
- _subscription(:unsubscribe, 0, channels, nil)
36
- end
28
+ _subscription(:unsubscribe, 0, channels, nil)
37
29
  end
38
30
 
39
31
  # Listen for messages published to channels matching the given patterns.
40
32
  def psubscribe(*channels, &block)
41
- synchronize do |_client|
42
- _subscription(:psubscribe, 0, channels, block)
43
- end
33
+ _subscription(:psubscribe, 0, channels, block)
44
34
  end
45
35
 
46
36
  # Listen for messages published to channels matching the given patterns.
47
37
  # Throw a timeout error if there is no messages for a timeout period.
48
38
  def psubscribe_with_timeout(timeout, *channels, &block)
49
- synchronize do |_client|
50
- _subscription(:psubscribe_with_timeout, timeout, channels, block)
51
- end
39
+ _subscription(:psubscribe_with_timeout, timeout, channels, block)
52
40
  end
53
41
 
54
42
  # Stop listening for messages posted to channels matching the given patterns.
55
43
  def punsubscribe(*channels)
56
- raise "Can't unsubscribe if not subscribed." unless subscribed?
57
-
58
- synchronize do |_client|
59
- _subscription(:punsubscribe, 0, channels, nil)
60
- end
44
+ _subscription(:punsubscribe, 0, channels, nil)
61
45
  end
62
46
 
63
47
  # Inspect the state of the Pub/Sub subsystem.
@@ -158,7 +158,7 @@ class Redis
158
158
  # @return [Array<String>, Integer, String] depends on subcommand
159
159
  def slowlog(subcommand, length = nil)
160
160
  args = [:slowlog, subcommand]
161
- args << length if length
161
+ args << Integer(length) if length
162
162
  send_command(args)
163
163
  end
164
164
 
@@ -60,7 +60,7 @@ class Redis
60
60
  if count.nil?
61
61
  send_command([:spop, key])
62
62
  else
63
- send_command([:spop, key, count])
63
+ send_command([:spop, key, Integer(count)])
64
64
  end
65
65
  end
66
66
 
@@ -136,7 +136,9 @@ class Redis
136
136
  # @return [Array<String, Float>] element and score pair if count is not specified
137
137
  # @return [Array<Array<String, Float>>] list of popped elements and scores
138
138
  def zpopmax(key, count = nil)
139
- send_command([:zpopmax, key, count].compact) do |members|
139
+ command = [:zpopmax, key]
140
+ command << Integer(count) if count
141
+ send_command(command) do |members|
140
142
  members = FloatifyPairs.call(members)
141
143
  count.to_i > 1 ? members : members.first
142
144
  end
@@ -157,7 +159,9 @@ class Redis
157
159
  # @return [Array<String, Float>] element and score pair if count is not specified
158
160
  # @return [Array<Array<String, Float>>] list of popped elements and scores
159
161
  def zpopmin(key, count = nil)
160
- send_command([:zpopmin, key, count].compact) do |members|
162
+ command = [:zpopmin, key]
163
+ command << Integer(count) if count
164
+ send_command(command) do |members|
161
165
  members = FloatifyPairs.call(members)
162
166
  count.to_i > 1 ? members : members.first
163
167
  end
@@ -261,7 +265,7 @@ class Redis
261
265
  end
262
266
 
263
267
  args = [:zrandmember, key]
264
- args << count if count
268
+ args << Integer(count) if count
265
269
 
266
270
  if with_scores
267
271
  args << "WITHSCORES"
@@ -313,7 +317,7 @@ class Redis
313
317
 
314
318
  if limit
315
319
  args << "LIMIT"
316
- args.concat(limit)
320
+ args.concat(limit.map { |l| Integer(l) })
317
321
  end
318
322
 
319
323
  if with_scores
@@ -354,7 +358,7 @@ class Redis
354
358
 
355
359
  if limit
356
360
  args << "LIMIT"
357
- args.concat(limit)
361
+ args.concat(limit.map { |l| Integer(l) })
358
362
  end
359
363
 
360
364
  send_command(args)
@@ -372,7 +376,7 @@ class Redis
372
376
  #
373
377
  # @see #zrange
374
378
  def zrevrange(key, start, stop, withscores: false, with_scores: withscores)
375
- args = [:zrevrange, key, start, stop]
379
+ args = [:zrevrange, key, Integer(start), Integer(stop)]
376
380
 
377
381
  if with_scores
378
382
  args << "WITHSCORES"
@@ -466,7 +470,7 @@ class Redis
466
470
 
467
471
  if limit
468
472
  args << "LIMIT"
469
- args.concat(limit)
473
+ args.concat(limit.map { |l| Integer(l) })
470
474
  end
471
475
 
472
476
  send_command(args)
@@ -488,7 +492,7 @@ class Redis
488
492
 
489
493
  if limit
490
494
  args << "LIMIT"
491
- args.concat(limit)
495
+ args.concat(limit.map { |l| Integer(l) })
492
496
  end
493
497
 
494
498
  send_command(args)
@@ -531,7 +535,7 @@ class Redis
531
535
 
532
536
  if limit
533
537
  args << "LIMIT"
534
- args.concat(limit)
538
+ args.concat(limit.map { |l| Integer(l) })
535
539
  end
536
540
 
537
541
  send_command(args, &block)
@@ -561,7 +565,7 @@ class Redis
561
565
 
562
566
  if limit
563
567
  args << "LIMIT"
564
- args.concat(limit)
568
+ args.concat(limit.map { |l| Integer(l) })
565
569
  end
566
570
 
567
571
  send_command(args, &block)
@@ -25,7 +25,7 @@ class Redis
25
25
  # @param [Integer] decrement
26
26
  # @return [Integer] value after decrementing it
27
27
  def decrby(key, decrement)
28
- send_command([:decrby, key, decrement])
28
+ send_command([:decrby, key, Integer(decrement)])
29
29
  end
30
30
 
31
31
  # Increment the integer value of a key by one.
@@ -50,7 +50,7 @@ class Redis
50
50
  # @param [Integer] increment
51
51
  # @return [Integer] value after incrementing it
52
52
  def incrby(key, increment)
53
- send_command([:incrby, key, increment])
53
+ send_command([:incrby, key, Integer(increment)])
54
54
  end
55
55
 
56
56
  # Increment the numeric value of a key by the given float number.
@@ -63,7 +63,7 @@ class Redis
63
63
  # @param [Float] increment
64
64
  # @return [Float] value after incrementing it
65
65
  def incrbyfloat(key, increment)
66
- send_command([:incrbyfloat, key, increment], &Floatify)
66
+ send_command([:incrbyfloat, key, Float(increment)], &Floatify)
67
67
  end
68
68
 
69
69
  # Set the string value of a key.
@@ -82,10 +82,10 @@ class Redis
82
82
  # @return [String, Boolean] `"OK"` or true, false if `:nx => true` or `:xx => true`
83
83
  def set(key, value, ex: nil, px: nil, exat: nil, pxat: nil, nx: nil, xx: nil, keepttl: nil, get: nil)
84
84
  args = [:set, key, value.to_s]
85
- args << "EX" << ex if ex
86
- args << "PX" << px if px
87
- args << "EXAT" << exat if exat
88
- args << "PXAT" << pxat if pxat
85
+ args << "EX" << Integer(ex) if ex
86
+ args << "PX" << Integer(px) if px
87
+ args << "EXAT" << Integer(exat) if exat
88
+ args << "PXAT" << Integer(pxat) if pxat
89
89
  args << "NX" if nx
90
90
  args << "XX" if xx
91
91
  args << "KEEPTTL" if keepttl
@@ -233,7 +233,7 @@ class Redis
233
233
  # @param [String] value
234
234
  # @return [Integer] length of the string after it was modified
235
235
  def setrange(key, offset, value)
236
- send_command([:setrange, key, offset, value.to_s])
236
+ send_command([:setrange, key, Integer(offset), value.to_s])
237
237
  end
238
238
 
239
239
  # Get a substring of the string stored at a key.
@@ -244,7 +244,7 @@ class Redis
244
244
  # the end of the string
245
245
  # @return [Integer] `0` or `1`
246
246
  def getrange(key, start, stop)
247
- send_command([:getrange, key, start, stop])
247
+ send_command([:getrange, key, Integer(start), Integer(stop)])
248
248
  end
249
249
 
250
250
  # Append a value to a key.
@@ -292,10 +292,10 @@ class Redis
292
292
  # @return [String] The value of key, or nil when key does not exist.
293
293
  def getex(key, ex: nil, px: nil, exat: nil, pxat: nil, persist: false)
294
294
  args = [:getex, key]
295
- args << "EX" << ex if ex
296
- args << "PX" << px if px
297
- args << "EXAT" << exat if exat
298
- args << "PXAT" << pxat if pxat
295
+ args << "EX" << Integer(ex) if ex
296
+ args << "PX" << Integer(px) if px
297
+ args << "EXAT" << Integer(exat) if exat
298
+ args << "PXAT" << Integer(pxat) if pxat
299
299
  args << "PERSIST" if persist
300
300
 
301
301
  send_command(args)
@@ -904,7 +904,7 @@ class Redis
904
904
 
905
905
  # Stop listening for messages posted to the given channels.
906
906
  def unsubscribe(*channels)
907
- raise "Can't unsubscribe if not subscribed." unless subscribed?
907
+ raise SubscriptionError, "Can't unsubscribe if not subscribed." unless subscribed?
908
908
 
909
909
  @subscribed_node.unsubscribe(*channels)
910
910
  end
data/lib/redis/errors.rb CHANGED
@@ -52,4 +52,7 @@ class Redis
52
52
  # Raised when client options are invalid.
53
53
  class InvalidClientOptionError < BaseError
54
54
  end
55
+
56
+ class SubscriptionError < BaseError
57
+ end
55
58
  end
@@ -4,10 +4,13 @@ class Redis
4
4
  class SubscribedClient
5
5
  def initialize(client)
6
6
  @client = client
7
+ @write_monitor = Monitor.new
7
8
  end
8
9
 
9
10
  def call_v(command)
10
- @client.call_v(command)
11
+ @write_monitor.synchronize do
12
+ @client.call_v(command)
13
+ end
11
14
  end
12
15
 
13
16
  def subscribe(*channels, &block)
@@ -43,14 +46,16 @@ class Redis
43
46
  def subscription(start, stop, channels, block, timeout = 0)
44
47
  sub = Subscription.new(&block)
45
48
 
46
- @client.call_v([start, *channels])
49
+ call_v([start, *channels])
47
50
  while event = @client.next_event(timeout)
48
51
  if event.is_a?(::RedisClient::CommandError)
49
52
  raise Client::ERROR_MAPPING.fetch(event.class), event.message
50
53
  end
51
54
 
52
55
  type, *rest = event
53
- sub.callbacks[type].call(*rest)
56
+ if callback = sub.callbacks[type]
57
+ callback.call(*rest)
58
+ end
54
59
  break if type == stop && rest.last == 0
55
60
  end
56
61
  # No need to unsubscribe here. The real client closes the connection
@@ -62,10 +67,7 @@ class Redis
62
67
  attr :callbacks
63
68
 
64
69
  def initialize
65
- @callbacks = Hash.new do |hash, key|
66
- hash[key] = ->(*_) {}
67
- end
68
-
70
+ @callbacks = {}
69
71
  yield(self)
70
72
  end
71
73
 
data/lib/redis/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Redis
4
- VERSION = '5.0.0.beta3'
4
+ VERSION = '5.0.1'
5
5
  end
data/lib/redis.rb CHANGED
@@ -22,6 +22,16 @@ class Redis
22
22
  end
23
23
  end
24
24
 
25
+ # soft-deprecated
26
+ # We added this back for older sidekiq releases
27
+ module Connection
28
+ class << self
29
+ def drivers
30
+ [RedisClient.default_driver]
31
+ end
32
+ end
33
+ end
34
+
25
35
  include Commands
26
36
 
27
37
  SERVER_URL_OPTIONS = %i(url host port path).freeze
@@ -165,19 +175,27 @@ class Redis
165
175
  end
166
176
 
167
177
  def _subscription(method, timeout, channels, block)
168
- if @subscription_client
169
- return @subscription_client.call_v([method] + channels)
170
- end
178
+ if block
179
+ if @subscription_client
180
+ raise SubscriptionError, "This client is already subscribed"
181
+ end
171
182
 
172
- begin
173
- @subscription_client = SubscribedClient.new(@client.pubsub)
174
- if timeout > 0
175
- @subscription_client.send(method, timeout, *channels, &block)
176
- else
177
- @subscription_client.send(method, *channels, &block)
183
+ begin
184
+ @subscription_client = SubscribedClient.new(@client.pubsub)
185
+ if timeout > 0
186
+ @subscription_client.send(method, timeout, *channels, &block)
187
+ else
188
+ @subscription_client.send(method, *channels, &block)
189
+ end
190
+ ensure
191
+ @subscription_client = nil
178
192
  end
179
- ensure
180
- @subscription_client = nil
193
+ else
194
+ unless @subscription_client
195
+ raise SubscriptionError, "This client is not subscribed"
196
+ end
197
+
198
+ @subscription_client.call_v([method].concat(channels))
181
199
  end
182
200
  end
183
201
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0.beta3
4
+ version: 5.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ezra Zygmuntowicz
@@ -16,7 +16,7 @@ authors:
16
16
  autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
- date: 2022-08-18 00:00:00.000000000 Z
19
+ date: 2022-08-29 00:00:00.000000000 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: redis-client
@@ -75,9 +75,9 @@ licenses:
75
75
  metadata:
76
76
  bug_tracker_uri: https://github.com/redis/redis-rb/issues
77
77
  changelog_uri: https://github.com/redis/redis-rb/blob/master/CHANGELOG.md
78
- documentation_uri: https://www.rubydoc.info/gems/redis/5.0.0.beta3
78
+ documentation_uri: https://www.rubydoc.info/gems/redis/5.0.1
79
79
  homepage_uri: https://github.com/redis/redis-rb
80
- source_code_uri: https://github.com/redis/redis-rb/tree/v5.0.0.beta3
80
+ source_code_uri: https://github.com/redis/redis-rb/tree/v5.0.1
81
81
  post_install_message:
82
82
  rdoc_options: []
83
83
  require_paths:
@@ -89,9 +89,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
89
89
  version: 2.5.0
90
90
  required_rubygems_version: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - ">"
92
+ - - ">="
93
93
  - !ruby/object:Gem::Version
94
- version: 1.3.1
94
+ version: '0'
95
95
  requirements: []
96
96
  rubygems_version: 3.1.2
97
97
  signing_key: