seamusabshere-cache-money 0.2.8 → 0.2.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/cash/finders.rb +18 -3
- data/lib/cash/query/abstract.rb +1 -1
- metadata +1 -1
data/lib/cash/finders.rb
CHANGED
@@ -24,11 +24,22 @@ module Cash
|
|
24
24
|
find_scope[:order] ? find_scope : find_scope.merge(_default_order)
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
27
|
+
def _find_by_id_with_exclusive_scope(id)
|
28
28
|
with_exclusive_scope({ :find => _default_order }) do
|
29
29
|
find_from_ids_without_cache([id], {})
|
30
30
|
end
|
31
31
|
end
|
32
|
+
|
33
|
+
# http://github.com/entombedvirus/cache_fu/commit/78cf070aa281208dc63c58e58578afc04f9874c6
|
34
|
+
def _run_callbacks(result)
|
35
|
+
if result.respond_to?(:each)
|
36
|
+
result.each { |r| _run_callbacks(r) }
|
37
|
+
elsif result.is_a?(ActiveRecord::Base)
|
38
|
+
result.send(:callback, :after_initialize) if result.respond_to?(:after_initialize)
|
39
|
+
result.send(:callback, :after_find) if result.respond_to?(:after_find)
|
40
|
+
end
|
41
|
+
nil
|
42
|
+
end
|
32
43
|
|
33
44
|
def without_cache(&block)
|
34
45
|
with_scope(:find => {:readonly => true}, &block)
|
@@ -36,12 +47,16 @@ module Cash
|
|
36
47
|
|
37
48
|
# User.find(:first, ...), User.find_by_foo(...), User.find(:all, ...), User.find_all_by_foo(...)
|
38
49
|
def find_every_with_cache(options)
|
39
|
-
Query::Select.perform(self, options, _find_scope_with_default_order)
|
50
|
+
results = Query::Select.perform(self, options, _find_scope_with_default_order)
|
51
|
+
_run_callbacks(results)
|
52
|
+
results
|
40
53
|
end
|
41
54
|
|
42
55
|
# User.find(1), User.find(1, 2, 3), User.find([1, 2, 3]), User.find([])
|
43
56
|
def find_from_ids_with_cache(ids, options)
|
44
|
-
Query::PrimaryKey.perform(self, ids, options, _find_scope_with_default_order)
|
57
|
+
results = Query::PrimaryKey.perform(self, ids, options, _find_scope_with_default_order)
|
58
|
+
_run_callbacks(results)
|
59
|
+
results
|
45
60
|
end
|
46
61
|
|
47
62
|
# User.count(:all), User.count, User.sum(...)
|
data/lib/cash/query/abstract.rb
CHANGED
@@ -156,7 +156,7 @@ module Cash
|
|
156
156
|
|
157
157
|
def find_from_keys(*missing_keys)
|
158
158
|
missing_ids = Array(missing_keys).flatten.collect { |key| key.split('/')[2].to_i }
|
159
|
-
missing_ids.map { |id| @active_record.
|
159
|
+
missing_ids.map { |id| @active_record._find_by_id_with_exclusive_scope(id) }
|
160
160
|
end
|
161
161
|
end
|
162
162
|
end
|