redis 5.0.0.beta3 → 5.0.1

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: 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: