redis-activesupport 4.1.5 → 4.1.6.pre

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
  SHA1:
3
- metadata.gz: 08111437f7c13d726c3d0a9596c32e953fff51c6
4
- data.tar.gz: 1872180c2cd4e0e7399dc1cb91d3d32b3893d2fc
3
+ metadata.gz: 6919fcaa1c61e64d94d7cbcd20e320956c385247
4
+ data.tar.gz: 2528731435eb7102d7dd9ca9ec62253cad7ec2c3
5
5
  SHA512:
6
- metadata.gz: 40ed94c1e18f499a7f057f726a017699c3869976423a544ad1d08076d46f120bccc806c107be809c4d41039bb2acd5eceae330f1c36b0d331c486bba1f0c05d7
7
- data.tar.gz: 5c4870cb7b4523c8acf728fac8890dc7ec11a1e890abafe74c2a3dee000a1bd6bbe02a16b82d8c73686241207c844d6d9e08fc3b6fe4788fb70a599020b1b181
6
+ metadata.gz: c6684dfa22128db951fe854d82634b1c512c03605fc2f5b70f943293bb2228d8c051d33430c1e3a0d27670643a00847a4bdf0138f9525fb93393e90a70d48be7
7
+ data.tar.gz: 73d58c822be26ffb4cbe56137c26be9f3d28e4d1d7d859611e8c1664cb53abb5830361e8f60bb87c5e6b4faaeee147a2927fec530d51aad73e6dc723c16d78f8
data/.travis.yml CHANGED
@@ -16,5 +16,6 @@ services:
16
16
  - redis-server
17
17
  matrix:
18
18
  allow_failures:
19
+ - rvm: rbx-19mode
19
20
  - rvm: jruby-head
20
21
  - rvm: ruby-head
