redrecord 0.6 → 0.7

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/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: []