redis-persistence 0.0.8 → 0.0.9
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/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:
|