redis-namespace 1.8.2 → 1.10.0

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: 0541ad1ce3251b5dc3c035e47aa0690d334d32b9c5b29e335604570cb5847dac
4
- data.tar.gz: '0877ceadbd1afa44a38fd1b7bb7af4b0e9e87a3426f688c891c847853588f65a'
3
+ metadata.gz: 8c4fe7070f484a694ce41f97a0297e03d92cfa67746903d9fb74fa8439410494
4
+ data.tar.gz: 0cbfe04c2ca7b2d42ee603f0d67ba21c13cb938832cc99f89a2323842bb828a3
5
5
  SHA512:
6
- metadata.gz: 9c8cd0be52f98f4fe16b551ac261faba1db4da269a07ac9c85e4a8a4b20347c0a4646036bc5fb64cab3d5863d88b308f15ea96996fd19bfad8bd85980ccf5081
7
- data.tar.gz: 1d6e8e911c9bf887ff00cead444978ecfcccd6f2b04c56549fd28542864e7971ca9f4e5510d2e7473efb91bac50be8ac7d7cd9555fea5ca0da63d8b374d3e793
6
+ metadata.gz: ec085b7e9fba5241cb2e2ad4ccf22d4282001a0ee37731e408a2135ea5e5439747441046cc6c48a2a372afe99f2fb6a67401867a20c8605e41206954eca72078
7
+ data.tar.gz: 0eff5c268bba88cb8bd5e0ab8115a404fed3180e82ebc4297ab8675da6c73e13b3bb943e77ec0392de4460683488589bbc227d95515aa5dc70cdb4236b58801d
data/README.md CHANGED
@@ -33,6 +33,13 @@ redis_connection.get('ns:foo')
33
33
  # => nil
