simple_cacheable 1.1.0 → 1.1.1
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/cacheable.rb +12 -16
- data/lib/cacheable/version.rb +1 -1
- metadata +2 -2
data/lib/cacheable.rb
CHANGED
@@ -23,14 +23,13 @@ module Cacheable
|
|
23
23
|
after_update :expire_attribute_cache
|
24
24
|
EOF
|
25
25
|
|
26
|
-
|
26
|
+
class_attribute :cached_indices
|
27
|
+
self.cached_indices = attributes.inject({}) { |indices, attribute| indices[attribute] = {} }
|
27
28
|
attributes.each do |attribute|
|
28
29
|
class_eval <<-EOF
|
29
30
|
def self.find_cached_by_#{attribute}(value)
|
30
|
-
|
31
|
-
|
32
|
-
indices["#{attribute}"] << value
|
33
|
-
write_inheritable_attribute :cached_indices, indices
|
31
|
+
self.cached_indices["#{attribute}"] ||= []
|
32
|
+
self.cached_indices["#{attribute}"] << value
|
34
33
|
Rails.cache.fetch attribute_cache_key("#{attribute}", value) do
|
35
34
|
self.find_by_#{attribute}(value)
|
36
35
|
end
|
@@ -44,7 +43,8 @@ module Cacheable
|
|
44
43
|
after_update :expire_method_cache
|
45
44
|
EOF
|
46
45
|
|
47
|
-
|
46
|
+
class_attribute :cached_methods
|
47
|
+
self.cached_methods = methods
|
48
48
|
methods.each do |meth|
|
49
49
|
class_eval <<-EOF
|
50
50
|
def cached_#{meth}
|
@@ -88,7 +88,7 @@ module Cacheable
|
|
88
88
|
class_eval <<-EOF
|
89
89
|
def cached_#{association_name}
|
90
90
|
Rails.cache.fetch have_association_cache_key("#{association_name}") do
|
91
|
-
#{association_name}
|
91
|
+
#{association_name}.respond_to?(:all) ? #{association_name}.all : #{association_name}
|
92
92
|
end
|
93
93
|
end
|
94
94
|
EOF
|
@@ -114,20 +114,16 @@ module Cacheable
|
|
114
114
|
end
|
115
115
|
|
116
116
|
def expire_attribute_cache
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
Rails.cache.delete self.class.attribute_cache_key(attribute, value)
|
121
|
-
end
|
117
|
+
self.class.cached_indices.each do |attribute, values|
|
118
|
+
values.each do |value|
|
119
|
+
Rails.cache.delete self.class.attribute_cache_key(attribute, value)
|
122
120
|
end
|
123
121
|
end
|
124
122
|
end
|
125
123
|
|
126
124
|
def expire_method_cache
|
127
|
-
|
128
|
-
|
129
|
-
Rails.cache.delete method_cache_key(meth)
|
130
|
-
end
|
125
|
+
self.class.cached_methods.each do |meth|
|
126
|
+
Rails.cache.delete method_cache_key(meth)
|
131
127
|
end
|
132
128
|
end
|
133
129
|
|
data/lib/cacheable/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: simple_cacheable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.1.
|
5
|
+
version: 1.1.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Richard Huang
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-10-
|
13
|
+
date: 2011-10-07 00:00:00 +08:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|