redis_object 1.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.
Files changed (103) hide show
  1. data/.coveralls.yml +1 -0
  2. data/.gitignore +2 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +4 -0
  5. data/README.markdown +24 -15
  6. data/Rakefile +8 -0
  7. data/lib/redis_object.rb +11 -1
  8. data/lib/redis_object/base.rb +210 -60
  9. data/lib/redis_object/collection.rb +130 -100
  10. data/lib/redis_object/defaults.rb +21 -8
  11. data/lib/redis_object/{history.rb → experimental/history.rb} +0 -0
  12. data/lib/redis_object/ext/filters.rb +34 -16
  13. data/lib/redis_object/ext/script_cache.rb +92 -0
  14. data/lib/redis_object/ext/shardable.rb +18 -0
  15. data/lib/redis_object/ext/triggers.rb +75 -13
  16. data/lib/redis_object/ext/view_caching.rb +258 -0
  17. data/lib/redis_object/ext/views.rb +102 -0
  18. data/lib/redis_object/indices.rb +44 -39
  19. data/lib/redis_object/inheritance_tracking.rb +23 -0
  20. data/lib/redis_object/keys.rb +4 -4
  21. data/lib/redis_object/storage.rb +30 -1
  22. data/lib/redis_object/storage/adapter.rb +6 -3
  23. data/lib/redis_object/storage/redis.rb +98 -3
  24. data/lib/redis_object/timestamps.rb +42 -21
  25. data/lib/redis_object/types.rb +172 -30
  26. data/lib/redis_object/version.rb +1 -1
  27. data/redis_object.gemspec +1 -0
  28. data/spec/adapter_spec.rb +43 -0
  29. data/spec/base_spec.rb +41 -6
  30. data/spec/benchmark_spec.rb +46 -0
  31. data/spec/collections_spec.rb +144 -0
  32. data/spec/defaults_spec.rb +56 -0
  33. data/spec/filters_spec.rb +29 -0
  34. data/spec/indices_spec.rb +45 -0
  35. data/spec/rename_class_spec.rb +96 -0
  36. data/spec/spec_helper.rb +32 -1
  37. data/spec/timestamp_spec.rb +28 -0
  38. data/spec/trigger_spec.rb +51 -0
  39. data/spec/types_spec.rb +103 -0
  40. data/spec/view_caching_spec.rb +130 -0
  41. data/spec/views_spec.rb +72 -0
  42. metadata +111 -116
  43. data/doc/Object.html +0 -185
  44. data/doc/Seabright.html +0 -181
  45. data/doc/Seabright/Adapter.html +0 -442
  46. data/doc/Seabright/Collection.html +0 -797
  47. data/doc/Seabright/Collections.html +0 -635
  48. data/doc/Seabright/Collections/ClassMethods.html +0 -212
  49. data/doc/Seabright/ExternalIndex.html +0 -217
  50. data/doc/Seabright/History.html +0 -382
  51. data/doc/Seabright/History/ClassMethods.html +0 -276
  52. data/doc/Seabright/Indices.html +0 -324
  53. data/doc/Seabright/Indices/ClassMethods.html +0 -348
  54. data/doc/Seabright/Keys.html +0 -314
  55. data/doc/Seabright/Keys/ClassMethods.html +0 -276
  56. data/doc/Seabright/ObjectBase.html +0 -852
  57. data/doc/Seabright/ObjectBase/ClassMethods.html +0 -677
  58. data/doc/Seabright/RedisObject.html +0 -230
  59. data/doc/Seabright/References.html +0 -280
  60. data/doc/Seabright/Storage.html +0 -252
  61. data/doc/Seabright/Storage/ClassMethods.html +0 -276
  62. data/doc/Seabright/Storage/MySQL.html +0 -442
  63. data/doc/Seabright/Storage/Redis.html +0 -218
  64. data/doc/Seabright/Template.html +0 -212
  65. data/doc/Seabright/Template/ClassMethods.html +0 -166
  66. data/doc/Seabright/Timestamps.html +0 -292
  67. data/doc/Seabright/Timestamps/ClassMethods.html +0 -214
  68. data/doc/Seabright/Types.html +0 -410
  69. data/doc/Seabright/Types/ClassMethods.html +0 -308
  70. data/doc/created.rid +0 -17
  71. data/doc/images/add.png +0 -0
  72. data/doc/images/brick.png +0 -0
  73. data/doc/images/brick_link.png +0 -0
  74. data/doc/images/bug.png +0 -0
  75. data/doc/images/bullet_black.png +0 -0
  76. data/doc/images/bullet_toggle_minus.png +0 -0
  77. data/doc/images/bullet_toggle_plus.png +0 -0
  78. data/doc/images/date.png +0 -0
  79. data/doc/images/delete.png +0 -0
  80. data/doc/images/find.png +0 -0
  81. data/doc/images/loadingAnimation.gif +0 -0
  82. data/doc/images/macFFBgHack.png +0 -0
  83. data/doc/images/package.png +0 -0
  84. data/doc/images/page_green.png +0 -0
  85. data/doc/images/page_white_text.png +0 -0
  86. data/doc/images/page_white_width.png +0 -0
  87. data/doc/images/plugin.png +0 -0
  88. data/doc/images/ruby.png +0 -0
  89. data/doc/images/tag_blue.png +0 -0
  90. data/doc/images/tag_green.png +0 -0
  91. data/doc/images/transparent.png +0 -0
  92. data/doc/images/wrench.png +0 -0
  93. data/doc/images/wrench_orange.png +0 -0
  94. data/doc/images/zoom.png +0 -0
  95. data/doc/index.html +0 -125
  96. data/doc/js/darkfish.js +0 -153
  97. data/doc/js/jquery.js +0 -18
  98. data/doc/js/navigation.js +0 -142
  99. data/doc/js/search.js +0 -94
  100. data/doc/js/search_index.js +0 -1
  101. data/doc/js/searcher.js +0 -228
  102. data/doc/rdoc.css +0 -543
  103. data/doc/table_of_contents.html +0 -394
