redis_assist 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0effd0e36b7409fabc831163f2f0100727b2f0be
4
- data.tar.gz: 283e5cc422e07501b297ea29dd3d52f32af6b41e
3
+ metadata.gz: 0bcf176574c0e2ac94dcb13dbe7eeeb0f30f3784
4
+ data.tar.gz: 4829e9b18420dad2a506703bff439fb4c28b7484
5
5
  SHA512:
6
- metadata.gz: 8ad373f145a587dd2bf7c9716463ad75b4823453b26853556762358f65d62c17868d680dd68568b81f4adcedd23e0092ae85678e34fdfd6990698ef4feb8f986
7
- data.tar.gz: 3b8a0e7e5cfb0b6c9757067513e20770971d95a63a480f9c7c2d2484689fbce22c79b50cf1a4836d28ecc369be3fd210611ea4dffadbc3971f06bf82ab3345b7
6
+ metadata.gz: d0b80cd10a09fdc88d3e2e0e1566134e60cc5c7a0a62b1456ece2dbe6427ad6feb5d458554a963d0ed952fe6fc389ef5313613b74dcb8065bd3429396c198fd4
7
+ data.tar.gz: aa51bd8a86fb59e38d92439435a55cffbe42ed032a49094a3657a448bc0390756cbe74f5dc89b8763bf190b101618873395aaeaf816987dd411b077512dbcae7
@@ -1,5 +1,13 @@
1
1
  module RedisAssist
2
2
  class Base
3
+
4
+ include Callbacks
5
+
6
+ before_create {|instance| instance.created_at = Time.now.to_f if instance.respond_to?(:created_at) }
7
+ before_update {|instance| instance.updated_at = Time.now.to_f if instance.respond_to?(:updated_at) }
8
+ after_delete {|instance| instance.deleted_at = Time.now.to_f if instance.respond_to?(:deleted_at) }
9
+ after_create {|instance| instance.new_record = false }
10
+
3
11
  class << self
4
12
 
5
13
  def attr_persist(name, opts={})
@@ -316,47 +324,17 @@ module RedisAssist
316
324
  errors << { field => message }
317
325
  end
318
326
 
327
+
319
328
  protected
320
329
 
321
330
 
322
- attr_writer :id, :errors
331
+ attr_writer :id, :errors
323
332
  attr_accessor :lists, :hashes, :new_record
324
-
325
- def _on_load; end
326
-
327
- def _before_validation
328
- self.errors = []
329
- end
330
-
331
- def _before_create
332
- self.created_at = Time.now.to_f if respond_to?(:created_at)
333
- end
334
333
 
335
- def _before_update
336
- self.updated_at = Time.now.to_f if respond_to?(:updated_at)
337
- end
338
-
339
- def _after_delete
340
- self.deleted_at = Time.now.to_f if respond_to?(:deleted_at)
341
- end
342
334
 
343
- def _after_create
344
- self.new_record = false
345
- end
346
-
347
- def _before_save; end
348
- def _after_save; end
349
- def _after_update; end
350
-
351
-
352
335
  private
353
336
 
354
337
 
355
- def invoke_callback(callback)
356
- send("_#{callback}")
357
- send(callback) if respond_to? callback
358
- end
359
-
360
338
  def generate_id
361
339
  redis.incr("#{self.class.key_prefix}:id_sequence")
362
340
  end
@@ -0,0 +1,59 @@
1
+ module RedisAssist
2
+ module Callbacks
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ base.define_callbacks
7
+ end
8
+
9
+ def invoke_callback(callback_type)
10
+ receivers = self.class.callbacks[callback_type] || []
11
+ receivers.each do |callback_proc|
12
+ callback_proc.call(self)
13
+ end
14
+ end
15
+
16
+ module ClassMethods
17
+ CALLBACK_TYPES = [
18
+ :on_load,
19
+ :before_validation,
20
+ :before_create,
21
+ :before_save,
22
+ :before_update,
23
+ :after_create,
24
+ :after_save,
25
+ :after_update,
26
+ :after_delete,
27
+ :after_update
28
+ ]
29
+
30
+ def callbacks
31
+ @callbacks ||= {}
32
+ end
33
+
34
+ def define_callbacks
35
+ CALLBACK_TYPES.each do |callback_type|
36
+ define_singleton_method(callback_type) do |*callback_methods, &block|
37
+ add_callback(callback_type) do |instance|
38
+ callback_methods.each do |callback_method|
39
+ instance.send callback_method
40
+ end
41
+
42
+ block.call(instance) if block
43
+ end
44
+ end
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def add_callback(callback_type, &block)
51
+ callback_proc = Proc.new do |instance|
52
+ block.call(instance)
53
+ end
54
+
55
+ (callbacks[callback_type] ||= []) << callback_proc
56
+ end
57
+ end
58
+ end
59
+ end
@@ -1,3 +1,3 @@
1
1
  module RedisAssist
2
- VERSION = '0.1.2' unless defined?(::RedisAssist::VERSION)
2
+ VERSION = '0.2.0' unless defined?(::RedisAssist::VERSION)
3
3
  end
data/lib/redis_assist.rb CHANGED
@@ -6,6 +6,7 @@ require 'uuid'
6
6
  require 'json'
7
7
  require 'redis_assist/config'
8
8
  require 'redis_assist/transform'
9
+ require 'redis_assist/callbacks'
9
10
  require 'redis_assist/base'
10
11
 
11
12
  # == Setup & Configuration
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.1.2
4
+ version: 0.2.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-18 00:00:00.000000000 Z
11
+ date: 2013-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -130,6 +130,7 @@ extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
132
  - lib/redis_assist/base.rb
133
+ - lib/redis_assist/callbacks.rb
133
134
  - lib/redis_assist/config.rb
134
135
  - lib/redis_assist/transform.rb
135
136
  - lib/redis_assist/transforms/boolean_transform.rb