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.
@@ -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
- property_defaults[name.to_sym] = options[:default] if options[:default]
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.compact.empty?
230
- attributes = data.compact.inject({}) { |hash, item| hash.update( MultiJson.decode(item, :symbolize_keys => true) ); hash }
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.attributes = reloaded.attributes
358
+ self.__update_attributes reloaded.attributes
357
359
  self.__loaded_families = reloaded.__loaded_families
358
360
  self
359
361
  end
@@ -1,5 +1,5 @@
1
1
  class Redis
2
2
  module Persistence
3
- VERSION = "0.0.8"
3
+ VERSION = "0.0.9"
4
4
  end
5
5
  end
@@ -29,4 +29,5 @@ Gem::Specification.new do |gem|
29
29
  gem.add_development_dependency "shoulda"
30
30
  gem.add_development_dependency "mocha"
31
31
  gem.add_development_dependency "turn"
32
+ gem.add_development_dependency "rake"
32
33
  end
@@ -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.8
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-03-20 00:00:00.000000000 Z
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: