redis_orm 0.2 → 0.3

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,8 @@
1
+ v0.3 [06-06-2011]
2
+ * fixed #find functionality both for model itself and for has_many proxy
3
+ * made sure ORM correctly resets associations when nil/[] provided
4
+ * improved documentation, test for has_many proxy methods :+= and :<< added
5
+
1
6
  v0.2 [04-06-2011]
2
7
  * added polymorphic association
3
8
  * added *timestamps* declaration for the model
data/README.md CHANGED
@@ -87,7 +87,15 @@ For example we associate 2 photos with the album
87
87
  @album.photos << @photo1
88
88
  ```
89
89
 
90
- To extract all or part of the associated records by far you could use 3 options (#find is an alias for #all in has_many proxy):
90
+ To extract all or part of the associated records you could use 3 options for now (#find is an alias for #all in has_many proxy):
91
+
92
+ * :limit
93
+
94
+ * :offset
95
+
96
+ * :order
97
+
98
+ Either :desc or :asc (default), since records are stored with Time.now.to_f scores, be default they could be fetched only in that (or reversed) order. To store them in different order you should *zadd* record's id to some other sorted list manually.
91
99
 
92
100
  ```ruby
93
101
  @album.photos.all(:limit => 0, :offset => 0).should == []
@@ -295,6 +303,32 @@ All associations supports following options:
295
303
 
296
304
  Symbol could be either :destroy or :nullify (default value)
297
305
 
306
+ ### Clearing/reseting associations
307
+
308
+ You could clear/reset associations by assigning appropriately nil/[] to it:
309
+
310
+ ```ruby
311
+ # has_many association
312
+ @article.comments << [@comment1, @comment2]
313
+ @article.comments.count # => 2
314
+ @comment1.article # => @article
315
+
316
+ # clear
317
+ @article.comments = []
318
+ @article.comments.count # => 0
319
+ @comment1.article # => nil
320
+
321
+ # belongs_to (same for has_one)
322
+ @article.comments << [@comment1, @comment2]
323
+ @article.comments.count # => 2
324
+ @comment1.article # => @article
325
+
326
+ # clear
327
+ @comment1.article = nil
328
+ @article.comments.count # => 1
329
+ @comment1.article # => nil
330
+ ```
331
+
298
332
  For more examples please check test/associations_test.rb and test/polymorphic_test.rb
299
333
 
300
334
  ## Validation
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rake'
3
3
 
4
4
  require 'echoe'
5
5
 
6
- Echoe.new('redis_orm', '0.2') do |p|
6
+ Echoe.new('redis_orm', '0.3') do |p|
7
7
  p.description = "ORM for Redis advanced key-value storage"
8
8
  p.url = "https://github.com/german/redis_orm"
9
9
  p.author = "Dmitrii Samoilov"
@@ -34,34 +34,37 @@ module RedisOrm
34
34
  # look = Look.create :title => 'test'
35
35
  # look.user = User.find(1) => look:23:user => 1
36
36
  define_method "#{foreign_model_name}=" do |assoc_with_record|
37
- old_assoc = nil
37
+ # we need to store this to clear old association later
38
+ old_assoc = self.send(foreign_model_name)
38
39
 
39
40
  if options[:polymorphic]
40
- # we need to store this to clear old association later
41
- old_assoc = self.send(foreign_model_name)
42
41
  $redis.set("#{model_name}:#{id}:#{foreign_model_name}_type", assoc_with_record.model_name)
43
42
  $redis.set("#{model_name}:#{id}:#{foreign_model_name}_id", assoc_with_record.id)
44
43
  else
45
- if assoc_with_record.model_name == foreign_model.to_s
44
+ if assoc_with_record.nil?
45
+ $redis.del("#{model_name}:#{id}:#{foreign_model_name}")
46
+ elsif assoc_with_record.model_name == foreign_model.to_s
46
47
  $redis.set("#{model_name}:#{id}:#{foreign_model_name}", assoc_with_record.id)
47
48
  else
48
49
  raise TypeMismatchError
49
50
  end
50
51
  end
51
52
 
