redis-model-extension 0.2.6 → 0.2.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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.6
1
+ 0.2.7
@@ -13,7 +13,7 @@ require 'database'
13
13
 
14
14
  module RedisModel
15
15
 
16
- attr_accessor :args, :error, :old_key, :conf
16
+ attr_accessor :args, :error, :old_args, :conf
17
17
 
18
18
  def self.included(base)
19
19
  base.send :extend, ClassMethods
@@ -50,7 +50,7 @@ module RedisModel
50
50
 
51
51
  #Generates redis key for storing object
52
52
  def generate_key(args = {})
53
- out = "#{self.name.to_s.underscore.to_sym}:key:"
53
+ out = "#{self.name.to_s.underscore.to_sym}:key"
54
54
  @conf[:redis_key].each do |key|
55
55
  if args.has_key?(key)
56
56
  out += ":#{args[key]}"
@@ -115,10 +115,14 @@ module RedisModel
115
115
 
116
116
  #is key specified directly? -> no needs of looking for other keys! -> faster
117
117
  if klass.valid_key?(args)
118
- out << klass.new(args.merge(Database.redis.hgetall(klass.generate_key(args))).merge({:old_key => klass.generate_key(args)})) if klass.exists?(args)
118
+ if klass.exists?(args)
119
+ data_args = Database.redis.hgetall(klass.generate_key(args))
120
+ out << klass.new(args.merge(data_args).merge({:old_args => data_args}))
121
+ end
119
122
  else
120
123
  Database.redis.keys(klass.generate_key(args)).each do |key|
121
- out << klass.new(args.merge(Database.redis.hgetall(key)).merge({:old_key => key}))
124
+ data_args = Database.redis.hgetall(key)
125
+ out << klass.new(args.merge(data_args).merge({:old_args => data_args}))
122
126
  end
123
127
  end
124
128
  out
@@ -145,8 +149,9 @@ module RedisModel
145
149
  def get(args = {})
146
150
  args.symbolize_keys!
147
151
  klass = self.name.constantize
148
- if klass.valid_key?(args)
149
- klass.new(args.merge(Database.redis.hgetall(klass.generate_key(args))).merge({:old_key => klass.generate_key(args)})) if klass.exists?(args)
152
+ if klass.valid_key?(args) && klass.exists?(args)
153
+ data_args = Database.redis.hgetall(klass.generate_key(args))
154
+ klass.new(args.merge(data_args).merge({:old_args => data_args}))
150
155
  else
151
156
  nil
152
157
  end
@@ -159,7 +164,8 @@ module RedisModel
159
164
  if klass.valid_alias_key?(alias_name, args) && klass.alias_exists?(alias_name, args)
160
165
  key = Database.redis.get(klass.generate_alias_key(alias_name, args))
161
166
  if Database.redis.exists(key)
162
- klass.new(args.merge(Database.redis.hgetall(key)).merge({:old_key => key}))
167
+ data_args = Database.redis.hgetall(key)
168
+ klass.new(args.merge(data_args).merge({:old_args => data_args}))
163
169
  else
164
170
  nil
165
171
  end
@@ -174,7 +180,7 @@ module RedisModel
174
180
  if Database.redis.exists(alias_key)
175
181
  key = Database.redis.get(alias_key)
176
182
  if Database.redis.exists(key)
177
- klass.new(args.merge(Database.redis.hgetall(key)).merge({:old_key => key}))
183
+ klass.new(args.merge(Database.redis.hgetall(key)).merge({:old_args => key}))
178
184
  else
179
185
  nil
180
186
  end
@@ -189,10 +195,9 @@ module RedisModel
189
195
 
190
196
  def initialize(args={})
191
197
  args.symbolize_keys!
192
- #if old_key is specified, don't usi it in args hash
193
- if args[:old_key] && args[:old_key].size > 0
194
- self.old_key = args[:old_key]
195
- args.delete(:old_key)
198
+ #if old_args is specified, don't usi it in args hash
199
+ if args[:old_args] && args[:old_args].size > 0
200
+ self.old_args = args.delete(:old_args).symbolize_keys
196
201
  end
