redcache 0.0.3 → 0.0.5
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 +9 -0
- data/lib/redcache/version.rb +1 -1
- data/lib/redcache.rb +9 -9
- data/spec/redcache_spec.rb +10 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 543f9798b6540d3aaeb03560ada2fb092ab94440
|
4
|
+
data.tar.gz: bb6f2dcf5dc5548372a3b96cf10bf232791179b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1eaace62ca7bddfa75080b6906c439125dbdeff7ea6c0a496ba9fffb06361417a8ac4d6949e1e9b2b4c64b4f771d2ce4f91958d4c51bcc1c9a3431ab23f5912
|
7
|
+
data.tar.gz: a2e217127f26cd4e385232abce83b3e6be7ca1fcc3f0c042c8af1c2a923c495b27dc263fa653170ef714392cb8978ac10a87ad2534cc60dfa21e7a2d0c330424
|
data/README.md
CHANGED
@@ -42,6 +42,15 @@ value = Redcache.cache "unique_cache_key" do
|
|
42
42
|
end
|
43
43
|
```
|
44
44
|
|
45
|
+
arguments can also be passed into Redcache is needed for when your stale
|
46
|
+
refreshes are run:
|
47
|
+
|
48
|
+
```
|
49
|
+
value = Redcache.cache "unique_cache_key", api, id do |api, id|
|
50
|
+
api.call_to_slow_service id
|
51
|
+
end
|
52
|
+
```
|
53
|
+
|
45
54
|
### Configuration
|
46
55
|
|
47
56
|
Several configuration options are available to use that defined the behaviour of
|
data/lib/redcache/version.rb
CHANGED
data/lib/redcache.rb
CHANGED
@@ -14,31 +14,31 @@ module Redcache
|
|
14
14
|
yield(configuration)
|
15
15
|
end
|
16
16
|
|
17
|
-
def cache(redis_key, &block)
|
17
|
+
def cache(redis_key, *args, &block)
|
18
18
|
# return immediately if we shouldn't or can't cache
|
19
|
-
return block.call if skip_cache? || !redis_up?
|
19
|
+
return block.call(*args) if skip_cache? || !redis_up?
|
20
20
|
with_redis do
|
21
21
|
# attempt to read from cache, running and caching the block if cold
|
22
|
-
value = read_from_cache(redis_key, block)
|
22
|
+
value = read_from_cache(redis_key, *args, &block)
|
23
23
|
if value.nil?
|
24
|
-
value = block.call if value.nil?
|
24
|
+
value = block.call(*args) if value.nil?
|
25
25
|
write_into_cache(redis_key, value)
|
26
26
|
end
|
27
27
|
return value
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def read_from_cache(redis_key, block)
|
31
|
+
def read_from_cache(redis_key, *args, &block)
|
32
32
|
value = get_value(redis_key)
|
33
33
|
value.nil? ? log("cache.miss", redis_key) : log("cache.hit", redis_key)
|
34
|
-
refresh_cache(redis_key, block) if key_stale?(redis_key) && !value.nil?
|
34
|
+
refresh_cache(redis_key, *args, &block) if key_stale?(redis_key) && !value.nil?
|
35
35
|
return value
|
36
36
|
end
|
37
37
|
|
38
|
-
def refresh_cache(redis_key, block)
|
38
|
+
def refresh_cache(redis_key, *args, &block)
|
39
39
|
log("cache.stale_refresh", redis_key)
|
40
|
-
Thread.new do
|
41
|
-
write_into_cache(redis_key, block.call)
|
40
|
+
Thread.new(*args) do |*thread_args|
|
41
|
+
write_into_cache(redis_key, block.call(*thread_args))
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
data/spec/redcache_spec.rb
CHANGED
@@ -8,13 +8,17 @@ Redcache.configure do |c|
|
|
8
8
|
end
|
9
9
|
|
10
10
|
class Dummy
|
11
|
+
def self.uuid
|
12
|
+
SecureRandom.uuid
|
13
|
+
end
|
14
|
+
|
11
15
|
def self.run
|
12
|
-
Redcache.cache "foo" do
|
13
|
-
get_value
|
16
|
+
Redcache.cache "foo", uuid do |uuid|
|
17
|
+
get_value(uuid)
|
14
18
|
end
|
15
19
|
end
|
16
20
|
|
17
|
-
def self.get_value
|
21
|
+
def self.get_value(uuid=nil)
|
18
22
|
"bar"
|
19
23
|
end
|
20
24
|
end
|
@@ -55,9 +59,11 @@ describe Redcache do
|
|
55
59
|
end
|
56
60
|
|
57
61
|
it 'skips cache when redis is down' do
|
62
|
+
random = SecureRandom.uuid
|
63
|
+
allow(Dummy).to receive(:uuid){ random }
|
58
64
|
allow(rc).to receive(:redis_up?){ false }
|
59
65
|
expect(rc).to_not receive(:read_from_cache)
|
60
|
-
expect(Dummy).to receive(:get_value)
|
66
|
+
expect(Dummy).to receive(:get_value).with(random){ "bar" }
|
61
67
|
Dummy.run
|
62
68
|
end
|
63
69
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redcache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neil Middleton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|