data/README.md CHANGED
@@ -17,6 +17,40 @@ If you are using redis-store with Rails, consider using the [redis-rails gem](ht
17
17
  ActiveSupport::Cache.lookup_store :redis_store # { ... optional configuration ... }
18
18
  ```
19
19
 
20
+ ### Usage with Redis Sentinel
21
+
22
+ ```ruby
23
+ sentinel_config = {
24
+ url: "redis://mymaster/0",
25
+ role: "master",
26
+ sentinels: [{
27
+ host: "127.0.0.1",
28
+ port: 26379
29
+ },{
30
+ host: "127.0.0.1",
31
+ port: 26380
32
+ },{
33
+ host: "127.0.0.1",
34
+ port: 26381
35
+ }]
36
+ }
37
+
38
+ # configure cache, merging opts with sentinel conf
39
+ config.cache_store = :redis_store, sentinel_config.merge(
40
+ :namespace => "cache",
41
+ :expires_in => 1.days
42
+ )
43
+
44
+ # configure sessions, setting the sentinel config as the
45
+ # servers value, merging opts with the sentinel conf.
46
+ config.session_store :redis_store, {
47
+ :servers => sentinel_config.merge(
48
+ :namespace => "sessions"
49
+ ),
50
+ :expires_in => 2.days
51
+ }
52
+ ```
53
+
20
54
  ## Running tests
21
55
 
22
56
  ```shell
@@ -92,35 +92,43 @@ module ActiveSupport
92
92
  # cache.read_multi "rabbit", "white-rabbit"
93
93
  # cache.read_multi "rabbit", "white-rabbit", :raw => true
94
94
  def read_multi(*names)
95
+ # Remove the options hash before mapping keys to values
95
96
  options = names.extract_options!
97
+ return {} if names == []
98
+
96
99
  keys = names.map{|name| namespaced_key(name, options)}
97
100
  values = with { |c| c.mget(*keys) }
98
101
  values.map! { |v| v.is_a?(ActiveSupport::Cache::Entry) ? v.value : v }
99
102
 
100
- # Remove the options hash before mapping keys to values
101
- names.extract_options!
102
-
103
103
  result = Hash[keys.zip(values)]
104
104
  result.reject!{ |k,v| v.nil? }
105
105
  result
106
106
  end
107
107
 
108
108
  def fetch_multi(*names)
109
- results = read_multi(*names)
110
109
  options = names.extract_options!
110
+ return {} if names == []
111
+
112
+ results = read_multi(*names, options)
111
113
  fetched = {}
112
114
 
115
+ need_writes = {}
116
+
117
+ fetched = names.inject({}) do |memo, name|
118
+ key = namespaced_key(name, options)
119
+ memo[key] = results.fetch(key) do
120
+ value = yield name
121
+ need_writes[name] = value
122
+ value
123
+ end
124
+
125
+ memo
126
+ end
127
+
113
128
  with do |c|
114
129
  c.multi do
115
- fetched = names.inject({}) do |memo, (name, _)|
116
- key = namespaced_key(name, options)
117
- memo[key] = results.fetch(key) do
118
- value = yield name
119
- write(name, value, options)
120
- value
121
- end
122
-
123
- memo
130
+ need_writes.each do |name, value|
131
+ write(name, value, options)
124
132
  end
125
133
  end
126
134
  end
@@ -3,7 +3,7 @@ $:.push File.expand_path('../lib', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'redis-activesupport'
6
- s.version = '4.1.5'
6
+ s.version = '4.1.6.pre'
7
7
  s.authors = ['Luca Guidi', 'Ryan Bigg']
8
8
  s.email = ['me@lucaguidi.com', 'me@ryanbigg.com']
9
9
  s.homepage = 'http://redis-store.org/redis-activesupport'
@@ -313,6 +313,16 @@ describe ActiveSupport::Cache::RedisStore do
313
313
  result['namespaced:irish whisky'].must_equal("Jameson")
314
314
  end
315
315
 
316
+ it "read_multi return an empty {} when given an empty array" do
317
+ result = @store.read_multi(*[])
318
+ result.must_equal({})
319
+ end
320
+
321
+ it "read_multi return an empty {} when given an empty array with option" do
322
+ result = @store.read_multi(*[], option: true)
323
+ result.must_equal({})
324
+ end
325
+
316
326
  describe "fetch_multi" do
317
327
  it "reads existing keys and fills in anything missing" do
318
328
  @store.write "bourbon", "makers"
@@ -324,19 +334,75 @@ describe ActiveSupport::Cache::RedisStore do
324
334
  result.must_equal({ "bourbon" => "makers", "rye" => "rye-was-missing" })
325
335
  @store.read("rye").must_equal("rye-was-missing")
326
336
  end
337
+
338
+ it "fetch command within fetch_multi block" do
339
+ @store.delete 'rye'
340
+ @store.write "bourbon", "makers"
341
+
342
+ result = @store.fetch_multi("bourbon", "rye") do |key|
343
+ @store.fetch "inner-#{key}" do
344
+ "#{key}-was-missing"
345
+ end
346
+ end
347
+
348
+ result.must_equal({ "bourbon" => "makers", "rye" => "rye-was-missing" })
349
+ @store.read("rye").must_equal("rye-was-missing")
350
+ @store.read("inner-rye").must_equal("rye-was-missing")
351
+ end
352
+
353
+ it "return an empty {} when given an empty array" do
354
+ result = @store.fetch_multi(*[]) { 1 }
355
+ result.must_equal({})
356
+ end
357
+
358
+ it "return an empty {} when given an empty array with option" do
359
+ result = @store.fetch_multi(*[], option: true)
360
+ result.must_equal({})
361
+ end
327
362
  end
328
363
 
329
364
  describe "fetch_multi namespaced keys" do
330
365
  it "reads existing keys and fills in anything missing" do
331
- @store.write "bourbon", "makers", namespace:'namespaced'
366
+ @store.write "bourbon", "makers", namespace: 'namespaced'
332
367
 
333
- result = @store.fetch_multi("bourbon", "rye", namespace:'namespaced') do |key|
368
+ result = @store.fetch_multi("bourbon", "rye", namespace: 'namespaced') do |key|
334
369
  "#{key}-was-missing"
335
370
  end
336
371
 
337
372
  result.must_equal({ "namespaced:bourbon" => "makers", "namespaced:rye" => "rye-was-missing" })
338
373
  @store.read("namespaced:rye").must_equal("rye-was-missing")
339
374
  end
375
+
376
+ it "fetch command within fetch_multi block" do
377
+ @store.delete 'namespaced:rye'
378
+ @store.write "bourbon", "makers", namespace: 'namespaced'
379
+
380
+ result = @store.fetch_multi("bourbon", "rye", namespace: 'namespaced') do |key|
381
+ @store.fetch "namespaced:inner-#{key}" do
382
+ "#{key}-was-missing"
383
+ end
384
+ end
385
+
386
+ result.must_equal({ "namespaced:bourbon" => "makers", "namespaced:rye" => "rye-was-missing" })
387
+ @store.read("namespaced:rye").must_equal("rye-was-missing")
388
+ @store.read("namespaced:inner-rye").must_equal("rye-was-missing")
389
+ end
390
+ end
391
+
392
+ describe "fetch_multi nested keys" do
393
+ it "reads existing keys and fills in anything missing" do
394
+ @store.write ["bourbon", "bourbon-extended"], "makers"
395
+
396
+ bourbon_key = ["bourbon", "bourbon-extended"]
397
+ rye_key = ["rye", "rye-extended"]
398
+
399
+ result = @store.fetch_multi(bourbon_key, rye_key) do |key|
400
+ "#{key}-was-missing"
401
+ end
402
+
403
+ result.must_equal({ "bourbon/bourbon-extended" => "makers", "rye/rye-extended" => "#{rye_key}-was-missing" })
404
+ @store.read(rye_key).must_equal("#{rye_key}-was-missing")
405
+ end
340
406
  end
341
407
 
342
408
  describe "notifications" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-activesupport
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.5
4
+ version: 4.1.6.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
@@ -9,124 +9,124 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-10 00:00:00.000000000 Z
12
+ date: 2017-03-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis-store
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
20
  version: 1.1.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ~>
26
26
  - !ruby/object:Gem::Version
27
27
  version: 1.1.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: activesupport
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - '>='
33
33
  - !ruby/object:Gem::Version
34
34
  version: '3'
35
- - - "<"
35
+ - - <
36
36
  - !ruby/object:Gem::Version
37
37
  version: '5'
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  requirements:
42
- - - ">="
42
+ - - '>='
43
43
  - !ruby/object:Gem::Version
44
44
  version: '3'
45
- - - "<"
45
+ - - <
46
46
  - !ruby/object:Gem::Version
47
47
  version: '5'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rake
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10'
55
55
  type: :development
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '10'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: bundler
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.3'
69
69
  type: :development
70
70
  prerelease: false
71
71
  version_requirements: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.3'
76
76
  - !ruby/object:Gem::Dependency
77
77
  name: mocha
78
78
  requirement: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.14.0
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: 0.14.0
90
90
  - !ruby/object:Gem::Dependency
91
91
  name: minitest
92
92
  requirement: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: '4.2'
97
97
  type: :development
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ~>
102
102
  - !ruby/object:Gem::Version
103
103
  version: '4.2'
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: connection_pool
106
106
  requirement: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ~>
109
109
  - !ruby/object:Gem::Version
110
110
  version: 1.2.0
111
111
  type: :development
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ~>
116
116
  - !ruby/object:Gem::Version
117
117
  version: 1.2.0
118
118
  - !ruby/object:Gem::Dependency
119
119
  name: redis-store-testing
120
120
  requirement: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  type: :development
126
126
  prerelease: false
127
127
  version_requirements: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  description: Redis store for ActiveSupport
@@ -137,8 +137,8 @@ executables: []
137
137
  extensions: []
138
138
  extra_rdoc_files: []
139
139
  files:
140
- - ".gitignore"
141
- - ".travis.yml"
140
+ - .gitignore
141
+ - .travis.yml
142
142
  - Gemfile
143
143
  - MIT-LICENSE
144
144
  - README.md
@@ -160,17 +160,17 @@ require_paths:
160
160
  - lib
161
161
  required_ruby_version: !ruby/object:Gem::Requirement
162
162
  requirements:
163
- - - ">="
163
+ - - '>='
164
164
  - !ruby/object:Gem::Version
165
165
  version: '0'
166
166
  required_rubygems_version: !ruby/object:Gem::Requirement
167
167
  requirements:
168
- - - ">="
168
+ - - '>'
169
169
  - !ruby/object:Gem::Version
170
- version: '0'
170
+ version: 1.3.1
171
171
  requirements: []
172
172
  rubyforge_project: redis-activesupport
173
- rubygems_version: 2.4.5.1
173
+ rubygems_version: 2.5.2
174
174
  signing_key:
175
175
  specification_version: 4
176
176
  summary: Redis store for ActiveSupport