CachedSupermodel 0.1.0 → 0.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/Rakefile +1 -1
- data/lib/cs_active_record.rb +2 -2
- data/lib/cs_associations.rb +9 -9
- metadata +2 -2
data/Rakefile
CHANGED
@@ -4,7 +4,7 @@ require 'rubygems'
|
|
4
4
|
require 'hoe'
|
5
5
|
require './lib/cached_supermodel.rb'
|
6
6
|
|
7
|
-
Hoe.new('CachedSupermodel', '0.1.
|
7
|
+
Hoe.new('CachedSupermodel', '0.1.1') do |p|
|
8
8
|
p.rubyforge_name = 'adocca-plugins'
|
9
9
|
p.summary = 'A library that automatically caches all ActiveRecord::Base instances in memcache using the AdoccaMemcache gem.'
|
10
10
|
p.description = p.paragraphs_of('README.txt', 2..5).join("\n\n")
|
data/lib/cs_active_record.rb
CHANGED
@@ -53,7 +53,7 @@ class ActiveRecord::Base
|
|
53
53
|
attribute_values = attributes.collect do |attribute|
|
54
54
|
self[attribute.to_sym]
|
55
55
|
end
|
56
|
-
expire_cached_namespace(self.class.name + ":#{finder}:" + attribute_values.inspect)
|
56
|
+
expire_cached_namespace("CachedSupermodel:" + self.class.name + ":#{finder}:" + attribute_values.inspect)
|
57
57
|
end
|
58
58
|
else
|
59
59
|
raise "Unknown finder type #{finder}"
|
@@ -65,7 +65,7 @@ def self.#{finder}_get_ids(*args)
|
|
65
65
|
attributes = match[2].to_s.split(/_and_/)
|
66
66
|
normal_arguments = args[0...attributes.size]
|
67
67
|
rest = args[attributes.size..-1]
|
68
|
-
cache_value([self.name + ':#{finder}:' + normal_arguments.inspect, rest.inspect]) do
|
68
|
+
cache_value(['CachedSupermodel:' + self.name + ':#{finder}:' + normal_arguments.inspect, rest.inspect]) do
|
69
69
|
rval = method_missing(:#{finder}, *args)
|
70
70
|
if Array === rval
|
71
71
|
rval.collect(&:id)
|
data/lib/cs_associations.rb
CHANGED
@@ -23,7 +23,7 @@ ActiveRecord::Associations::ClassMethods.class_eval do
|
|
23
23
|
type_field = reflection.primary_key_name.gsub(/_id$/, "_type")
|
24
24
|
expire_proc = Proc.new do |instance|
|
25
25
|
if instance.send(type_field) == our_name
|
26
|
-
key = "
|
26
|
+
key = "CachedSupermodel:#{our_name}:#{instance.send(reflection.primary_key_name)}:#{reflection.name}"
|
27
27
|
expire_cached_value(key)
|
28
28
|
end
|
29
29
|
end
|
@@ -32,7 +32,7 @@ ActiveRecord::Associations::ClassMethods.class_eval do
|
|
32
32
|
# Add invalidations for normal associations.
|
33
33
|
#
|
34
34
|
expire_proc = Proc.new do |instance|
|
35
|
-
key = "
|
35
|
+
key = "CachedSupermodel:#{our_name}:#{instance.send(reflection.primary_key_name)}:#{reflection.name}"
|
36
36
|
expire_cached_value(key)
|
37
37
|
end
|
38
38
|
end
|
@@ -60,7 +60,7 @@ ActiveRecord::Associations::ClassMethods.class_eval do
|
|
60
60
|
retval = assoc.reload
|
61
61
|
association = retval.nil? ? nil : assoc
|
62
62
|
else
|
63
|
-
key = "
|
63
|
+
key = "CachedSupermodel:#{self.class.name}:#{self.id}:#{reflection.name}"
|
64
64
|
expire_cached_value(key) if force_reload
|
65
65
|
association = cache_value(key) do
|
66
66
|
assoc = association_proxy_class.new(self.remove_associations, reflection)
|
@@ -164,7 +164,7 @@ ActiveRecord::Associations::ClassMethods.class_eval do
|
|
164
164
|
type_field = invalidating_reflection.primary_key_name.gsub(/_id$/, '_type')
|
165
165
|
expire_proc = Proc.new do |instance|
|
166
166
|
if instance.send(type_field) == our_name
|
167
|
-
key = "
|
167
|
+
key = "CachedSupermodel:#{our_name}:#{instance.send(invalidating_reflection.primary_key_name)}:#{reflection.name}"
|
168
168
|
expire_cached_value(key)
|
169
169
|
key << ":cached_count"
|
170
170
|
expire_cached_value(key)
|
@@ -175,7 +175,7 @@ ActiveRecord::Associations::ClassMethods.class_eval do
|
|
175
175
|
# Non-polymorphic associations just invalidate their object regardless.
|
176
176
|
#
|
177
177
|
expire_proc = Proc.new do |instance|
|
178
|
-
key = "
|
178
|
+
key = "CachedSupermodel:#{our_name}:#{instance.send(invalidating_reflection.primary_key_name)}:#{reflection.name}"
|
179
179
|
expire_cached_value(key)
|
180
180
|
key << ":cached_count"
|
181
181
|
expire_cached_value(key)
|
@@ -196,7 +196,7 @@ ActiveRecord::Associations::ClassMethods.class_eval do
|
|
196
196
|
#
|
197
197
|
write_inheritable_array("before_remove_for_#{reflection.name}".to_sym,
|
198
198
|
[Proc.new do |owner, record|
|
199
|
-
key = "
|
199
|
+
key = "CachedSupermodel:#{owner.class.name}:#{owner.id}:#{reflection.name}"
|
200
200
|
expire_cached_value(key)
|
201
201
|
key << ":cached_count"
|
202
202
|
expire_cached_value(key)
|
@@ -204,7 +204,7 @@ ActiveRecord::Associations::ClassMethods.class_eval do
|
|
204
204
|
|
205
205
|
class_eval "
|
206
206
|
def self.#{reflection.name}_cached_count_for(oid)
|
207
|
-
key = self.name + ':' + oid.to_s + ':#{reflection.name}:cached_count'
|
207
|
+
key = 'CachedSupermodel:' + self.name + ':' + oid.to_s + ':#{reflection.name}:cached_count'
|
208
208
|
cache_value(key) do
|
209
209
|
self.find(oid).#{reflection.name}_cached_count
|
210
210
|
end
|
@@ -215,7 +215,7 @@ end
|
|
215
215
|
# The getter for the cached count of this association.
|
216
216
|
#
|
217
217
|
define_method("#{reflection.name}_cached_count") do |*params|
|
218
|
-
key = "
|
218
|
+
key = "CachedSupermodel:#{self.class.name}:#{self.id}:#{reflection.name}:cached_count"
|
219
219
|
cache_value(key) do
|
220
220
|
association_proxy_class.new(self.remove_associations, reflection).count
|
221
221
|
end
|
@@ -232,7 +232,7 @@ end
|
|
232
232
|
if new_record?
|
233
233
|
association = association_proxy_class.new(self, reflection)
|
234
234
|
else
|
235
|
-
key = "
|
235
|
+
key = "CachedSupermodel:#{self.class.name}:#{self.id}:#{reflection.name}"
|
236
236
|
expire_cached_value(key) if force_reload
|
237
237
|
association = cache_value(key) do
|
238
238
|
a = association_proxy_class.new(self.remove_associations, reflection)
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: CachedSupermodel
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2006-11-
|
6
|
+
version: 0.1.1
|
7
|
+
date: 2006-11-23 00:00:00 +01:00
|
8
8
|
summary: A library that automatically caches all ActiveRecord::Base instances in memcache using the AdoccaMemcache gem.
|
9
9
|
require_paths:
|
10
10
|
- lib
|