@@ -0,0 +1,28 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ module TriggerSpec
4
+
5
+ class TimestampedObject < RedisObject;end
6
+
7
+ class UnTimestampedObject < RedisObject
8
+ # time_matters_not!
9
+ end
10
+
11
+ describe Seabright::Triggers do
12
+ before do
13
+ RedisObject.store.flushdb
14
+ end
15
+
16
+ it "should get recently created object" do
17
+
18
+ (1..5).each do |n|
19
+ TimestampedObject.create(n.to_s)
20
+ sleep Random.rand(1.0)
21
+ end
22
+
23
+ TimestampedObject.recently_created.first.id.should eq("5")
24
+
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,51 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ module TriggerSpec
4
+
5
+ class TriggeredObject < RedisObject
6
+
7
+ int :raw_phone
8
+ bool :mailed_flag
9
+ bool :mail_was_sent_for_realz
10
+ date :srsly_updated
11
+
12
+ def track_phone_raw(k,v)
13
+ set(:raw_phone, v.gsub(/[^0-9]/,'').to_i)
14
+ end
15
+
16
+ trigger_on_set :phone, :track_phone_raw
17
+
18
+ def sent_mail(k,v)
19
+ set(:mail_was_sent_for_realz, true)
20
+ end
21
+
22
+ def updated_redundant(k,v)
23
+ set(:srsly_updated, Time.now)
24
+ end
25
+
26
+ trigger_on_set :mailed_flag, :sent_mail
27
+ trigger_on_update :updated_redundant
28
+
29
+ end
30
+
31
+ describe Seabright::Triggers do
32
+ before do
33
+ RedisObject.store.flushdb
34
+ end
35
+
36
+ it "triggers on a call" do
37
+
38
+ obj = TriggeredObject.create("trig")
39
+
40
+ obj.phone = "(970) 555-1212"
41
+ obj.raw_phone.should eq(9705551212)
42
+ success = obj.setnx(:mailed_flag,true)
43
+ success.should eq(true)
44
+ obj.mail_was_sent_for_realz.should eq(true)
45
+ success = obj.setnx(:mailed_flag,true)
46
+ success.should eq(false)
47
+
48
+ end
49
+
50
+ end
51
+ end
@@ -0,0 +1,103 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ module TypeSpec
4
+
5
+ TestValues = {
6
+ date: Date.today,
7
+ number: 27,
8
+ int: 356192,
9
+ float: 72.362517,
10
+ bool: true,
11
+ boolean: false,
12
+ array: ["test1","test2"],
13
+ json: {test1: true, test2: "false"}
14
+ }
15
+
16
+ TestData = TestValues.inject({}){|acc,(k,v)| acc["a_#{k}".to_sym] = v; acc }
17
+
18
+ class TypedObject < RedisObject
19
+ TestValues.keys.each do |type|
20
+ send(type.to_sym,"a_#{type}".to_sym)
21
+ end
22
+ end
23
+
24
+ class TypedChild < TypedObject; end
25
+
26
+ describe Seabright::Types do
27
+ before do
28
+ RedisObject.store.flushdb
29
+ end
30
+
31
+ it "can be created via data packet" do
32
+
33
+ obj = TypedObject.create(TestData)
34
+
35
+ TestData.each do |k,v|
36
+ obj.get(k).should eq(v)
37
+ end
38
+
39
+ end
40
+
41
+ it "inherits types" do
42
+
43
+ obj = TypedChild.create(TestData)
44
+
45
+ TestData.each do |k,v|
46
+ obj.get(k).should eq(v)
47
+ end
48
+
49
+ end
50
+
51
+ it "can be instantiated (new) via data packet" do
52
+
53
+ obj = TypedObject.new(TestData)
54
+
55
+ TestData.each do |k,v|
56
+ obj.get(k).should eq(v)
57
+ end
58
+
59
+ end
60
+
61
+ it "can be created via individual sets" do
62
+
63
+ obj = TypedObject.new
64
+
65
+ TestData.each do |k,v|
66
+ obj.set(k,v)
67
+ obj.get(k).should eq(v)
68
+ end
69
+
70
+ end
71
+
72
+ it "gets correct values after being found" do
73
+
74
+ objc = TypedObject.create(TestData)
75
+ obj = TypedObject.find(objc.id)
76
+
77
+ TestData.each do |k,v|
78
+ obj.get(k).should eq(v)
79
+ end
80
+
81
+ end
82
+
83
+ it "nullifies non-date date value" do
84
+
85
+ obj = TypedObject.new
86
+
87
+ obj.a_date = "sjahfgasjfg"
88
+ obj.a_date.should eq(nil)
89
+
90
+ end
91
+
92
+ it "describes itself" do
93
+
94
+ obj = TypedObject.create(TestData)
95
+ objc = TypedChild.create(TestData)
96
+
97
+ desc = TypedObject.describe
98
+ TypedObject.dump_schema(File.open("/tmp/redisobject_dump_test","w"))
99
+
100
+ end
101
+
102
+ end
103
+ end
@@ -0,0 +1,130 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ module ViewCachingSpec
4
+
5
+ TestValues = {
6
+ date: Date.today,
7
+ number: 27,
8
+ int: 356192,
9
+ float: 72.362517,
10
+ bool: true,
11
+ # boolean: false,
12
+ # array: [:test1,:test2],
13
+ json: {test1: true, test2: "false"}
14
+ }
15
+
16
+ TestData = TestValues.inject({}){|acc,(k,v)| acc["a_#{k}".to_sym] = v; acc }
17
+
18
+ class TypedObject < RedisObject
19
+
20
+ named_view :miss_json, :a_number
21
+ named_view :aggregated, :a_float, :a_bool, :aggregate
22
+ cache_view :aggregated
23
+ cache_view :miss_json
24
+
25
+ TestValues.keys.each do |type|
26
+ send(type.to_sym,"a_#{type}".to_sym)
27
+ end
28
+
29
+ def aggregate
30
+ a_number + a_int
31
+ end
32
+
33
+ end
34
+
35
+ class Container < RedisObject
36
+
37
+ invalidate_downstream :TypedObject
38
+
39
+ end
40
+
41
+ class Baby < RedisObject
42
+
43
+ invalidate_upstream :TypedObject
44
+
45
+ end
46
+
47
+ describe Seabright::ViewCaching do
48
+
49
+ before do
50
+ RedisObject.store.flushdb
51
+ @obj = TypedObject.create(TestData)
52
+ @dad = Container.create("daddy")
53
+ @dad << @obj
54
+ @baby = Baby.create("mama")
55
+ @obj << @baby
56
+ end
57
+
58
+ it "generates view" do
59
+
60
+ @obj.view_as_hash(:aggregated).should be_a(Hash)
61
+ @obj.view_as_json(:aggregated).should be_a(String)
62
+
63
+ end
64
+
65
+ it "gets cached view on second access" do
66
+
67
+ @obj.view_as_hash(:aggregated).should be_a(Hash)
68
+ @obj.view_as_json(:aggregated).should be_a(String)
69
+ @obj.view_is_cached?(:aggregated).should eq(true)
70
+ @obj.view_as_hash(:aggregated).should be_a(Hash)
71
+ @obj.view_as_json(:aggregated).should be_a(String)
72
+
73
+ @obj.view_as_json(:miss_json).should be_a(String)
74
+
75
+ end
76
+
77
+ it "generates view" do
78
+
79
+ @obj.regenerate_cached_views!
80
+ @obj.view_is_cached?(:aggregated).should eq(true)
81
+
82
+ end
83
+
84
+ it "caches are invalidated" do
85
+
86
+ @obj.view_as_hash(:aggregated).should be_a(Hash)
87
+
88
+ @obj.view_is_cached?(:aggregated).should eq(true)
89
+
90
+ @obj.invalidate_cached_views!
91
+
92
+ @obj.view_is_cached?(:aggregated).should eq(false)
93
+
94
+ @obj.view_as_hash(:aggregated).should be_a(Hash)
95
+
96
+ @obj.view_is_cached?(:aggregated).should eq(true)
97
+
98
+ @obj.set(:demolisher, "smash")
99
+ #
100
+ # @obj.view_is_cached?(:aggregated).should eq(false)
101
+
102
+
103
+ end
104
+
105
+ it "invalidates up/down stream" do
106
+
107
+ @obj.view_as_hash(:aggregated).should be_a(Hash)
108
+
109
+ @obj.view_is_cached?(:aggregated).should eq(true)
110
+
111
+ @baby.set(:demolisher, "smash")
112
+
113
+ # sleep 1
114
+ #
115
+ # TypedObject.find(@obj.id).view_is_cached?(:aggregated).should eq(false)
116
+
117
+ @obj.view_as_hash(:aggregated).should be_a(Hash)
118
+
119
+ @obj.view_is_cached?(:aggregated).should eq(true)
120
+
121
+ @dad.set(:demolisher, "smash")
122
+
123
+ # sleep 1
124
+ #
125
+ # TypedObject.find(@obj.id).view_is_cached?(:aggregated).should eq(false)
126
+
127
+ end
128
+
129
+ end
130
+ end
@@ -0,0 +1,72 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ module ViewSpec
4
+
5
+ TestValues = {
6
+ date: Date.today,
7
+ number: 27,
8
+ int: 356192,
9
+ float: 72.362517,
10
+ bool: true
11
+ }
12
+
13
+ TestData = TestValues.inject({}){|acc,(k,v)| acc["a_#{k}".to_sym] = v; acc }
14
+
15
+ class ViewedObject < RedisObject
16
+
17
+ named_view :bare, :a_float, :a_bool
18
+ named_view :aggregated, :a_float, :a_bool, :aggregate
19
+ named_view :aggregated_only, :method => :aggregate
20
+ named_view :proc, {:lambda => Proc.new {|o| o.get(:a_bool) } }, :aggregate
21
+ named_view :hashy, {:hesher => :a_number }, :aggregate
22
+
23
+ TestValues.keys.each do |type|
24
+ send(type.to_sym,"a_#{type}".to_sym)
25
+ end
26
+
27
+ def aggregate
28
+ a_number + a_int
29
+ end
30
+
31
+ end
32
+
33
+ describe Seabright::Views do
34
+
35
+ before do
36
+ RedisObject.store.flushdb
37
+ @obj = ViewedObject.create(TestData)
38
+ end
39
+
40
+ it "generates view" do
41
+
42
+ @obj.view_as_hash(:bare).should be_a(Hash)
43
+ @obj.view_as_json(:bare).should be_a(String)
44
+
45
+ end
46
+
47
+ it "generates mthod-only view" do
48
+
49
+ @obj.view_as_hash(:aggregated_only).should be_a(Fixnum)
50
+
51
+ end
52
+
53
+ it "views methods properly" do
54
+
55
+ @obj.view_as_hash(:aggregated)["aggregate"].should eq(TestData[:a_number] + TestData[:a_int])
56
+
57
+ end
58
+
59
+ it "executes procs within view" do
60
+
61
+ @obj.view_as_json(:proc).should be_a(String)
62
+
63
+ end
64
+
65
+ it "generates hashes within view" do
66
+
67
+ @obj.view_as_hash(:hashy).should be_a(Hash)
68
+
69
+ end
70
+
71
+ end
72
+ end
metadata CHANGED
@@ -1,136 +1,109 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: redis_object
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.1'
4
5
  prerelease:
