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 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