redis-namespace 1.8.2 → 1.9.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 +4 -4
- data/README.md +7 -0
- data/lib/redis/namespace/version.rb +1 -1
- data/lib/redis/namespace.rb +11 -8
- data/spec/redis_spec.rb +34 -9
- metadata +10 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88bd88ddb249a9424c8bcc002b84f097a96b4de6450944bc66096e6524115431
|
4
|
+
data.tar.gz: 1b9b4d59744b77a65ec523a77ea438de1f0923494a838c94a8c312893dce1fa6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2007d2f5396aec757c50d77de437dc01630b10de02eaeb852f7858233729476582036cf8214ba6e893f3e26b574c22169530a44bf9fb24c39fa2f2d5958e7ee5
|
7
|
+
data.tar.gz: af47dc4b2ce8357f8751c99ed71d05dc213a75a8092a3d54f016cef36b327967445b915bfaed32565639b0b2c16dbd02ef0026fbabcbf07c8965d3bb42b04f16
|
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
|
|
data/lib/redis/namespace.rb
CHANGED
@@ -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 ],
|
@@ -151,6 +152,7 @@ class Redis
|
|
151
152
|
"sinterstore" => [ :all ],
|
152
153
|
"sismember" => [ :first ],
|
153
154
|
"smembers" => [ :first ],
|
155
|
+
"smismember" => [ :first ],
|
154
156
|
"smove" => [ :exclude_last ],
|
155
157
|
"sort" => [ :sort ],
|
156
158
|
"spop" => [ :first ],
|
@@ -242,7 +244,7 @@ class Redis
|
|
242
244
|
|
243
245
|
def initialize(namespace, options = {})
|
244
246
|
@namespace = namespace
|
245
|
-
@redis = options[:redis] || Redis.
|
247
|
+
@redis = options[:redis] || Redis.new
|
246
248
|
@warning = !!options.fetch(:warning) do
|
247
249
|
!ENV['REDIS_NAMESPACE_QUIET']
|
248
250
|
end
|
@@ -261,7 +263,7 @@ class Redis
|
|
261
263
|
end
|
262
264
|
|
263
265
|
def client
|
264
|
-
warn("The client method is deprecated as of redis-rb 4.0.0, please use the new _client" +
|
266
|
+
warn("The client method is deprecated as of redis-rb 4.0.0, please use the new _client " +
|
265
267
|
"method instead. Support for the old method will be removed in redis-namespace 2.0.") if @has_new_client_method && deprecations?
|
266
268
|
_client
|
267
269
|
end
|
@@ -307,7 +309,7 @@ class Redis
|
|
307
309
|
:redis => @redis)
|
308
310
|
end
|
309
311
|
|
310
|
-
@namespace
|
312
|
+
@namespace.respond_to?(:call) ? @namespace.call : @namespace
|
311
313
|
end
|
312
314
|
|
313
315
|
def full_namespace
|
@@ -315,7 +317,7 @@ class Redis
|
|
315
317
|
end
|
316
318
|
|
317
319
|
def connection
|
318
|
-
@redis.connection.tap { |info| info[:namespace] =
|
320
|
+
@redis.connection.tap { |info| info[:namespace] = namespace }
|
319
321
|
end
|
320
322
|
|
321
323
|
def exec
|
@@ -430,6 +432,7 @@ class Redis
|
|
430
432
|
args = add_namespace(args)
|
431
433
|
end
|
432
434
|
when :alternate
|
435
|
+
args = args.flatten
|
433
436
|
args.each_with_index { |a, i| args[i] = add_namespace(a) if i.even? }
|
434
437
|
when :sort
|
435
438
|
args[0] = add_namespace(args[0]) if args[0]
|
@@ -538,7 +541,7 @@ class Redis
|
|
538
541
|
end
|
539
542
|
|
540
543
|
def add_namespace(key)
|
541
|
-
return key unless key &&
|
544
|
+
return key unless key && namespace
|
542
545
|
|
543
546
|
case key
|
544
547
|
when Array
|
@@ -547,12 +550,12 @@ class Redis
|
|
547
550
|
key.keys.each {|k| key[add_namespace(k)] = key.delete(k)}
|
548
551
|
key
|
549
552
|
else
|
550
|
-
"#{
|
553
|
+
"#{namespace}:#{key}"
|
551
554
|
end
|
552
555
|
end
|
553
556
|
|
554
557
|
def rem_namespace(key)
|
555
|
-
return key unless key &&
|
558
|
+
return key unless key && namespace
|
556
559
|
|
557
560
|
case key
|
558
561
|
when Array
|
@@ -564,7 +567,7 @@ class Redis
|
|
564
567
|
key.each { |k| yielder.yield rem_namespace(k) }
|
565
568
|
end
|
566
569
|
else
|
567
|
-
key.to_s.sub(/\A#{
|
570
|
+
key.to_s.sub(/\A#{namespace}:/, '')
|
568
571
|
end
|
569
572
|
end
|
570
573
|
|
data/spec/redis_spec.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
require File.dirname(__FILE__) + '/spec_helper'
|
4
4
|
|
5
5
|
describe "redis" do
|
6
|
-
@redis_version = Gem::Version.new(Redis.
|
6
|
+
@redis_version = Gem::Version.new(Redis.new.info["redis_version"])
|
7
7
|
let(:redis_client) { @redis.respond_to?(:_client) ? @redis._client : @redis.client}
|
8
8
|
|
9
9
|
before(:each) do
|
@@ -41,6 +41,17 @@ describe "redis" do
|
|
41
41
|
expect(@namespaced.type('counter')).to eq('string')
|
42
42
|
end
|
43
43
|
|
44
|
+
it "should work with Proc namespaces" do
|
45
|
+
namespace = Proc.new { :dynamic_ns }
|
46
|
+
namespaced = Redis::Namespace.new(namespace, redis: @redis)
|
47
|
+
|
48
|
+
expect(namespaced.get('foo')).to eq(nil)
|
49
|
+
namespaced.set('foo', 'chris')
|
50
|
+
expect(namespaced.get('foo')).to eq('chris')
|
51
|
+
@redis.set('foo', 'bob')
|
52
|
+
expect(@redis.get('foo')).to eq('bob')
|
53
|
+
end
|
54
|
+
|
44
55
|
context 'when sending capital commands (issue 68)' do
|
45
56
|
it 'should be able to use a namespace' do
|
46
57
|
@namespaced.send('SET', 'fubar', 'quux')
|
@@ -95,6 +106,13 @@ describe "redis" do
|
|
95
106
|
expect(@namespaced.lrange('bar',0,-1)).to eq(['bar'])
|
96
107
|
end
|
97
108
|
|
109
|
+
it "should be able to use a namespace with getex" do
|
110
|
+
expect(@namespaced.set('mykey', 'Hello')).to eq('OK')
|
111
|
+
expect(@namespaced.getex('mykey', ex: 50)).to eq('Hello')
|
112
|
+
expect(@namespaced.get('mykey')).to eq('Hello')
|
113
|
+
expect(@namespaced.ttl('mykey')).to eq(50)
|
114
|
+
end
|
115
|
+
|
98
116
|
it 'should be able to use a namespace with getbit' do
|
99
117
|
@namespaced.set('foo','bar')
|
100
118
|
expect(@namespaced.getbit('foo',1)).to eq(1)
|
@@ -170,15 +188,22 @@ describe "redis" do
|
|
170
188
|
@namespaced.mset('foo', '1000', 'bar', '2000')
|
171
189
|
expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000' })
|
172
190
|
expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000', 'baz' => nil})
|
191
|
+
|
173
192
|
@namespaced.mapped_mset('foo' => '3000', 'bar' => '5000')
|
174
193
|
expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '3000', 'bar' => '5000' })
|
175
194
|
expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '3000', 'bar' => '5000', 'baz' => nil})
|
195
|
+
|
196
|
+
@namespaced.mset(['foo', '4000'], ['baz', '6000'])
|
197
|
+
expect(@namespaced.mapped_mget('foo', 'bar', 'baz')).to eq({ 'foo' => '4000', 'bar' => '5000', 'baz' => '6000' })
|
176
198
|
end
|
177
199
|
|
178
200
|
it "should be able to use a namespace with msetnx" do
|
179
201
|
@namespaced.msetnx('foo', '1000', 'bar', '2000')
|
180
202
|
expect(@namespaced.mapped_mget('foo', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000' })
|
181
203
|
expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000', 'baz' => nil})
|
204
|
+
|
205
|
+
@namespaced.msetnx(['baz', '4000'])
|
206
|
+
expect(@namespaced.mapped_mget('foo', 'baz', 'bar')).to eq({ 'foo' => '1000', 'bar' => '2000', 'baz' => '4000'})
|
182
207
|
end
|
183
208
|
|
184
209
|
it "should be able to use a namespace with mapped_msetnx" do
|
@@ -687,7 +712,7 @@ describe "redis" do
|
|
687
712
|
expect(result).to match_array(namespaced_keys)
|
688
713
|
end
|
689
714
|
end
|
690
|
-
end if Redis.
|
715
|
+
end if Redis.new.respond_to?(:scan)
|
691
716
|
|
692
717
|
context '#scan_each' do
|
693
718
|
context 'when :match supplied' do
|
@@ -720,7 +745,7 @@ describe "redis" do
|
|
720
745
|
end
|
721
746
|
end
|
722
747
|
end
|
723
|
-
end if Redis.
|
748
|
+
end if Redis.new.respond_to?(:scan_each)
|
724
749
|
end
|
725
750
|
|
726
751
|
context 'hash scan methods' do
|
@@ -748,7 +773,7 @@ describe "redis" do
|
|
748
773
|
expect(results).to match_array(@redis.hgetall('ns:hsh').to_a)
|
749
774
|
end
|
750
775
|
end
|
751
|
-
end if Redis.
|
776
|
+
end if Redis.new.respond_to?(:hscan)
|
752
777
|
|
753
778
|
context '#hscan_each' do
|
754
779
|
context 'when :match supplied' do
|
@@ -781,7 +806,7 @@ describe "redis" do
|
|
781
806
|
end
|
782
807
|
end
|
783
808
|
end
|
784
|
-
end if Redis.
|
809
|
+
end if Redis.new.respond_to?(:hscan_each)
|
785
810
|
end
|
786
811
|
|
787
812
|
context 'set scan methods' do
|
@@ -809,7 +834,7 @@ describe "redis" do
|
|
809
834
|
expect(results).to match_array(set)
|
810
835
|
end
|
811
836
|
end
|
812
|
-
end if Redis.
|
837
|
+
end if Redis.new.respond_to?(:sscan)
|
813
838
|
|
814
839
|
context '#sscan_each' do
|
815
840
|
context 'when :match supplied' do
|
@@ -842,7 +867,7 @@ describe "redis" do
|
|
842
867
|
end
|
843
868
|
end
|
844
869
|
end
|
845
|
-
end if Redis.
|
870
|
+
end if Redis.new.respond_to?(:sscan_each)
|
846
871
|
end
|
847
872
|
|
848
873
|
context 'zset scan methods' do
|
@@ -872,7 +897,7 @@ describe "redis" do
|
|
872
897
|
expect(results).to match_array(hash.to_a)
|
873
898
|
end
|
874
899
|
end
|
875
|
-
end if Redis.
|
900
|
+
end if Redis.new.respond_to?(:zscan)
|
876
901
|
|
877
902
|
context '#zscan_each' do
|
878
903
|
context 'when :match supplied' do
|
@@ -905,7 +930,7 @@ describe "redis" do
|
|
905
930
|
end
|
906
931
|
end
|
907
932
|
end
|
908
|
-
end if Redis.
|
933
|
+
end if Redis.new.respond_to?(:zscan_each)
|
909
934
|
end
|
910
935
|
end
|
911
936
|
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.
|
4
|
+
version: 1.9.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-
|
15
|
+
date: 2022-08-13 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:
|
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:
|
30
|
+
version: '4'
|
30
31
|
- !ruby/object:Gem::Dependency
|
31
32
|
name: rake
|
32
33
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,6 +79,7 @@ email:
|
|
78
79
|
- hone02@gmail.com
|
79
80
|
- steve@steveklabnik.com
|
80
81
|
- me@yaauie.com
|
82
|
+
- mike@mikebian.co
|
81
83
|
executables: []
|
82
84
|
extensions: []
|
83
85
|
extra_rdoc_files: []
|
@@ -97,8 +99,9 @@ licenses:
|
|
97
99
|
metadata:
|
98
100
|
bug_tracker_uri: https://github.com/resque/redis-namespace/issues
|
99
101
|
changelog_uri: https://github.com/resque/redis-namespace/blob/master/CHANGELOG.md
|
100
|
-
documentation_uri: https://www.rubydoc.info/gems/redis-namespace/1.
|
101
|
-
source_code_uri: https://github.com/resque/redis-namespace/tree/v1.
|
102
|
+
documentation_uri: https://www.rubydoc.info/gems/redis-namespace/1.9.0
|
103
|
+
source_code_uri: https://github.com/resque/redis-namespace/tree/v1.9.0
|
104
|
+
rubygems_mfa_required: 'true'
|
102
105
|
post_install_message:
|
103
106
|
rdoc_options: []
|
104
107
|
require_paths:
|
@@ -114,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
117
|
- !ruby/object:Gem::Version
|
115
118
|
version: '0'
|
116
119
|
requirements: []
|
117
|
-
rubygems_version: 3.1.
|
120
|
+
rubygems_version: 3.1.6
|
118
121
|
signing_key:
|
119
122
|
specification_version: 4
|
120
123
|
summary: Namespaces Redis commands.
|