52
- # check whether *assoc_with_record* object has *has_many* declaration and TODO it states *self.model_name* in plural and there is no record yet from the *assoc_with_record*'s side (in order not to provoke recursion)
53
- if class_associations[assoc_with_record.model_name].detect{|h| h[:type] == :has_many && h[:foreign_models] == model_name.pluralize.to_sym} && !$redis.zrank("#{assoc_with_record.model_name}:#{assoc_with_record.id}:#{model_name.pluralize}", self.id)
54
- # remove old assoc
55
- if old_assoc
56
- $redis.zrem "#{old_assoc.model_name}:#{old_assoc.id}:#{model_name.to_s.pluralize}", self.id
57
- end
58
-
59
- assoc_with_record.send(model_name.pluralize.to_sym).send(:"<<", self)
53
+ if assoc_with_record.nil?
54
+ # remove old assoc
55
+ $redis.zrem("#{old_assoc.model_name}:#{old_assoc.id}:#{model_name.to_s.pluralize}", self.id) if old_assoc
56
+ else
57
+ # check whether *assoc_with_record* object has *has_many* declaration and TODO it states *self.model_name* in plural and there is no record yet from the *assoc_with_record*'s side (in order not to provoke recursion)
58
+ if class_associations[assoc_with_record.model_name].detect{|h| h[:type] == :has_many && h[:foreign_models] == model_name.pluralize.to_sym} && !$redis.zrank("#{assoc_with_record.model_name}:#{assoc_with_record.id}:#{model_name.pluralize}", self.id)
59
+ # remove old assoc
60
+ $redis.zrem("#{old_assoc.model_name}:#{old_assoc.id}:#{model_name.to_s.pluralize}", self.id) if old_assoc
61
+ assoc_with_record.send(model_name.pluralize.to_sym).send(:"<<", self)
60
62
 
61
- # check whether *assoc_with_record* object has *has_one* declaration and TODO it states *self.model_name* and there is no record yet from the *assoc_with_record*'s side (in order not to provoke recursion)
62
- elsif class_associations[assoc_with_record.model_name].detect{|h| h[:type] == :has_one && h[:foreign_model] == model_name.to_sym} && assoc_with_record.send(model_name.to_sym).nil?
63
- # old association is being rewritten here automatically so we don't have to worry about it
64
- assoc_with_record.send("#{model_name}=", self)
63
+ # check whether *assoc_with_record* object has *has_one* declaration and TODO it states *self.model_name* and there is no record yet from the *assoc_with_record*'s side (in order not to provoke recursion)
64
+ elsif class_associations[assoc_with_record.model_name].detect{|h| h[:type] == :has_one && h[:foreign_model] == model_name.to_sym} && assoc_with_record.send(model_name.to_sym).nil?
65
+ # old association is being rewritten here automatically so we don't have to worry about it
66
+ assoc_with_record.send("#{model_name}=", self)
67
+ end
65
68
  end
66
69
  end
67
70
  end
@@ -23,10 +23,22 @@ module RedisOrm
23
23
  define_method "#{foreign_models_name}=" do |records|
24
24
  if !options[:as]
25
25
  # clear old assocs from related models side
26
- self.send(foreign_models).to_a.each do |record|
27
- $redis.zrem "#{record.model_name}:#{record.id}:#{model_name.pluralize}", id
26
+ old_records = self.send(foreign_models).to_a
27
+ if !old_records.empty?
28
+ # cache here which association with current model have old record's model
29
+ has_many_assoc = old_records[0].get_associations.detect{|h| h[:type] == :has_many && h[:foreign_models] == model_name.pluralize.to_sym}
30
+
31
+ has_one_or_belongs_to_assoc = old_records[0].get_associations.detect{|h| [:has_one, :belongs_to].include?(h[:type]) && h[:foreign_model] == model_name.to_sym}
32
+
33
+ old_records.each do |record|
34
+ if has_many_assoc
35
+ $redis.zrem "#{record.model_name}:#{record.id}:#{model_name.pluralize}", id
36
+ elsif has_one_or_belongs_to_assoc
37
+ $redis.del "#{record.model_name}:#{record.id}:#{model_name}"
38
+ end
39
+ end
28
40
  end
29
-
41
+
30
42
  # clear old assocs from this model side