197
202
  self.args = clear_args(args)
198
203
  return self
@@ -254,9 +259,12 @@ module RedisModel
254
259
 
255
260
  #remove all aliases
256
261
  def destroy_aliases!
257
- self.class.conf[:redis_aliases].each do |alias_name, fields|
258
- if self.class.valid_alias_key?(alias_name, self.args) && self.class.alias_exists?(alias_name, self.args)
259
- Database.redis.del(self.class.generate_alias_key(alias_name, self.args))
262
+ #do it only if it is existing object!
263
+ if self.old_args
264
+ self.class.conf[:redis_aliases].each do |alias_name, fields|
265
+ if self.class.valid_alias_key?(alias_name, self.old_args) && self.class.alias_exists?(alias_name, self.old_args)
266
+ Database.redis.del(self.class.generate_alias_key(alias_name, self.old_args))
267
+ end
260
268
  end
261
269
  end
262
270
  end
@@ -284,14 +292,14 @@ module RedisModel
284
292
  if valid?
285
293
  #generate key (possibly new)
286
294
  generated_key = redis_key
287
- Database.redis.rename(self.old_key, generated_key) if self.old_key && generated_key != self.old_key
295
+ Database.redis.rename(self.class.generate_key(self.old_args), generated_key) if self.old_args && generated_key != self.class.generate_key(self.old_args) && Database.redis.exists(self.class.generate_key(self.old_args))
288
296
  Database.redis.hmset(generated_key, *self.args.reject{|k,v| v.nil?}.inject([]){ |arr,kv| arr + [kv[0], kv[1].to_s]})
289
297
 
290
298
  #destroy aliases
291
299
  destroy_aliases!
292
300
  create_aliases
293
301
  #after save make new_key -> old_key
294
- self.old_key = generated_key
302
+ self.old_args = self.args
295
303
  return self
296
304
  else
297
305
  raise ArgumentError, @error.join(", ")
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "redis-model-extension"
8
- s.version = "0.2.6"
8
+ s.version = "0.2.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ondrej Bartas"]
12
- s.date = "2012-03-21"
12
+ s.date = "2012-04-10"
13
13
  s.description = "It provides functions as find, find_by_alias, get, exists?, validate, save etc."
14
14
  s.email = "ondrej@bartas.cz"
