rediska 0.0.7 → 0.0.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 +7 -0
- data/Gemfile.lock +20 -18
- data/Rakefile +1 -0
- data/lib/rediska/driver.rb +17 -4
- data/lib/rediska/version.rb +1 -1
- data/spec/support/sets.rb +76 -0
- metadata +14 -24
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f86c134332ab9cf5217916caadf33c173e95c2ba
|
4
|
+
data.tar.gz: 6237f5b3dbc747d40294e4e93ba933afd687b78c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c73bfe01ede94fdaa21c058d20723c19367c4cd23ecb3a4d30032e758c395def2eabe115f00927aede66f835a9b448b5708f6ad7067dc671182adc390173b2cd
|
7
|
+
data.tar.gz: d17031c7ac9a702dfce106bbceaa777bd1a7a4dc94c889e35fb8f65a32222b761670984bcb785a3d993543000a8646721c2b7988c560efb03fc92a614aa6a33a
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rediska (0.0.
|
4
|
+
rediska (0.0.8)
|
5
5
|
redis (~> 3.0.0)
|
6
6
|
|
7
7
|
GEM
|
@@ -13,32 +13,34 @@ GEM
|
|
13
13
|
simplecov (>= 0.7)
|
14
14
|
term-ansicolor
|
15
15
|
thor
|
16
|
-
diff-lcs (1.2.
|
16
|
+
diff-lcs (1.2.5)
|
17
|
+
docile (1.1.3)
|
17
18
|
json (1.8.1)
|
18
|
-
mime-types (
|
19
|
-
multi_json (1.
|
20
|
-
rake (10.
|
21
|
-
rdoc (4.
|
19
|
+
mime-types (2.2)
|
20
|
+
multi_json (1.9.2)
|
21
|
+
rake (10.2.2)
|
22
|
+
rdoc (4.1.1)
|
22
23
|
json (~> 1.4)
|
23
|
-
redis (3.0.
|
24
|
+
redis (3.0.7)
|
24
25
|
rest-client (1.6.7)
|
25
26
|
mime-types (>= 1.16)
|
26
27
|
rspec (2.14.1)
|
27
28
|
rspec-core (~> 2.14.0)
|
28
29
|
rspec-expectations (~> 2.14.0)
|
29
30
|
rspec-mocks (~> 2.14.0)
|
30
|
-
rspec-core (2.14.
|
31
|
-
rspec-expectations (2.14.
|
31
|
+
rspec-core (2.14.8)
|
32
|
+
rspec-expectations (2.14.5)
|
32
33
|
diff-lcs (>= 1.1.3, < 2.0)
|
33
|
-
rspec-mocks (2.14.
|
34
|
-
simplecov (0.
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
34
|
+
rspec-mocks (2.14.6)
|
35
|
+
simplecov (0.8.2)
|
36
|
+
docile (~> 1.1.0)
|
37
|
+
multi_json
|
38
|
+
simplecov-html (~> 0.8.0)
|
39
|
+
simplecov-html (0.8.0)
|
40
|
+
term-ansicolor (1.3.0)
|
41
|
+
tins (~> 1.0)
|
42
|
+
thor (0.19.1)
|
43
|
+
tins (1.0.1)
|
42
44
|
|
43
45
|
PLATFORMS
|
44
46
|
ruby
|
data/Rakefile
CHANGED
data/lib/rediska/driver.rb
CHANGED
@@ -415,10 +415,8 @@ module Rediska
|
|
415
415
|
data[destination] = ::Set.new(result)
|
416
416
|
end
|
417
417
|
|
418
|
-
def srandmember(key)
|
419
|
-
|
420
|
-
return nil unless data[key]
|
421
|
-
data[key].to_a[rand(data[key].size)]
|
418
|
+
def srandmember(key, number = nil)
|
419
|
+
number.nil? ? srandmember_single(key) : srandmember_multiple(key, number)
|
422
420
|
end
|
423
421
|
|
424
422
|
def del(*keys)
|
@@ -923,5 +921,20 @@ module Rediska
|
|
923
921
|
def mapped_param? param
|
924
922
|
param.size == 1 && param[0].is_a?(Array)
|
925
923
|
end
|
924
|
+
|
925
|
+
def srandmember_single(key)
|
926
|
+
data_type_check(key, ::Set)
|
927
|
+
return nil unless data[key]
|
928
|
+
data[key].to_a[rand(data[key].size)]
|
929
|
+
end
|
930
|
+
|
931
|
+
def srandmember_multiple(key, number)
|
932
|
+
return [] unless data[key]
|
933
|
+
if number >= 0
|
934
|
+
data[key].to_a.sample(number)
|
935
|
+
else
|
936
|
+
(1..-number).map { data[key].to_a[rand(data[key].size)] }.flatten
|
937
|
+
end
|
938
|
+
end
|
926
939
|
end
|
927
940
|
end
|
data/lib/rediska/version.rb
CHANGED
data/spec/support/sets.rb
CHANGED
@@ -178,4 +178,80 @@ shared_examples 'sets' do
|
|
178
178
|
|
179
179
|
subject.smembers('key').should =~ ['a', 'b', 'c', 'd', 'e']
|
180
180
|
end
|
181
|
+
|
182
|
+
describe 'srandmember' do
|
183
|
+
before(:each) do
|
184
|
+
@client = Redis.new
|
185
|
+
end
|
186
|
+
|
187
|
+
context 'with a set that has three elements' do
|
188
|
+
before do
|
189
|
+
subject.sadd('key1', 'a')
|
190
|
+
subject.sadd('key1', 'b')
|
191
|
+
subject.sadd('key1', 'c')
|
192
|
+
end
|
193
|
+
|
194
|
+
context 'when called without the optional number parameter' do
|
195
|
+
it 'is a random element from the set' do
|
196
|
+
random_element = subject.srandmember('key1')
|
197
|
+
|
198
|
+
['a', 'b', 'c'].should include(random_element)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
context 'when called with the optional number parameter of 1' do
|
203
|
+
it 'is an array of one random element from the set' do
|
204
|
+
subject.srandmember('key1', 1)
|
205
|
+
|
206
|
+
[['a'], ['b'], ['c']].should include(subject.srandmember('key1', 1))
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
context 'when called with the optional number parameter of 2' do
|
211
|
+
it 'is an array of two unique, random elements from the set' do
|
212
|
+
random_elements = subject.srandmember('key1', 2)
|
213
|
+
|
214
|
+
random_elements.should have(2).items
|
215
|
+
random_elements.uniq.should have(2).items
|
216
|
+
random_elements.all? do |element|
|
217
|
+
['a', 'b', 'c'].should include(element)
|
218
|
+
end
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
context 'when called with an optional parameter of -100' do
|
223
|
+
it 'is an array of 100 random elements from the set, some of which are repeated' do
|
224
|
+
random_elements = subject.srandmember('key1', -100)
|
225
|
+
|
226
|
+
random_elements.should have(100).items
|
227
|
+
random_elements.uniq.should have_at_most(3).items
|
228
|
+
random_elements.all? do |element|
|
229
|
+
['a', 'b', 'c'].should include(element)
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
context 'when called with an optional parameter of 100' do
|
235
|
+
it 'is an array of all of the elements from the set, none of which are repeated' do
|
236
|
+
random_elements = subject.srandmember('key1', 100)
|
237
|
+
|
238
|
+
random_elements.should have(3).items
|
239
|
+
random_elements.uniq.should have(3).items
|
240
|
+
random_elements.should =~ ['a', 'b', 'c']
|
241
|
+
end
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
context 'with an empty set' do
|
246
|
+
before { subject.del('key1') }
|
247
|
+
|
248
|
+
it 'is nil without the extra parameter' do
|
249
|
+
subject.srandmember('key1').should be_nil
|
250
|
+
end
|
251
|
+
|
252
|
+
it 'is an empty array with an extra parameter' do
|
253
|
+
subject.srandmember('key1', 1).should == []
|
254
|
+
end
|
255
|
+
end
|
256
|
+
end
|
181
257
|
end
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rediska
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.8
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Leonid Beder
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2014-
|
11
|
+
date: 2014-04-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: redis
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,37 +41,34 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: coveralls
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rake
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
|
-
description:
|
79
|
-
|
69
|
+
description: |-
|
70
|
+
A light-weighted redis driver for testing, development, and minimal environments,
|
71
|
+
which supports various data storage strategies.
|
80
72
|
email:
|
81
73
|
- leonid.beder@gmail.com
|
82
74
|
executables: []
|
@@ -119,27 +111,26 @@ files:
|
|
119
111
|
homepage: https://github.com/lbeder/rediska
|
120
112
|
licenses:
|
121
113
|
- MIT
|
114
|
+
metadata: {}
|
122
115
|
post_install_message:
|
123
116
|
rdoc_options: []
|
124
117
|
require_paths:
|
125
118
|
- lib
|
126
119
|
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
-
none: false
|
128
120
|
requirements:
|
129
|
-
- -
|
121
|
+
- - '>='
|
130
122
|
- !ruby/object:Gem::Version
|
131
123
|
version: '0'
|
132
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
125
|
requirements:
|
135
|
-
- -
|
126
|
+
- - '>='
|
136
127
|
- !ruby/object:Gem::Version
|
137
128
|
version: '0'
|
138
129
|
requirements: []
|
139
130
|
rubyforge_project:
|
140
|
-
rubygems_version:
|
131
|
+
rubygems_version: 2.2.2
|
141
132
|
signing_key:
|
142
|
-
specification_version:
|
133
|
+
specification_version: 4
|
143
134
|
summary: A light-weighted redis driver for testing, development, and minimal environments
|
144
135
|
test_files:
|
145
136
|
- spec/redis_spec.rb
|
@@ -155,4 +146,3 @@ test_files:
|
|
155
146
|
- spec/support/strings.rb
|
156
147
|
- spec/support/transactions.rb
|
157
148
|
- spec/support/upcase_method_names.rb
|
158
|
-
has_rdoc:
|