5
- version: "1.0"
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - John Bragg
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-12-15 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: redis
12
+ date: 2013-06-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: utf8_utils
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
17
23
  prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
19
25
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: redis
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
24
38
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: yajl-ruby
28
39
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
30
41
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: yajl-ruby
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
35
54
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: activesupport
39
55
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: activesupport
64
+ requirement: !ruby/object:Gem::Requirement
41
65
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
46
70
  type: :runtime
47
- version_requirements: *id003
48
- description: ""
49
- email:
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: ''
79
+ email:
50
80
  - john@seabrightstudios.com
51
81
  executables: []
52
-
53
82
  extensions: []
54
-
55
83
  extra_rdoc_files: []
56
-
57
- files:
84
+ files:
85
+ - .coveralls.yml
58
86
  - .gitignore
87
+ - .travis.yml
59
88
  - Gemfile
60
89
  - README.markdown
61
90
  - Rakefile
62
- - doc/Object.html
63
- - doc/Seabright.html
64
- - doc/Seabright/Adapter.html
65
- - doc/Seabright/Collection.html
66
- - doc/Seabright/Collections.html
67
- - doc/Seabright/Collections/ClassMethods.html
68
- - doc/Seabright/ExternalIndex.html
69
- - doc/Seabright/History.html
70
- - doc/Seabright/History/ClassMethods.html
71
- - doc/Seabright/Indices.html
72
- - doc/Seabright/Indices/ClassMethods.html
73
- - doc/Seabright/Keys.html
74
- - doc/Seabright/Keys/ClassMethods.html
75
- - doc/Seabright/ObjectBase.html
76
- - doc/Seabright/ObjectBase/ClassMethods.html
77
- - doc/Seabright/RedisObject.html
78
- - doc/Seabright/References.html
79
- - doc/Seabright/Storage.html
80
- - doc/Seabright/Storage/ClassMethods.html
81
- - doc/Seabright/Storage/MySQL.html
82
- - doc/Seabright/Storage/Redis.html
83
- - doc/Seabright/Template.html
84
- - doc/Seabright/Template/ClassMethods.html
85
- - doc/Seabright/Timestamps.html
86
- - doc/Seabright/Timestamps/ClassMethods.html
87
- - doc/Seabright/Types.html
88
- - doc/Seabright/Types/ClassMethods.html
89
- - doc/created.rid
90
- - doc/images/add.png
91
- - doc/images/brick.png
92
- - doc/images/brick_link.png
93
- - doc/images/bug.png
94
- - doc/images/bullet_black.png
95
- - doc/images/bullet_toggle_minus.png
96
- - doc/images/bullet_toggle_plus.png
97
- - doc/images/date.png
98
- - doc/images/delete.png
99
- - doc/images/find.png
100
- - doc/images/loadingAnimation.gif
101
- - doc/images/macFFBgHack.png
102
- - doc/images/package.png
103
- - doc/images/page_green.png
104
- - doc/images/page_white_text.png
105
- - doc/images/page_white_width.png
106
- - doc/images/plugin.png
107
- - doc/images/ruby.png
108
- - doc/images/tag_blue.png
109
- - doc/images/tag_green.png
110
- - doc/images/transparent.png
111
- - doc/images/wrench.png
112
- - doc/images/wrench_orange.png
113
- - doc/images/zoom.png
114
- - doc/index.html
115
- - doc/js/darkfish.js
116
- - doc/js/jquery.js
117
- - doc/js/navigation.js
118
- - doc/js/search.js
119
- - doc/js/search_index.js
120
- - doc/js/searcher.js
121
- - doc/rdoc.css
122
- - doc/table_of_contents.html
123
91
  - lib/redis_object.rb