34
34
  ```
35
35
 
36
+ Redis::Namespace also supports `Proc` as a namespace and will take the result string as namespace at runtime.
37
+
38
+ ```ruby
39
+ redis_connection = Redis.new
40
+ namespaced_redis = Redis::Namespace.new(Proc.new { Tenant.current_tenant }, redis: redis_connection)
41
+ ```
42
+
36
43
  Installation
37
44
  ============
38
45
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  class Redis
4
4
  class Namespace
5
- VERSION = '1.8.2'
5
+ VERSION = '1.10.0'
6
6
  end
7
7
  end
@@ -75,6 +75,7 @@ class Redis
75
75
  "eval" => [ :eval_style ],
76
76
  "evalsha" => [ :eval_style ],
77
77
  "get" => [ :first ],
78
+ "getex" => [ :first ],
78
79
  "getbit" => [ :first ],
79
80
  "getrange" => [ :first ],
80
81
  "getset" => [ :first ],
@@ -137,6 +138,7 @@ class Redis
137
138
  "rpush" => [ :first ],
138
139
  "rpushx" => [ :first ],
139
140
  "sadd" => [ :first ],
141
+ "sadd?" => [ :first ],
140
142
  "scard" => [ :first ],
141
143
  "scan" => [ :scan_style, :second ],
142
144
  "scan_each" => [ :scan_style, :all ],
@@ -151,6 +153,7 @@ class Redis
151
153
  "sinterstore" => [ :all ],
152
154
  "sismember" => [ :first ],
153
155
  "smembers" => [ :first ],
156
+ "smismember" => [ :first ],
154
157
  "smove" => [ :exclude_last ],
155
158
  "sort" => [ :sort ],
156
159
  "spop" => [ :first ],
@@ -200,6 +203,7 @@ class Redis
200
203
  HELPER_COMMANDS = {
201
204
  "auth" => [],
202
205
  "disconnect!" => [],
206
+ "close" => [],
203
207
  "echo" => [],
204
208
  "ping" => [],
205
209
  "time" => [],
@@ -236,13 +240,20 @@ class Redis
236
240
  # Support 1.8.7 by providing a namespaced reference to Enumerable::Enumerator
237
241
  Enumerator = Enumerable::Enumerator unless defined?(::Enumerator)
238
242
 
243
+ # This is used by the Redis gem to determine whether or not to display that deprecation message.
244
+ @sadd_returns_boolean = true
245
+
246
+ class << self
247
+ attr_accessor :sadd_returns_boolean
248
+ end
249
+
239
250
  attr_writer :namespace
240
251
  attr_reader :redis
241
252
  attr_accessor :warning
242
253
 
243
254
  def initialize(namespace, options = {})
244
255
  @namespace = namespace
245
- @redis = options[:redis] || Redis.current
256
+ @redis = options[:redis] || Redis.new
246
257
  @warning = !!options.fetch(:warning) do
247
258
  !ENV['REDIS_NAMESPACE_QUIET']
248
259
  end
@@ -261,7 +272,7 @@ class Redis
261
272
  end
262
273
 
263
274
  def client
264
- warn("The client method is deprecated as of redis-rb 4.0.0, please use the new _client" +
275
+ warn("The client method is deprecated as of redis-rb 4.0.0, please use the new _client " +
265
276
  "method instead. Support for the old method will be removed in redis-namespace 2.0.") if @has_new_client_method && deprecations?
266
277
  _client
267
278
  end
@@ -307,7 +318,7 @@ class Redis
307
318
  :redis => @redis)
308
319
  end
309
320
 
310
- @namespace
321
+ @namespace.respond_to?(:call) ? @namespace.call : @namespace
311
322
  end
312
323
 
313
324
  def full_namespace
@@ -315,7 +326,7 @@ class Redis
315
326
  end
316
327
 
317
328
  def connection
318
- @redis.connection.tap { |info| info[:namespace] = @namespace }
329
+ @redis.connection.tap { |info| info[:namespace] = namespace }
319
330
  end
320
331
 
321
332
  def exec
@@ -327,6 +338,32 @@ class Redis
327
338
  end
328
339
  ruby2_keywords(:eval) if respond_to?(:ruby2_keywords, true)
329
340
 
341
+ # This operation can run for a very long time if the namespace contains lots of keys!
342
+ # It should be used in tests, or when the namespace is small enough
343
+ # and you are sure you know what you are doing.
344
+ def clear
345
+ if warning?
346
+ warn("This operation can run for a very long time if the namespace contains lots of keys! " +
347
+ "It should be used in tests, or when the namespace is small enough " +
348
+ "and you are sure you know what you are doing.")
349
+ end
350
+
351
+ batch_size = 1000
352
+
353
+ if supports_scan?
354
+ cursor = "0"
355
+ begin
356
+ cursor, keys = scan(cursor, count: batch_size)
357
+ del(*keys) unless keys.empty?
358
+ end until cursor == "0"
359
+ else
360
+ all_keys = keys("*")
361
+ all_keys.each_slice(batch_size) do |keys|
362
+ del(*keys)
363
+ end
364
+ end
365
+ end
366
+
330
367
  ADMINISTRATIVE_COMMANDS.keys.each do |command|
331
368
  define_method(command) do |*args, &block|
332
369
  raise NoMethodError if deprecations?
@@ -369,7 +406,8 @@ class Redis
369
406
  "passthrough has been deprecated and will be removed in " +
370
407
  "redis-namespace 2.0 (at #{call_site})")
371
408
  end
372
- @redis.send(command, *args, &block)
409
+
410
+ wrapped_send(@redis, command, args, &block)
373
411
  else
374
412
  super
375
413
  end
@@ -430,6 +468,7 @@ class Redis
430
468
  args = add_namespace(args)
431
469
  end
432
470
  when :alternate
471
+ args = args.flatten
433
472
  args.each_with_index { |a, i| args[i] = add_namespace(a) if i.even? }
434
473
  when :sort
435
474
  args[0] = add_namespace(args[0]) if args[0]
@@ -473,7 +512,7 @@ class Redis
473
512
  end
474
513
 
475
514
  # Dispatch the command to Redis and store the result.
476
- result = @redis.send(command, *args, &block)
515
+ result = wrapped_send(@redis, command, args, &block)
477
516
 
478
517
  # Don't try to remove namespace from a Redis::Future, you can't.
479
518
  return result if result.is_a?(Redis::Future)
@@ -510,6 +549,16 @@ class Redis
510
549
  end
511
550
  end
512
551
 
552
+ def wrapped_send(redis_client, command, args = [], &block)
553
+ if redis_client.class.name == "ConnectionPool"
554
+ redis_client.with do |pool_connection|
555
+ pool_connection.send(command, *args, &block)
556
+ end
557
+ else
558
+ redis_client.send(command, *args, &block)
559
+ end
560
+ end
561
+
513
562
  # Avoid modifying the caller's (pass-by-reference) arguments.
514
563
  def clone_args(arg)
515
564
  if arg.is_a?(Array)
@@ -527,18 +576,15 @@ class Redis
527
576
 
528
577
  def namespaced_block(command, &block)
529
578
  if block.arity == 0
530
- redis.send(command, &block)
579
+ wrapped_send(redis, command, &block)
531
580
  else
532
- redis.send(command) do |r|
533
- copy = dup
534
- copy.redis = r
535
- yield copy
536
- end
581
+ outer_block = proc { |r| copy = dup; copy.redis = r; yield copy }
582
+ wrapped_send(redis, command, &outer_block)
537
583
  end
538
584
  end
539
585
 
540
586
  def add_namespace(key)
541
- return key unless key && @namespace
587
+ return key unless key && namespace
542
588
 
543
589
  case key
544
590
  when Array
@@ -547,12 +593,12 @@ class Redis
547
593
  key.keys.each {|k| key[add_namespace(k)] = key.delete(k)}
548
594
  key
549
595
  else
550
- "#{@namespace}:#{key}"
596
+ "#{namespace}:#{key}"
551
597
  end
552
598
  end
553
599
 
554
600
  def rem_namespace(key)
555
- return key unless key && @namespace
601
+ return key unless key && namespace
556
602
 
557
603
  case key
558
604
  when Array
@@ -564,7 +610,7 @@ class Redis
564
610
  key.each { |k| yielder.yield rem_namespace(k) }
565
611
  end
566
612
  else
567
- key.to_s.sub(/\A#{@namespace}:/, '')
613
+ key.to_s.sub(/\A#{namespace}:/, '')
568
614
  end
569
615
  end
570
616
 
@@ -579,5 +625,10 @@ class Redis
579
625
  Enumerator.new(&block)
580
626
  end
581
627
  end
628
+
629
+ def supports_scan?
630
+ redis_version = @redis.info["redis_version"]
631
+ Gem::Version.new(redis_version) >= Gem::Version.new("2.8.0")
632
+ end
582
633
  end
583
634
  end
@@ -31,7 +31,7 @@ describe Redis::Namespace do
31
31
  end
32
32
 
33
33
  before(:each) do
34
- allow(redis).to receive(:unhandled) do |*args|
34
+ allow(redis).to receive(:unhandled) do |*args|
35
35
  "unhandled(#{args.inspect})"
36
36
  end
37
37
  allow(redis).to receive(:flushdb).and_return("OK")
data/spec/redis_spec.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require File.dirname(__FILE__) + '/spec_helper'
4
+ require 'connection_pool'
4
5
 
5
6
  describe "redis" do
6
- @redis_version = Gem::Version.new(Redis.current.info["redis_version"])
7
+ @redis_version = Gem::Version.new(Redis.new.info["redis_version"])
7
8
  let(:redis_client) { @redis.respond_to?(:_client) ? @redis._client : @redis.client}
8
9
 
9
10
  before(:each) do
@@ -41,6 +42,17 @@ describe "redis" do
41
42
  expect(@namespaced.type('counter')).to eq('string')
42
43
  end
43
44
 
45
+ it "should work with Proc namespaces" do
46
+ namespace = Proc.new { :dynamic_ns }
47
+ namespaced = Redis::Namespace.new(namespace, redis: @redis)
48
+
49
+ expect(namespaced.get('foo')).to eq(nil)
50
+ namespaced.set('foo', 'chris')
51
+ expect(namespaced.get('foo')).to eq('chris')
52
+ @redis.set('foo', 'bob')
53
+ expect(@redis.get('foo')).to eq('bob')
54
+ end
55
+
44
56
  context 'when sending capital commands (issue 68)' do
45
57
  it 'should be able to use a namespace' do
46
58
  @namespaced.send('SET', 'fubar', 'quux')
@@ -95,6 +107,13 @@ describe "redis" do
95
107
  expect(@namespaced.lrange('bar',0,-1)).to eq(['bar'])
96
108
  end
97
109
 
110
+ it "should be able to use a namespace with getex" do
111
+ expect(@namespaced.set('mykey', 'Hello')).to eq('OK')
112
+ expect(@namespaced.getex('mykey', ex: 50)).to eq('Hello')
113
+ expect(@namespaced.get('mykey')).to eq('Hello')
114
+ expect(@namespaced.ttl('mykey')).to eq(50)
115
+ end
116
+
98
117
  it 'should be able to use a namespace with getbit' do
99
118
  @namespaced.set('foo','bar')
100
119
  expect(@namespaced.getbit('foo',1)).to eq(1)
@@ -166,19 +185,44 @@ describe "redis" do
166
185
  expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({'foo'=>'1000', 'bar'=>'2000', 'baz' => nil})
167
186
  end
168
187
 
188
+ it "should utilize connection_pool while using a namespace with mget" do
189
+ memo = @namespaced
190
+ connection_pool = ConnectionPool.new(size: 2, timeout: 2) { Redis.new db: 15 }
191
+ @namespaced = Redis::Namespace.new(:ns, redis: connection_pool)
192
+
193
+ expect(connection_pool).to receive(:with).and_call_original do |arg|
194
+ expect(arg).to be(an_instance_of(Redis))
195
+ end.at_least(:once)
196
+
197
+ @namespaced.set('foo', 1000)
198
+ @namespaced.set('bar', 2000)
199
+ expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000' })
200
+ expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({'foo'=>'1000', 'bar'=>'2000', 'baz' => nil})
201
+ @redis.get('foo').should eq('bar')
202
+
203
+ @namespaced = memo
204
+ end
205
+
169
206
  it "should be able to use a namespace with mset" do
170
207
  @namespaced.mset('foo', '1000', 'bar', '2000')
171
208
  expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000' })
172
209
  expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000', 'baz' => nil})
210
+
173
211
  @namespaced.mapped_mset('foo' => '3000', 'bar' => '5000')
174
212
  expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '3000', 'bar' => '5000' })
175
213
  expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '3000', 'bar' => '5000', 'baz' => nil})
214
+
215
+ @namespaced.mset(['foo', '4000'], ['baz', '6000'])
216
+ expect(@namespaced.mapped_mget('foo', 'bar', 'baz')).to eq({ 'foo' => '4000', 'bar' => '5000', 'baz' => '6000' })
176
217
  end
177
218
 
178
219
  it "should be able to use a namespace with msetnx" do
179
220
  @namespaced.msetnx('foo', '1000', 'bar', '2000')
180
221
  expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000' })
181
222
  expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000', 'baz' => nil})
223
+
224
+ @namespaced.msetnx(['baz', '4000'])
225
+ expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000', 'baz' => '4000'})
182
226
  end
183
227
 
184
228
  it "should be able to use a namespace with mapped_msetnx" do
@@ -314,6 +358,11 @@ describe "redis" do
314
358
  expect(values).to match_array(['banana', 'eggplant'])
315
359
  end
316
360
 
361
+ it "should add a new member" do
362
+ expect(@namespaced.sadd?('foo', 1)).to eq(true)
363
+ expect(@namespaced.sadd?('foo', 1)).to eq(false)
364
+ end
365
+
317
366
  it "should add namespace to sort" do
318
367
  @namespaced.sadd('foo', 1)
319
368
  @namespaced.sadd('foo', 2)
@@ -351,6 +400,26 @@ describe "redis" do
351
400
  expect(@namespaced.hgetall("foo")).to eq({"key1" => "value1"})
352
401
  end
353
402
 
403
+ it "should utilize connection_pool while adding namepsace to multi blocks" do
404
+ memo = @namespaced
405
+ connection_pool = ConnectionPool.new(size: 2, timeout: 2) { Redis.new db: 15 }
406
+ @namespaced = Redis::Namespace.new(:ns, redis: connection_pool)
407
+
408
+ expect(connection_pool).to receive(:with).and_call_original do |arg|
409
+ expect(arg).to be(an_instance_of(Redis))
410
+ end.at_least(:once)
411
+
412
+ @namespaced.mapped_hmset "foo", {"key" => "value"}
413
+ @namespaced.multi do |r|
414
+ r.del "foo"
415
+ r.mapped_hmset "foo", {"key1" => "value1"}
416
+ end
417
+ expect(@redis.get("foo")).to eq("bar")
418
+ expect(@namespaced.hgetall("foo")).to eq({"key1" => "value1"})
419
+
420
+ @namespaced = memo
421
+ end
422
+
354
423
  it "should pass through multi commands without block" do
355
424
  @namespaced.mapped_hmset "foo", {"key" => "value"}
356
425
 
@@ -362,6 +431,28 @@ describe "redis" do
362
431
  expect(@namespaced.hgetall("foo")).to eq({"key1" => "value1"})
363
432
  end
364
433
 
434
+ it "should utilize connection_pool while passing through multi commands without block" do
435
+ memo = @namespaced
436
+ connection_pool = ConnectionPool.new(size: 2, timeout: 2) { Redis.new db: 15 }
437
+ @namespaced = Redis::Namespace.new(:ns, redis: connection_pool)
438
+
439
+ expect(connection_pool).to receive(:with).and_call_original do |arg|
440
+ expect(arg).to be(an_instance_of(Redis))
441
+ end.at_least(:once)
442
+
443
+ @namespaced.mapped_hmset "foo", {"key" => "value"}
444
+
445
+ @namespaced.multi
446
+ @namespaced.del "foo"
447
+ @namespaced.mapped_hmset "foo", {"key1" => "value1"}
448
+ @namespaced.exec
449
+
450
+ expect(@namespaced.hgetall("foo")).to eq({"key1" => "value1"})
451
+ expect(@redis.get("foo")).to eq("bar")
452
+
453
+ @namespaced = memo
454
+ end
455
+
365
456
  it 'should return futures without attempting to remove namespaces' do
366
457
  @namespaced.multi do
367
458
  @future = @namespaced.keys('*')
@@ -378,6 +469,26 @@ describe "redis" do
378
469
  expect(@namespaced.hgetall("foo")).to eq({"key1" => "value1"})
379
470
  end
380
471
 
472
+ it "should utilize connection_pool while adding namespace to pipelined blocks" do
473
+ memo = @namespaced
474
+ connection_pool = ConnectionPool.new(size: 2, timeout: 2) { Redis.new db: 15 }
475
+ @namespaced = Redis::Namespace.new(:ns, redis: connection_pool)
476
+
477
+ expect(connection_pool).to receive(:with).and_call_original do |arg|
478
+ expect(arg).to be(an_instance_of(Redis))
479
+ end.at_least(:once)
480
+
481
+ @namespaced.mapped_hmset "foo", {"key" => "value"}
482
+ @namespaced.pipelined do |r|
483
+ r.del "foo"
484
+ r.mapped_hmset "foo", {"key1" => "value1"}
485
+ end
486
+ expect(@namespaced.hgetall("foo")).to eq({"key1" => "value1"})
487
+ expect(@redis.get("foo")).to eq("bar")
488
+
489
+ @namespaced = memo
490
+ end
491
+
381
492
  it "should returned response array from pipelined block" do
382
493
  @namespaced.mset "foo", "bar", "key", "value"
383
494
  result = @namespaced.pipelined do |r|
@@ -687,7 +798,7 @@ describe "redis" do
687
798
  expect(result).to match_array(namespaced_keys)
688
799
  end
689
800
  end
690
- end if Redis.current.respond_to?(:scan)
801
+ end if Redis.new.respond_to?(:scan)
691
802
 
692
803
  context '#scan_each' do
693
804
  context 'when :match supplied' do
@@ -720,7 +831,7 @@ describe "redis" do
720
831
  end
721
832
  end
722
833
  end
723
- end if Redis.current.respond_to?(:scan_each)
834
+ end if Redis.new.respond_to?(:scan_each)
724
835
  end
725
836
 
726
837
  context 'hash scan methods' do
@@ -748,7 +859,7 @@ describe "redis" do
748
859
  expect(results).to match_array(@redis.hgetall('ns:hsh').to_a)
749
860
  end
750
861
  end
751
- end if Redis.current.respond_to?(:hscan)
862
+ end if Redis.new.respond_to?(:hscan)
752
863
 
753
864
  context '#hscan_each' do
754
865
  context 'when :match supplied' do
@@ -781,7 +892,7 @@ describe "redis" do
781
892
  end
782
893
  end
783
894
  end
784
- end if Redis.current.respond_to?(:hscan_each)
895
+ end if Redis.new.respond_to?(:hscan_each)
785
896
  end
786
897
 
787
898
  context 'set scan methods' do
@@ -809,7 +920,7 @@ describe "redis" do
809
920
  expect(results).to match_array(set)
810
921
  end
811
922
  end
812
- end if Redis.current.respond_to?(:sscan)
923
+ end if Redis.new.respond_to?(:sscan)
813
924
 
814
925
  context '#sscan_each' do
815
926
  context 'when :match supplied' do
@@ -842,7 +953,7 @@ describe "redis" do
842
953
  end
843
954
  end
844
955
  end
845
- end if Redis.current.respond_to?(:sscan_each)
956
+ end if Redis.new.respond_to?(:sscan_each)
846
957
  end
847
958
 
848
959
  context 'zset scan methods' do
@@ -872,7 +983,7 @@ describe "redis" do
872
983
  expect(results).to match_array(hash.to_a)
873
984
  end
874
985
  end
875
- end if Redis.current.respond_to?(:zscan)
986
+ end if Redis.new.respond_to?(:zscan)
876
987
 
877
988
  context '#zscan_each' do
878
989
  context 'when :match supplied' do
@@ -905,7 +1016,7 @@ describe "redis" do
905
1016
  end
906
1017
  end
907
1018
  end
908
- end if Redis.current.respond_to?(:zscan_each)
1019
+ end if Redis.new.respond_to?(:zscan_each)
909
1020
  end
910
1021
  end
911
1022
  end
@@ -942,4 +1053,30 @@ describe "redis" do
942
1053
  expect(sub_sub_namespaced.full_namespace).to eql("ns:sub1:sub2")
943
1054
  end
944
1055
  end
1056
+
1057
+ describe :clear do
1058
+ it "warns with helpful output" do
1059
+ expect { @namespaced.clear }.to output(/can run for a very long time/).to_stderr
1060
+ end
1061
+
1062
+ it "should delete all the keys" do
1063
+ @redis.set("foo", "bar")
1064
+ @namespaced.mset("foo1", "bar", "foo2", "bar")
1065
+ capture_stderr { @namespaced.clear }
1066
+
1067
+ expect(@redis.keys).to eq ["foo"]
1068
+ expect(@namespaced.keys).to be_empty
1069
+ end
1070
+
1071
+ it "should delete all the keys in older redis" do
1072
+ allow(@redis).to receive(:info).and_return({ "redis_version" => "2.7.0" })
1073
+
1074
+ @redis.set("foo", "bar")
1075
+ @namespaced.mset("foo1", "bar", "foo2", "bar")
1076
+ capture_stderr { @namespaced.clear }
1077
+
1078
+ expect(@redis.keys).to eq ["foo"]
1079
+ expect(@namespaced.keys).to be_empty
1080
+ end
1081
+ end
945
1082
  end
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-namespace
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.2
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Wanstrath
8
8
  - Terence Lee
9
9
  - Steve Klabnik
10
10
  - Ryan Biesemeyer
11
+ - Mike Bianco
11
12
  autorequire:
12
13
  bindir: bin
13
14
  cert_chain: []
14
- date: 2022-03-07 00:00:00.000000000 Z
15
+ date: 2022-12-20 00:00:00.000000000 Z
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency
17
18
  name: redis
@@ -19,14 +20,14 @@ dependencies:
19
20
  requirements:
20
21
  - - ">="
21
22
  - !ruby/object:Gem::Version
22
- version: 3.0.4
23
+ version: '4'
23
24
  type: :runtime
24
25
  prerelease: false
25
26
  version_requirements: !ruby/object:Gem::Requirement
26
27
  requirements:
27
28
  - - ">="
28
29
  - !ruby/object:Gem::Version
29
- version: 3.0.4
30
+ version: '4'
30
31
  - !ruby/object:Gem::Dependency
31
32
  name: rake
32
33
  requirement: !ruby/object:Gem::Requirement
@@ -69,6 +70,20 @@ dependencies:
69
70
  - - ">="
70
71
  - !ruby/object:Gem::Version
71
72
  version: '0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: connection_pool
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
72
87
  description: |
73
88
  Adds a Redis::Namespace class which can be used to namespace calls
74
89
  to Redis. This is useful when using a single instance of Redis with
@@ -78,6 +93,7 @@ email:
78
93
  - hone02@gmail.com
79
94
  - steve@steveklabnik.com
80
95
  - me@yaauie.com
96
+ - mike@mikebian.co
81
97
  executables: []
82
98
  extensions: []
83
99
  extra_rdoc_files: []
@@ -97,8 +113,8 @@ licenses:
97
113
  metadata:
98
114
  bug_tracker_uri: https://github.com/resque/redis-namespace/issues
99
115
  changelog_uri: https://github.com/resque/redis-namespace/blob/master/CHANGELOG.md
100
- documentation_uri: https://www.rubydoc.info/gems/redis-namespace/1.8.2
101
- source_code_uri: https://github.com/resque/redis-namespace/tree/v1.8.2
116
+ documentation_uri: https://www.rubydoc.info/gems/redis-namespace/1.10.0
117
+ rubygems_mfa_required: 'true'
102
118
  post_install_message:
103
119
  rdoc_options: []
104
120
  require_paths:
@@ -114,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
130
  - !ruby/object:Gem::Version
115
131
  version: '0'
116
132
  requirements: []
117
- rubygems_version: 3.1.2
133
+ rubygems_version: 3.3.15
118
134
  signing_key:
119
135
  specification_version: 4
120
136
  summary: Namespaces Redis commands.