redrecord 0.6 → 0.7

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v0.7. Fix for inherited ActiveRecord classes and cache verify function bug
2
+
1
3
  v0.6. Don't bother marshalling when storing integers
2
4
 
3
5
  v0.5. Support cache verify method
@@ -46,11 +46,11 @@ class Redrecord
46
46
  module ClassMethods
47
47
 
48
48
  def redrecord_cached_fields
49
- @redrecord_cached_fields ||= []
49
+ @redrecord_cached_fields ||= [] + (superclass.respond_to?(:redrecord_cached_fields) ? [*superclass.redrecord_cached_fields] : [])
50
50
  end
51
51
 
52
52
  def redrecord_invalidation_fields
53
- @redrecord_invalidation_fields ||= []
53
+ @redrecord_invalidation_fields ||= [] + (superclass.respond_to?(:redrecord_invalidation_fields) ? [*superclass.redrecord_invalidation_fields] : [])
54
54
  end
55
55
 
56
56
  def redis_cache(*fields, &bl)
@@ -59,6 +59,7 @@ class Redrecord
59
59
  class_eval(&bl)
60
60
  fields.push(*(instance_methods - old_methods))
61
61
  end
62
+ fields = fields.select {|f| instance_method(f).arity < 1 }
62
63
  redrecord_cached_fields.push(*fields)
63
64
  fields.each do |f|
64
65
  aliased_target, punctuation = f.to_s.sub(/([?!=])$/, ''), $1
@@ -140,8 +141,9 @@ class Redrecord
140
141
  def verify_cache!
141
142
  (redis_cached_keys = Redrecord.redis_op(:hkeys, redrecord_key)) && redis_cached_keys.each do |key|
142
143
  calculated = redrecord_uncached_value(key)
143
- if(redrecord_cached_attrib_hash[key] != calculated)
144
- raise "#{redrecord_key}.#{key}: expected <#{calculated}> but got <#{redrecord_cached_attrib_hash[key]}> from redis cache"
144
+ cachedval = Redrecord.unmarshal(Redrecord.redis_op(:hget, redrecord_key, key))
145
+ if(calculated != cachedval)
146
+ raise "#{redrecord_key}.#{key}: expected <#{calculated}> but got <#{cachedval}> from redis cache"
145
147
  end
146
148
  end
147
149
  end
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "redrecord"
5
- s.version = "0.6"
5
+ s.version = "0.7"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Andrew Snow"]
9
- s.date = "2012-02-08"
9
+ s.date = "2012-02-17"
10
10
  s.description = "Redis cacheing for ActiveRecord"
11
11
  s.email = "andrew@modulus.org"
12
12
  s.extra_rdoc_files = ["CHANGELOG", "README", "lib/redrecord.rb"]
@@ -158,5 +158,11 @@ class TestRedrecord < Test::Unit::TestCase
158
158
  @user.verify_cache!
159
159
  end
160
160
  end
161
+
162
+ def test_inherited_invalidations
163
+ assert_equal [:user], TestGroup.redrecord_invalidation_fields
164
+ assert_equal [:user], TestDeepGroup.redrecord_invalidation_fields
165
+ assert_equal [], TestModel.redrecord_invalidation_fields
166
+ end
161
167
 
162
168
  end
@@ -48,6 +48,9 @@ class TestGroup < TestModel
48
48
  invalidate_cache_on :user
49
49
  end
50
50
 
51
+ class TestDeepGroup < TestGroup
52
+ end
53
+
51
54
  class TestUser < TestModel
52
55
  attr_accessor :first_name, :last_name, :id, :recalculated
53
56
  def initialize(id, first_name=nil, last_name=nil)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redrecord
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.6'
4
+ version: '0.7'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-08 00:00:00.000000000 Z
12
+ date: 2012-02-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
16
- requirement: &73055740 !ruby/object:Gem::Requirement
16
+ requirement: &82176900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *73055740
24
+ version_requirements: *82176900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: active_model
27
- requirement: &73054380 !ruby/object:Gem::Requirement
27
+ requirement: &82311130 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *73054380
35
+ version_requirements: *82311130
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: active_support
38
- requirement: &73053190 !ruby/object:Gem::Requirement
38
+ requirement: &82310630 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *73053190
46
+ version_requirements: *82310630
47
47
  description: Redis cacheing for ActiveRecord
48
48
  email: andrew@modulus.org
49
49
  executables: []