15
15
  s.extra_rdoc_files = [
@@ -68,12 +68,12 @@ class RedisModelTest < Test::Unit::TestCase
68
68
 
69
69
  context "redis key" do
70
70
  should "generate right key" do
71
- assert_equal @test_model.redis_key, "redismodeltest::testredismodel:foo"
72
- assert_equal TestRedisModel.generate_key(@args), "redismodeltest::testredismodel:foo"
71
+ assert_equal @test_model.redis_key, "#{TestRedisModel.to_s.underscore}:key:foo"
72
+ assert_equal TestRedisModel.generate_key(@args), "#{TestRedisModel.to_s.underscore}:key:foo"
73
73
  end
74
74
  should "generate right key alias" do
75
- assert_equal @test_model.redis_alias_key(:token), "redismodeltest::testredismodel:token:bar"
76
- assert_equal TestRedisModel.generate_alias_key(:token, @args), "redismodeltest::testredismodel:token:bar"
75
+ assert_equal @test_model.redis_alias_key(:token), "#{TestRedisModel.to_s.underscore}:alias:token:bar"
76
+ assert_equal TestRedisModel.generate_alias_key(:token, @args), "#{TestRedisModel.to_s.underscore}:alias:token:bar"
77
77
  end
78
78
  end
79
79
 
@@ -114,13 +114,22 @@ class RedisModelTest < Test::Unit::TestCase
114
114
  @getted_model = TestRedisModel.get(@args)
115
115
  assert_equal @getted_model.to_arg, @args
116
116
  end
117
-
118
- should "be getted by alias" do
119
- @getted_model = TestRedisModel.get_by_alias(:token ,@args)
120
- assert_equal @getted_model.integer, @test_model.integer
121
- assert_equal @getted_model.string, @test_model.string
122
- assert_equal @getted_model.symbol, @test_model.symbol
123
- assert_equal @getted_model.boolean, @test_model.boolean
117
+
118
+ context "alias" do
119
+ should "be getted by alias" do
120
+ @getted_model = TestRedisModel.get_by_alias(:token ,@args)
121
+ assert_equal @getted_model.integer, @test_model.integer
122
+ assert_equal @getted_model.string, @test_model.string
123
+ assert_equal @getted_model.symbol, @test_model.symbol
124
+ assert_equal @getted_model.boolean, @test_model.boolean
125
+ end
126
+
127
+ should "be getted after change in alias" do
128
+ getted_model = TestRedisModel.get_by_alias(:token ,@args)
129
+ getted_model.symbol = "Test_token"
130
+ getted_model.save
131
+ assert_equal getted_model.integer, TestRedisModel.get_by_alias(:token ,:symbol => "Test_token").integer
132
+ end
124
133
  end
125
134
  end
126
135
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-model-extension
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.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-03-21 00:00:00.000000000 Z
12
+ date: 2012-04-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
16
- requirement: &70115296231660 !ruby/object:Gem::Requirement
16
+ requirement: &70193066403260 !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: *70115296231660
24
+ version_requirements: *70193066403260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: i18n
27
- requirement: &70115296167520 !ruby/object:Gem::Requirement
27
+ requirement: &70193066402640 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70115296167520
35
+ version_requirements: *70193066402640
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &70115296166380 !ruby/object:Gem::Requirement
38
+ requirement: &70193066165280 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.1.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70115296166380
46
+ version_requirements: *70193066165280
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &70115296165300 !ruby/object:Gem::Requirement
49
+ requirement: &70193066164700 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70115296165300
57
+ version_requirements: *70193066164700
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rack
60
- requirement: &70115296164580 !ruby/object:Gem::Requirement
60
+ requirement: &70193066164040 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.3.0
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70115296164580
68
+ version_requirements: *70193066164040
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: shoulda
71
- requirement: &70115296163920 !ruby/object:Gem::Requirement
71
+ requirement: &70193066163140 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70115296163920
79
+ version_requirements: *70193066163140
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: shoulda-context
82
- requirement: &70115296162980 !ruby/object:Gem::Requirement
82
+ requirement: &70193066161480 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70115296162980
90
+ version_requirements: *70193066161480
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rdoc
93
- requirement: &70115296162080 !ruby/object:Gem::Requirement
93
+ requirement: &70193066158180 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '3.12'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70115296162080
101
+ version_requirements: *70193066158180
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: bundler
104
- requirement: &70115296161500 !ruby/object:Gem::Requirement
104
+ requirement: &70193066273180 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 1.0.0
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70115296161500
112
+ version_requirements: *70193066273180
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: jeweler
115
- requirement: &70115296160920 !ruby/object:Gem::Requirement
115
+ requirement: &70193066271860 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 1.8.3
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70115296160920
123
+ version_requirements: *70193066271860
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: turn
126
- requirement: &70115296160300 !ruby/object:Gem::Requirement
126
+ requirement: &70193066270500 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 0.8.2
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70115296160300
134
+ version_requirements: *70193066270500
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: minitest
137
- requirement: &70115296176160 !ruby/object:Gem::Requirement
137
+ requirement: &70193066269660 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: '0'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *70115296176160
145
+ version_requirements: *70193066269660
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: ansi
148
- requirement: &70115296175540 !ruby/object:Gem::Requirement
148
+ requirement: &70193066268660 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ~>
@@ -153,7 +153,7 @@ dependencies:
153
153
  version: 1.2.5
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *70115296175540
156
+ version_requirements: *70193066268660
157
157
  description: It provides functions as find, find_by_alias, get, exists?, validate,
158
158
  save etc.
159
159
  email: ondrej@bartas.cz
@@ -193,7 +193,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
193
193
  version: '0'
194
194
  segments:
195
195
  - 0
196
- hash: -2937311985749273754
196
+ hash: 1802070516679787540
197
197
  required_rubygems_version: !ruby/object:Gem::Requirement
198
198
  none: false
199
199
  requirements: