redcache 0.0.3 → 0.0.5

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: b9134505b631ba6721ae691c4a9031dd3e62a551
4
- data.tar.gz: f4a352cc66f24de9d52b8907f62b96d4aa413e91
3
+ metadata.gz: 543f9798b6540d3aaeb03560ada2fb092ab94440
4
+ data.tar.gz: bb6f2dcf5dc5548372a3b96cf10bf232791179b7
5
5
  SHA512:
6
- metadata.gz: 04bb02ff0a7e38f07ccd7741edd113c0eb7e7b4c3c6cd10d2405a1ea03261caad59e6d7bacfa48b7b8a2a7c5cf242ef59673faee1d004657bbf08d8dfb6ac9dc
7
- data.tar.gz: c1ff6af3a7bc067f2844440e4a33876d2a88f9d6c472caad29a78b3dfe3c01770e272c4038f0b4e740713eee162d442fe34d72d151d7c7a1f37ea94e018e85a8
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
@@ -1,3 +1,3 @@
1
1
  module Redcache
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.5"
3
3
  end
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
 
@@ -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.3
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-10 00:00:00.000000000 Z
11
+ date: 2014-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler