ashleym1972-cache-money 0.2.8 → 0.2.9
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.
- data/lib/cache_money.rb +1 -1
- data/lib/cash/accessor.rb +4 -4
- data/lib/cash/config.rb +2 -2
- data/lib/cash/query/abstract.rb +9 -9
- data/spec/cash/lock_spec.rb +6 -5
- metadata +1 -1
data/lib/cache_money.rb
CHANGED
|
@@ -29,7 +29,7 @@ class ActiveRecord::Base
|
|
|
29
29
|
def self.is_cached(options = {})
|
|
30
30
|
options.assert_valid_keys(:ttl, :repository, :version)
|
|
31
31
|
include Cash unless ancestors.include?(Cash)
|
|
32
|
-
Cash::Config
|
|
32
|
+
Cash::Config.create(self, options)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
data/lib/cash/accessor.rb
CHANGED
|
@@ -40,17 +40,17 @@ module Cash
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def add(key, value, options = {})
|
|
43
|
-
if repository.add(cache_key(key), value, options[:ttl] || cache_config.
|
|
43
|
+
if repository.add(cache_key(key), value, options[:ttl] || cache_config.ttl, options[:raw]) == "NOT_STORED\r\n"
|
|
44
44
|
yield if block_given?
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
def set(key, value, options = {})
|
|
49
|
-
repository.set(cache_key(key), value, options[:ttl] || cache_config.
|
|
49
|
+
repository.set(cache_key(key), value, options[:ttl] || cache_config.ttl, options[:raw])
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
def incr(key, delta = 1, ttl = nil)
|
|
53
|
-
ttl ||= cache_config.
|
|
53
|
+
ttl ||= cache_config.ttl
|
|
54
54
|
repository.incr(cache_key = cache_key(key), delta) || begin
|
|
55
55
|
repository.add(cache_key, (result = yield).to_s, ttl, true) { repository.incr(cache_key) }
|
|
56
56
|
result
|
|
@@ -58,7 +58,7 @@ module Cash
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
def decr(key, delta = 1, ttl = nil)
|
|
61
|
-
ttl ||= cache_config.
|
|
61
|
+
ttl ||= cache_config.ttl
|
|
62
62
|
repository.decr(cache_key = cache_key(key), delta) || begin
|
|
63
63
|
repository.add(cache_key, (result = yield).to_s, ttl, true) { repository.decr(cache_key) }
|
|
64
64
|
result
|
data/lib/cash/config.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Cash
|
|
2
2
|
module Config
|
|
3
3
|
def self.create(active_record, options, indices = [])
|
|
4
|
-
active_record.cache_config = Config.new(active_record, options)
|
|
4
|
+
active_record.cache_config = Cash::Config::Config.new(active_record, options)
|
|
5
5
|
indices.each { |i| active_record.index i.attributes, i.options }
|
|
6
6
|
end
|
|
7
7
|
|
|
@@ -52,7 +52,7 @@ module Cash
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def ttl
|
|
55
|
-
@options[:ttl]
|
|
55
|
+
@options[:ttl] || 0
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
def version
|
data/lib/cash/query/abstract.rb
CHANGED
|
@@ -10,11 +10,11 @@ module Cash
|
|
|
10
10
|
def initialize(active_record, options1, options2)
|
|
11
11
|
@active_record, @options1, @options2 = active_record, options1, options2 || {}
|
|
12
12
|
|
|
13
|
-
if active_record.base_class != active_record
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
end
|
|
13
|
+
# if active_record.base_class != active_record
|
|
14
|
+
# @options2[:conditions] = active_record.merge_conditions(
|
|
15
|
+
# @options2[:conditions], { active_record.inheritance_column => active_record.to_s }
|
|
16
|
+
# )
|
|
17
|
+
# end
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def perform(find_options = {}, get_options = {})
|
|
@@ -24,7 +24,7 @@ module Cash
|
|
|
24
24
|
misses, missed_keys, objects = hit_or_miss(cache_keys, index, get_options)
|
|
25
25
|
format_results(cache_keys, choose_deserialized_objects_if_possible(missed_keys, cache_keys, misses, objects))
|
|
26
26
|
else
|
|
27
|
-
logger.debug("---- UNCACHEABLE #{table_name} - #{find_options.inspect} - #{get_options.inspect} - #{@options1.inspect} - #{@options2.inspect}")
|
|
27
|
+
logger.debug("---- UNCACHEABLE #{table_name} - #{find_options.inspect} - #{get_options.inspect} - #{@options1.inspect} - #{@options2.inspect}") if logger
|
|
28
28
|
uncacheable
|
|
29
29
|
end
|
|
30
30
|
end
|
|
@@ -61,9 +61,9 @@ module Cash
|
|
|
61
61
|
return if partial_indices.include?(nil)
|
|
62
62
|
attribute_value_pairs = partial_indices.sum.sort { |x, y| x[0] <=> y[0] }
|
|
63
63
|
|
|
64
|
-
attribute_value_pairs.each do |attribute_value_pair|
|
|
65
|
-
|
|
66
|
-
end
|
|
64
|
+
# attribute_value_pairs.each do |attribute_value_pair|
|
|
65
|
+
# return false if attribute_value_pair.last.is_a?(Array)
|
|
66
|
+
# end
|
|
67
67
|
|
|
68
68
|
if index = indexed_on?(attribute_value_pairs.collect { |pair| pair[0] })
|
|
69
69
|
if index.matches?(self)
|
data/spec/cash/lock_spec.rb
CHANGED
|
@@ -48,7 +48,8 @@ module Cash
|
|
|
48
48
|
describe 'when given a timeout for the lock' do
|
|
49
49
|
it "correctly sets timeout on memcache entries" do
|
|
50
50
|
mock($memcache).add('lock/lock_key', Process.pid, timeout = 10) { true }
|
|
51
|
-
$lock.acquire_lock('lock_key', timeout)
|
|
51
|
+
# $lock.acquire_lock('lock_key', timeout)
|
|
52
|
+
lambda { $lock.acquire_lock('lock_key', timeout, 1) }.should raise_error
|
|
52
53
|
end
|
|
53
54
|
end
|
|
54
55
|
|
|
@@ -74,10 +75,10 @@ module Cash
|
|
|
74
75
|
|
|
75
76
|
describe 'when given an initial wait' do
|
|
76
77
|
it 'sleeps exponentially starting with the initial wait' do
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
stub($lock).sleep(initial_wait = 0.123)
|
|
79
|
+
stub($lock).sleep(2 * initial_wait)
|
|
80
|
+
stub($lock).sleep(4 * initial_wait)
|
|
81
|
+
stub($lock).sleep(8 * initial_wait)
|
|
81
82
|
$lock.acquire_lock('lock_key')
|
|
82
83
|
as_another_process do
|
|
83
84
|
lambda { $lock.acquire_lock('lock_key', Lock::DEFAULT_EXPIRY, Lock::DEFAULT_RETRY, initial_wait) }.should raise_error
|