124
92
  - lib/redis_object/base.rb
125
93
  - lib/redis_object/collection.rb
126
94
  - lib/redis_object/defaults.rb
95
+ - lib/redis_object/experimental/history.rb
127
96
  - lib/redis_object/ext/benchmark.rb
128
97
  - lib/redis_object/ext/cleaner.rb
129
98
  - lib/redis_object/ext/filters.rb
99
+ - lib/redis_object/ext/script_cache.rb
100
+ - lib/redis_object/ext/shardable.rb
130
101
  - lib/redis_object/ext/triggers.rb
102
+ - lib/redis_object/ext/view_caching.rb
103
+ - lib/redis_object/ext/views.rb
131
104
  - lib/redis_object/external_index.rb
132
- - lib/redis_object/history.rb
133
105
  - lib/redis_object/indices.rb
106
+ - lib/redis_object/inheritance_tracking.rb
134
107
  - lib/redis_object/keys.rb
135
108
  - lib/redis_object/storage.rb
136
109
  - lib/redis_object/storage/adapter.rb
@@ -143,35 +116,57 @@ files:
143
116
  - lib/redis_object/validation.rb
144
117
  - lib/redis_object/version.rb
145
118
  - redis_object.gemspec
119
+ - spec/adapter_spec.rb
146
120
  - spec/base_spec.rb