31
43
  $redis.zremrangebyscore "#{model_name}:#{id}:#{foreign_models}", 0, Time.now.to_f
32
44
  end
@@ -42,7 +54,8 @@ module RedisOrm
42
54
  if class_associations[record.model_name].detect{|h| h[:type] == :has_many && h[:foreign_models] == model_name.pluralize.to_sym} #&& !$redis.zrank("#{record.model_name}:#{record.id}:#{model_name.pluralize}", id)#record.model_name.to_s.camelize.constantize.find(id).nil?
43
55
  $redis.zadd("#{record.model_name}:#{record.id}:#{model_name.pluralize}", Time.now.to_f, id)
44
56
  # check whether *record* object has *has_one* declaration and TODO it states *self.model_name*
45
- elsif record.get_associations.detect{|h| [:has_one, :belongs_to].include?(h[:type]) && h[:foreign_model] == model_name.to_sym} # overwrite assoc anyway so we don't need to check record.send(model_name.to_sym).nil? here
57
+ elsif record.get_associations.detect{|h| [:has_one, :belongs_to].include?(h[:type]) && h[:foreign_model] == model_name.to_sym}
58
+ # overwrite assoc anyway so we don't need to check record.send(model_name.to_sym).nil? here
46
59
  $redis.set("#{record.model_name}:#{record.id}:#{model_name}", id)
47
60
  end
48
61
  end
@@ -19,6 +19,11 @@ module RedisOrm
19
19
  fetch if !@fetched
20
20
  @records[index]
21
21
  end
22
+
23
+ def to_a
24
+ fetch if !@fetched
25
+ @records
26
+ end
22
27
 
23
28
  # user = User.find(1)
24
29
  # user.avatars << Avatar.find(23) => user:1:avatars => [23]
@@ -55,10 +60,13 @@ module RedisOrm
55
60
  end
56
61
  end
57
62
  end
63
+
64
+ # return *self* here so calls could be chained
65
+ self
58
66
  end
59
67
 
60
68
  def all(options = {})
61
- if options[:limit] || options[:offset] || options[:order]
69
+ if options.is_a?(Hash) && (options[:limit] || options[:offset] || options[:order])
62
70
  limit = if options[:limit] && options[:offset]
63
71
  [options[:offset].to_i, options[:limit].to_i]
64
72
  elsif options[:limit]
@@ -90,7 +98,10 @@ module RedisOrm
90
98
  elsif token == :all
91
99
  all(options)
92
100
  elsif token == :first
93
- all(options.merge({:limit => 1}))
101
+ all(options.merge({:limit => 1}))[0]
102
+ elsif token == :last
103
+ reversed = options[:order] == 'asc' ? 'desc' : 'asc'
104
+ all(options.merge({:limit => 1, :order => reversed}))[0]
94
105
  end
95
106
  end
96
107
 
@@ -25,23 +25,28 @@ module RedisOrm
25
25
  # we need to store this to clear old associations later
26
26
  old_assoc = self.send(foreign_model_name)
27
27
 
28
- if assoc_with_record.model_name == foreign_model.to_s
28
+ if assoc_with_record.nil?
29
+ $redis.del("#{model_name}:#{id}:#{foreign_model_name}")
30
+ elsif assoc_with_record.model_name == foreign_model.to_s
29
31
  $redis.set("#{model_name}:#{id}:#{foreign_model_name}", assoc_with_record.id)
30
32
  else
31
33
  raise TypeMismatchError
32
34
  end
33
35
 
34
- # check whether *assoc_with_record* object has *belongs_to* declaration and TODO it states *self.model_name* and there is no record yet from the *assoc_with_record*'s side (in order not to provoke recursion)
35
- if class_associations[assoc_with_record.model_name].detect{|h| [:belongs_to, :has_one].include?(h[:type]) && h[:foreign_model] == model_name.to_sym} && assoc_with_record.send(model_name.to_sym).nil?
36
- # old association is being rewritten here automatically so we don't have to worry about it
37
- assoc_with_record.send("#{model_name}=", self)
38
- elsif class_associations[assoc_with_record.model_name].detect{|h| :has_many == h[:type] && h[:foreign_models] == model_name.to_s.pluralize.to_sym} && !$redis.zrank("#{assoc_with_record.model_name}:#{assoc_with_record.id}:#{model_name.pluralize}", self.id)
36
+ if assoc_with_record.nil?
39
37
  # remove old assoc
40
- if old_assoc
41
- $redis.zrem "#{assoc_with_record.model_name}:#{old_assoc.id}:#{model_name.to_s.pluralize}", self.id
38
+ $redis.zrem("#{old_assoc.model_name}:#{old_assoc.id}:#{model_name.to_s.pluralize}", id) if old_assoc
39
+ else
40
+ # check whether *assoc_with_record* object has *belongs_to* declaration and TODO it states *self.model_name* and there is no record yet from the *assoc_with_record*'s side (in order not to provoke recursion)
41
+ if class_associations[assoc_with_record.model_name].detect{|h| [:belongs_to, :has_one].include?(h[:type]) && h[:foreign_model] == model_name.to_sym} && assoc_with_record.send(model_name.to_sym).nil?
42
+ # old association is being rewritten here automatically so we don't have to worry about it
43
+ assoc_with_record.send("#{model_name}=", self)
44
+ elsif class_associations[assoc_with_record.model_name].detect{|h| :has_many == h[:type] && h[:foreign_models] == model_name.to_s.pluralize.to_sym} && !$redis.zrank("#{assoc_with_record.model_name}:#{assoc_with_record.id}:#{model_name.pluralize}", self.id)
45
+ # remove old assoc
46
+ $redis.zrem("#{old_assoc.model_name}:#{old_assoc.id}:#{model_name.to_s.pluralize}", id) if old_assoc
47
+ # create/add new ones
48
+ assoc_with_record.send(model_name.pluralize.to_sym).send(:"<<", self)
42
49
  end
43
- # create/add new ones
44
- assoc_with_record.send(model_name.pluralize.to_sym).send(:"<<", self)
45
50
  end
46
51
  end
47
52
  end
@@ -138,25 +138,35 @@ module RedisOrm
138
138
  end
139
139
  end
140
140
 
141
- def find(ids)
142
- if ids.is_a?(Hash)
143
- all(ids)
144
- elsif ids.is_a?(Array)
145
- return [] if ids.empty?
146
- ids.inject([]) do |array, id|
141
+ def find(*args)
142
+ if args.first.is_a?(Array)
143
+ return [] if args.first.empty?
144
+ args.first.inject([]) do |array, id|
147
145
  record = $redis.hgetall "#{model_name}:#{id}"
148
146
  if record && !record.empty?
149
147
  array << new(record, id, true)
150
148
  end
151
149
  end
152
150
  else
153
- return nil if ids.nil?
154
- id = ids
155
- record = $redis.hgetall "#{model_name}:#{id}"
156
- if record && record.empty?
157
- nil
158
- else
159
- new(record, id, true)
151
+ return nil if args.empty? || args.first.nil?
152
+ case first = args.shift
153
+ when :all
154
+ options = args.last
155
+ return nil if !options.is_a?(Hash)
156
+ all(options)
157
+ when :first
158
+ options = args.last
159
+ return nil if !options.is_a?(Hash)
160
+ all(options.merge({:limit => 1}))[0]
161
+ when :last
162
+ options = args.last
163
+ return nil if !options.is_a?(Hash)
164
+ reversed = options[:order] == 'asc' ? 'desc' : 'asc'
165
+ all(options.merge({:limit => 1, :order => reversed}))[0]
166
+ else
167
+ id = first
168
+ record = $redis.hgetall "#{model_name}:#{id}"
169
+ record && record.empty? ? nil : new(record, id, true)
160
170
  end
161
171
  end
162
172
  end
data/redis_orm.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{redis_orm}
5
- s.version = "0.2"
5
+ s.version = "0.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Dmitrii Samoilov"]
9
- s.date = %q{2011-06-04}
9
+ s.date = %q{2011-06-06}
10
10
  s.description = %q{ORM for Redis advanced key-value storage}
11
11
  s.email = %q{germaninthetown@gmail.com}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.md", "lib/redis_orm.rb", "lib/redis_orm/active_model_behavior.rb", "lib/redis_orm/associations/belongs_to.rb", "lib/redis_orm/associations/has_many.rb", "lib/redis_orm/associations/has_many_proxy.rb", "lib/redis_orm/associations/has_one.rb", "lib/redis_orm/redis_orm.rb"]
@@ -41,7 +41,7 @@ describe "check associations" do
41
41
  path_to_socket = File.dirname(File.expand_path(__FILE__)) + "/../redis.sock"
42
42
  $redis = Redis.new(:host => 'localhost', :path => path_to_socket)
43
43
  end
44
-
44
+
45
45
  before(:each) do
46
46
  $redis.flushall if $redis
47
47
  @article = Article.new
@@ -84,10 +84,44 @@ describe "check associations" do
84
84
  @comment2.article.id.should == @article.id
85
85
  @article.comments.count.should == 2
86
86
  @article.comments[0].id.should == @comment2.id
87
+ end
88
+
89
+ it "should correctly resets associations when nil/[] provided" do
90
+ # from has_many proxy side
91
+ @article.comments << [@comment1, @comment2]
92
+ @article.comments.count.should == 2
93
+ @comment1.article.id.should == @article.id
94
+ @comment2.article.id.should == @article.id
87
95
 
88
- #@comment1.article = nil
89
- #@article.comments.count.should == 1
90
- #@comment1.article.should == nil
96
+ # clear
97
+ @article.comments = []
98
+ @article.comments.count.should == 0
99
+ @comment1.article.should == nil
100
+ @comment2.article.should == nil
101
+
102
+ # from belongs_to side
103
+ @article.comments << [@comment1, @comment2]
104
+ @article.comments.count.should == 2
105
+ @comment1.article.id.should == @article.id
106
+
107
+ # clear
108
+ @comment1.article = nil
109
+ @article.comments.count.should == 1
110
+ @comment1.article.should == nil
111
+
112
+ # from has_one side
113
+ profile = Profile.create :title => "test"
114
+ chicago = City.create :name => "Chicago"
115
+
116
+ profile.city = chicago
117
+ profile.city.name.should == "Chicago"
118
+ chicago.profiles.count.should == 1
119
+ chicago.profiles[0].id.should == profile.id
120
+
121
+ # clear
122
+ profile.city = nil
123
+ profile.city.should == nil
124
+ chicago.profiles.count.should == 0
91
125
  end
92
126
 
93
127
  it "should return array" do
@@ -109,6 +143,28 @@ describe "check associations" do
109
143
  @comment1.article.id.should == @comment2.article.id
110
144
  end
111
145
 
146
+ it "should behave as active_record (proxy couldn't return records w/o #all call) += and << behave differently" do
147
+ @article.comments << @comment1 << @comment2
148
+ @article.comments.count.should == 2
149
+
150
+ comments = @article.comments
151
+ comments.count.should == 2
152
+
153
+ comments = []
154
+ comments += @article.comments
155
+ comments.count.should == 2
156
+ comments.collect{|c| c.id}.should include(@comment1.id)
157
+ comments.collect{|c| c.id}.should include(@comment2.id)
158
+
159
+ comments = []
160
+ comments << @article.comments.all
161
+ comments.flatten.count.should == 2
162
+
163
+ comments = []
164
+ comments << @article.comments
165
+ comments.count.should == 1
166
+ end
167
+
112
168
  it "should return 1 comment when second was deleted" do
113
169
  Comment.count.should == 2
114
170
  @article.comments << [@comment1, @comment2]
@@ -150,7 +206,7 @@ describe "check associations" do
150
206
  @article.comments.count.should == 1
151
207
  @article.comments.first.id.should == @comment1.id
152
208
 
153
- @comment1.article.id.should == @article.id
209
+ @comment1.article.id.should == @article.id
154
210
  end
155
211
 
156
212
  it "should correctly use many-to-many associations both with '=' and '<<' " do
data/test/options_test.rb CHANGED
@@ -96,15 +96,18 @@ describe "test options" do
96
96
  Photo.all(:order => "desc", :limit => 1, :offset => 1).map{|p| p.id}.should == [@photo1.id]
97
97
 
98
98
  # testing #find method
99
- Photo.find(:order => "asc").map{|p| p.id}.should == [@photo1.id, @photo2.id]
100
- Photo.find(:order => "desc").map{|p| p.id}.should == [@photo2.id, @photo1.id]
99
+ Photo.find(:all, :order => "asc").map{|p| p.id}.should == [@photo1.id, @photo2.id]
100
+ Photo.find(:all, :order => "desc").map{|p| p.id}.should == [@photo2.id, @photo1.id]
101
101
 
102
- Photo.find(:order => "asc", :limit => 1).map{|p| p.id}.should == [@photo1.id]
103
- Photo.find(:order => "desc", :limit => 1).map{|p| p.id}.should == [@photo2.id]
102
+ Photo.find(:all, :order => "asc", :limit => 1).map{|p| p.id}.should == [@photo1.id]
103
+ Photo.find(:all, :order => "desc", :limit => 1).map{|p| p.id}.should == [@photo2.id]
104
104
 
105
- Photo.find(:order => "asc", :limit => 1, :offset => 1).map{|p| p.id}.should == [@photo2.id]
106
- Photo.find(:order => "desc", :limit => 1, :offset => 1).map{|p| p.id}.should == [@photo1.id]
105
+ Photo.find(:first, :order => "asc", :limit => 1, :offset => 1).id.should == @photo2.id
106
+ Photo.find(:first, :order => "desc", :limit => 1, :offset => 1).id.should == @photo1.id
107
107
 
108
+ Photo.find(:last, :order => "asc").id.should == @photo2.id
109
+ Photo.find(:last, :order => "desc").id.should == @photo1.id
110
+
108
111
  @album.photos.count.should == 0
109
112
  @album.photos.all(:limit => 2, :offset => 0).should == []
110
113
  @album.photos << @photo2
@@ -119,8 +122,16 @@ describe "test options" do
119
122
 
120
123
  @album.photos.find(:all, :order => "asc").map{|p| p.id}.should == [@photo2.id, @photo1.id]
121
124
  @album.photos.find(:all, :order => "desc").map{|p| p.id}.should == [@photo1.id, @photo2.id]
122
- @album.photos.find(:first, :order => "asc").map{|p| p.id}.should == [@photo2.id]
123
- @album.photos.find(:first, :order => "desc").map{|p| p.id}.should == [@photo1.id]
125
+
126
+ @album.photos.find(:first, :order => "asc").id.should == @photo2.id
127
+ @album.photos.find(:first, :order => "desc").id.should == @photo1.id
128
+
129
+ @album.photos.find(:last, :order => "asc").id.should == @photo1.id
130
+ @album.photos.find(:last, :order => "desc").id.should == @photo2.id
131
+
132
+ @album.photos.find(:last, :order => "desc", :offset => 2).should == nil
133
+ @album.photos.find(:first, :order => "desc", :offset => 2).should == nil
134
+
124
135
  @album.photos.find(:all, :order => "asc", :limit => 1, :offset => 1).map{|p| p.id}.should == [@photo1.id]
125
136
  @album.photos.find(:all, :order => "desc", :limit => 1, :offset => 1).map{|p| p.id}.should == [@photo2.id]
126
137
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_orm
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: '0.3'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-06-04 00:00:00.000000000 +03:00
12
+ date: 2011-06-06 00:00:00.000000000 +03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &85876430 !ruby/object:Gem::Requirement
17
+ requirement: &85879940 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 3.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *85876430
25
+ version_requirements: *85879940
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activemodel
28
- requirement: &85876070 !ruby/object:Gem::Requirement
28
+ requirement: &85879580 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 3.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *85876070
36
+ version_requirements: *85879580
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: redis
39
- requirement: &85875730 !ruby/object:Gem::Requirement
39
+ requirement: &85879180 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 2.2.0
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *85875730
47
+ version_requirements: *85879180
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rspec
50
- requirement: &85875400 !ruby/object:Gem::Requirement
50
+ requirement: &85878840 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,7 +55,7 @@ dependencies:
55
55
  version: 2.5.0
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *85875400
58
+ version_requirements: *85878840
59
59
  description: ORM for Redis advanced key-value storage
60
60
  email: germaninthetown@gmail.com
61
61
  executables: []