redis_assist 0.1.2 → 0.2.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 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