121
+ - spec/benchmark_spec.rb
122
+ - spec/collections_spec.rb
123
+ - spec/defaults_spec.rb
124
+ - spec/filters_spec.rb
125
+ - spec/indices_spec.rb
126
+ - spec/rename_class_spec.rb
147
127
  - spec/spec_helper.rb
148
- homepage: ""
128
+ - spec/timestamp_spec.rb
129
+ - spec/trigger_spec.rb
130
+ - spec/types_spec.rb
131
+ - spec/view_caching_spec.rb
132
+ - spec/views_spec.rb
133
+ homepage: ''
149
134
  licenses: []
150
-
151
135
  post_install_message:
152
136
  rdoc_options: []
153
-
154
- require_paths:
137
+ require_paths:
155
138
  - lib
156
- required_ruby_version: !ruby/object:Gem::Requirement
139
+ required_ruby_version: !ruby/object:Gem::Requirement
157
140
  none: false
158
- requirements:
159
- - - ">="
160
- - !ruby/object:Gem::Version
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
161
144
  version: 1.9.2
162
- required_rubygems_version: !ruby/object:Gem::Requirement
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
163
146
  none: false
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: "0"
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
168
151
  requirements: []
169
-
170
152
  rubyforge_project: redis_object
171
- rubygems_version: 1.8.24
153
+ rubygems_version: 1.8.23
172
154
  signing_key:
173
155
  specification_version: 3
174
- summary: Maps arbitrary objects to a Redis store with indices and smart retrieval and storage mechanisms.
175
- test_files:
156
+ summary: Maps arbitrary objects to a Redis store with indices and smart retrieval
157
+ and storage mechanisms.
158
+ test_files:
159
+ - spec/adapter_spec.rb
176
160
  - spec/base_spec.rb
161
+ - spec/benchmark_spec.rb
162
+ - spec/collections_spec.rb
163
+ - spec/defaults_spec.rb
164
+ - spec/filters_spec.rb
165
+ - spec/indices_spec.rb
166
+ - spec/rename_class_spec.rb
177
167
  - spec/spec_helper.rb
168
+ - spec/timestamp_spec.rb
169
+ - spec/trigger_spec.rb
170
+ - spec/types_spec.rb
171
+ - spec/view_caching_spec.rb
172
+ - spec/views_spec.rb