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.
@@ -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: