redis_assist 0.2.0 → 0.3.0
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.
- checksums.yaml +4 -4
- data/lib/redis_assist/base.rb +8 -12
- data/lib/redis_assist/validations.rb +53 -0
- data/lib/redis_assist/version.rb +1 -1
- data/lib/redis_assist.rb +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa85c951b1af2427edd4810a0f66a741d105d09e
|
4
|
+
data.tar.gz: 7ed0c449fc3dbfe11e3a033ad4ca78eb03857b0f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3525dbfaefc4d333297400e9852cab71a959a499cf6e58f5d1d8ae8efab896758fb36effe1aebbb8d1e88a782386119bc732ce8961ef23dd52129504e863aa0c
|
7
|
+
data.tar.gz: d3839bb4921a10d891847cd76789f96e3d40a6df49938c6aa70b3747caf709897f1414db45e13f35d31e2e5ecf3cde1f13f2658fddeb4fb50916238f02839cfb
|
data/lib/redis_assist/base.rb
CHANGED
@@ -2,6 +2,7 @@ module RedisAssist
|
|
2
2
|
class Base
|
3
3
|
|
4
4
|
include Callbacks
|
5
|
+
include Validations
|
5
6
|
|
6
7
|
before_create {|instance| instance.created_at = Time.now.to_f if instance.respond_to?(:created_at) }
|
7
8
|
before_update {|instance| instance.updated_at = Time.now.to_f if instance.respond_to?(:updated_at) }
|
@@ -52,6 +53,8 @@ module RedisAssist
|
|
52
53
|
redis.exists(key_for(id, :attributes))
|
53
54
|
end
|
54
55
|
|
56
|
+
# TODO: needs a refactor. Should this be an interface for skipping validations?
|
57
|
+
# Should we optimize and skip the find? Support an array of ids?
|
55
58
|
def update(id, params={})
|
56
59
|
record = find(id)
|
57
60
|
return false unless record
|
@@ -210,13 +213,12 @@ module RedisAssist
|
|
210
213
|
end
|
211
214
|
|
212
215
|
attr_accessor :attributes
|
213
|
-
attr_reader :id
|
216
|
+
attr_reader :id
|
214
217
|
|
215
218
|
def initialize(attrs={})
|
216
219
|
@attributes = {}
|
217
220
|
self.lists = {}
|
218
221
|
self.hashes = {}
|
219
|
-
self.errors = []
|
220
222
|
|
221
223
|
if attrs[:id]
|
222
224
|
self.id = attrs[:id]
|
@@ -242,7 +244,7 @@ module RedisAssist
|
|
242
244
|
end
|
243
245
|
|
244
246
|
def save
|
245
|
-
return false
|
247
|
+
return false unless valid?
|
246
248
|
|
247
249
|
invoke_callback(:before_update) unless new_record?
|
248
250
|
invoke_callback(:before_create) if new_record?
|
@@ -283,12 +285,9 @@ module RedisAssist
|
|
283
285
|
|
284
286
|
def valid?
|
285
287
|
invoke_callback(:before_validation)
|
286
|
-
|
287
|
-
errors.empty?
|
288
|
+
super
|
288
289
|
end
|
289
290
|
|
290
|
-
def validate; end
|
291
|
-
|
292
291
|
# TODO: should this be a redis-assist feature?
|
293
292
|
def deleted?
|
294
293
|
return false unless respond_to?(:deleted_at)
|
@@ -319,16 +318,13 @@ module RedisAssist
|
|
319
318
|
def redis
|
320
319
|
self.class.redis
|
321
320
|
end
|
322
|
-
|
323
|
-
def add_error(field, message)
|
324
|
-
errors << { field => message }
|
325
|
-
end
|
321
|
+
|
326
322
|
|
327
323
|
|
328
324
|
protected
|
329
325
|
|
330
326
|
|
331
|
-
attr_writer :id
|
327
|
+
attr_writer :id
|
332
328
|
attr_accessor :lists, :hashes, :new_record
|
333
329
|
|
334
330
|
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module RedisAssist
|
2
|
+
module Validations
|
3
|
+
def self.included(base)
|
4
|
+
base.extend ClassMethods
|
5
|
+
end
|
6
|
+
|
7
|
+
def validate
|
8
|
+
errors.clear
|
9
|
+
self.class.validations.each {|validation| validation.call(self) }
|
10
|
+
end
|
11
|
+
|
12
|
+
def valid?
|
13
|
+
validate
|
14
|
+
errors.empty?
|
15
|
+
end
|
16
|
+
|
17
|
+
def errors
|
18
|
+
@errors ||= []
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_error(attribute, message)
|
22
|
+
self.errors << { attribute => message }
|
23
|
+
end
|
24
|
+
|
25
|
+
module ClassMethods
|
26
|
+
def validations
|
27
|
+
@validations ||= []
|
28
|
+
end
|
29
|
+
|
30
|
+
def validates_presence_of(*attributes)
|
31
|
+
validates_attributes(*attributes) do |instance, attribute, value, options|
|
32
|
+
instance.add_error(attribute, "cant't be blank") if value.nil? || value.empty?
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def validates_format_of(*attributes)
|
37
|
+
validates_attributes(*attributes) do |instance, attribute, value, options|
|
38
|
+
instance.add_error(attribute, "is invalid") unless value =~ options[:with]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def validates_attributes(*attributes, &proc)
|
43
|
+
options = attributes.last.is_a?(::Hash) ? attributes.pop : {}
|
44
|
+
|
45
|
+
validations << Proc.new do |instance|
|
46
|
+
attributes.each do |attribute|
|
47
|
+
proc.call(instance, attribute, instance.__send__(attribute), options)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/redis_assist/version.rb
CHANGED
data/lib/redis_assist.rb
CHANGED
@@ -7,6 +7,7 @@ require 'json'
|
|
7
7
|
require 'redis_assist/config'
|
8
8
|
require 'redis_assist/transform'
|
9
9
|
require 'redis_assist/callbacks'
|
10
|
+
require 'redis_assist/validations'
|
10
11
|
require 'redis_assist/base'
|
11
12
|
|
12
13
|
# == Setup & Configuration
|
@@ -26,5 +27,4 @@ module RedisAssist
|
|
26
27
|
end
|
27
28
|
|
28
29
|
# require all transforms
|
29
|
-
Dir["#{File.dirname(__FILE__)}/redis_assist/transforms/*.rb"].each
|
30
|
-
|
30
|
+
Dir["#{File.dirname(__FILE__)}/redis_assist/transforms/*.rb"].each{|file| require file }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis_assist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Love
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -138,6 +138,7 @@ files:
|
|
138
138
|
- lib/redis_assist/transforms/integer_transform.rb
|
139
139
|
- lib/redis_assist/transforms/json_transform.rb
|
140
140
|
- lib/redis_assist/transforms/time_transform.rb
|
141
|
+
- lib/redis_assist/validations.rb
|
141
142
|
- lib/redis_assist/version.rb
|
142
143
|
- lib/redis_assist.rb
|
143
144
|
homepage: http://github.com/endlessinc/redis-assist
|