lock_and_cache 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +6 -0
- data/lib/lock_and_cache.rb +14 -11
- data/lib/lock_and_cache/version.rb +1 -1
- data/spec/lock_and_cache_spec.rb +6 -0
- 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: 05cf8fb6492276dbdd927c7b40877a3115dd4798
|
4
|
+
data.tar.gz: 9d522afcc3bbed01ce5876f0465f2cbe655b96bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47ff5574928c53bc0750202ea7808a6565f01e5089928469b4f99aff596ced3f63356100ec85b7d32cdbb6a0872ab90819d28e382b9587d0df118fb8271c5a1b
|
7
|
+
data.tar.gz: dc3be7f40572214c213a6928e24cfb84c2c0734b2c3af4238eb569bc625f8aabc0d642cc115ae772c355e190ad12adb0508e69ab85999074d3c42eb9b5bceb8a
|
data/CHANGELOG
CHANGED
data/lib/lock_and_cache.rb
CHANGED
@@ -20,11 +20,11 @@ module LockAndCache
|
|
20
20
|
|
21
21
|
class Key
|
22
22
|
attr_reader :obj
|
23
|
-
attr_reader :
|
23
|
+
attr_reader :method_id
|
24
24
|
|
25
|
-
def initialize(obj,
|
25
|
+
def initialize(obj, method_id, parts)
|
26
26
|
@obj = obj
|
27
|
-
@
|
27
|
+
@method_id = method_id
|
28
28
|
@_parts = parts
|
29
29
|
end
|
30
30
|
|
@@ -47,23 +47,26 @@ module LockAndCache
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
def method_id
|
51
|
-
@method_id ||= begin
|
52
|
-
kaller[0] =~ /in `(\w+)'/
|
53
|
-
$1 or raise "couldn't get method_id from #{kaller[0]}"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
50
|
def obj_class_name
|
58
51
|
@obj_class_name ||= (obj.class == ::Class) ? obj.name : obj.class.name
|
59
52
|
end
|
60
53
|
|
61
54
|
end
|
62
55
|
|
56
|
+
def lock_and_cache_clear(method_id, *key_parts)
|
57
|
+
debug = (ENV['LOCK_AND_CACHE_DEBUG'] == 'true')
|
58
|
+
key = LockAndCache::Key.new self, method_id, key_parts
|
59
|
+
Thread.exclusive { $stderr.puts "[lock_and_cache] clear #{key.debug}" } if debug
|
60
|
+
digest = key.digest
|
61
|
+
LockAndCache.storage.del digest
|
62
|
+
end
|
63
|
+
|
63
64
|
def lock_and_cache(*key_parts)
|
64
65
|
raise "need a block" unless block_given?
|
65
66
|
debug = (ENV['LOCK_AND_CACHE_DEBUG'] == 'true')
|
66
|
-
|
67
|
+
caller[0] =~ /in `(\w+)'/
|
68
|
+
method_id = $1 or raise "couldn't get method_id from #{kaller[0]}"
|
69
|
+
key = LockAndCache::Key.new self, method_id, key_parts
|
67
70
|
digest = key.digest
|
68
71
|
storage = LockAndCache.storage
|
69
72
|
Thread.exclusive { $stderr.puts "[lock_and_cache] A #{key.debug}" } if debug
|
data/spec/lock_and_cache_spec.rb
CHANGED
@@ -69,6 +69,12 @@ describe LockAndCache do
|
|
69
69
|
expect(foo.click).to eq(1)
|
70
70
|
expect(foo.click).to eq(1)
|
71
71
|
end
|
72
|
+
|
73
|
+
it "can be cleared" do
|
74
|
+
expect(foo.click).to eq(1)
|
75
|
+
foo.lock_and_cache_clear :click, foo
|
76
|
+
expect(foo.click).to eq(2)
|
77
|
+
end
|
72
78
|
end
|
73
79
|
|
74
80
|
describe "locking" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lock_and_cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seamus Abshere
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|