redis-persistence 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/redis/persistence.rb +7 -5
- data/lib/redis/persistence/version.rb +1 -1
- data/redis-persistence.gemspec +1 -0
- data/test/models.rb +7 -0
- data/test/redis_persistence_test.rb +5 -0
- metadata +19 -8
data/lib/redis/persistence.rb
CHANGED
@@ -145,7 +145,9 @@ class Redis
|
|
145
145
|
properties << name.to_s unless properties.include?(name.to_s)
|
146
146
|
|
147
147
|
# Save property default value (when relevant):
|
148
|
-
|
148
|
+
unless (default_value = options.delete(:default)).nil?
|
149
|
+
property_defaults[name.to_sym] = default_value.respond_to?(:call) ? default_value.call : default_value
|
150
|
+
end
|
149
151
|
|
150
152
|
# Save property casting (when relevant):
|
151
153
|
property_types[name.to_sym] = options[:class] if options[:class]
|
@@ -224,10 +226,10 @@ class Redis
|
|
224
226
|
|
225
227
|
def __find_one(id, options={})
|
226
228
|
families = options[:families] == 'all' ? family_properties.keys.map(&:to_s) : [DEFAULT_FAMILY.to_s] | Array(options[:families])
|
227
|
-
data = __redis.hmget("#{self.model_name.plural}:#{id}", *families)
|
229
|
+
data = __redis.hmget("#{self.model_name.plural}:#{id}", *families).compact
|
228
230
|
|
229
|
-
unless data.
|
230
|
-
attributes = data.
|
231
|
+
unless data.empty?
|
232
|
+
attributes = data.inject({}) { |hash, item| hash.update( MultiJson.decode(item, :symbolize_keys => true) ); hash }
|
231
233
|
instance = self.new attributes
|
232
234
|
instance.__loaded_families = families
|
233
235
|
instance
|
@@ -353,7 +355,7 @@ class Redis
|
|
353
355
|
def reload(options={})
|
354
356
|
families = self.__loaded_families | Array(options[:families])
|
355
357
|
reloaded = self.class.find(self.id, options.merge(families: families))
|
356
|
-
self.
|
358
|
+
self.__update_attributes reloaded.attributes
|
357
359
|
self.__loaded_families = reloaded.__loaded_families
|
358
360
|
self
|
359
361
|
end
|
data/redis-persistence.gemspec
CHANGED
data/test/models.rb
CHANGED
@@ -125,3 +125,10 @@ class ModelWithDefaultsInFamilies
|
|
125
125
|
property :name
|
126
126
|
property :tags, :default => [], :family => 'tags'
|
127
127
|
end
|
128
|
+
|
129
|
+
class ModelWithDefaultLambdas
|
130
|
+
include Redis::Persistence
|
131
|
+
|
132
|
+
property :name
|
133
|
+
property :created_at, :default => lambda { Time.now }
|
134
|
+
end
|
@@ -76,6 +76,11 @@ class RedisPersistenceTest < ActiveSupport::TestCase
|
|
76
76
|
assert_equal true, d.admin
|
77
77
|
end
|
78
78
|
|
79
|
+
should "evaluate lambdas as default values" do
|
80
|
+
d = ModelWithDefaultLambdas.new
|
81
|
+
assert_kind_of Time, d.created_at
|
82
|
+
end
|
83
|
+
|
79
84
|
should "return time as time" do
|
80
85
|
a = PersistentArticle.create created: Time.new(2011, 11, 9).utc
|
81
86
|
assert_instance_of Time, a.created
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-persistence
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-07-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: redis
|
@@ -156,6 +156,22 @@ dependencies:
|
|
156
156
|
- - ! '>='
|
157
157
|
- !ruby/object:Gem::Version
|
158
158
|
version: '0'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: rake
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
type: :development
|
168
|
+
prerelease: false
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
159
175
|
description: Simple ActiveModel-compatible persistence layer in Redis
|
160
176
|
email:
|
161
177
|
- karmi@karmi.cz
|
@@ -197,18 +213,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
197
213
|
- - ! '>='
|
198
214
|
- !ruby/object:Gem::Version
|
199
215
|
version: '0'
|
200
|
-
segments:
|
201
|
-
- 0
|
202
|
-
hash: -3162523581224626166
|
203
216
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
217
|
none: false
|
205
218
|
requirements:
|
206
219
|
- - ! '>='
|
207
220
|
- !ruby/object:Gem::Version
|
208
221
|
version: '0'
|
209
|
-
segments:
|
210
|
-
- 0
|
211
|
-
hash: -3162523581224626166
|
212
222
|
requirements: []
|
213
223
|
rubyforge_project:
|
214
224
|
rubygems_version: 1.8.23
|
@@ -220,3 +230,4 @@ test_files:
|
|
220
230
|
- test/active_model_lint_test.rb
|
221
231
|
- test/models.rb
|
222
232
|
- test/redis_persistence_test.rb
|
233
|
+
has_rdoc:
|