redispatcher 0.0.1 → 0.0.2

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: 035ad73b6e6ec3bae5ad47e52d49531ab105531d
4
- data.tar.gz: 2efec77011f4e680e69f4c211be376de2c4ea514
3
+ metadata.gz: 4a1dba3c146a45fc5d21299e409df5d8b860aa9b
4
+ data.tar.gz: ad10a86219e6f1fc18b7513f24d20f3256e088f9
5
5
  SHA512:
6
- metadata.gz: 1f81363de16fe3809e7b988d540e7798644195f95b81a9c78094c339e2ff0623d068e59dfe16a8caf6a8f57a7ec716aa138ed9930d9a28d0c9b25e47dbc25119
7
- data.tar.gz: 207d86dd6343136842e8d363f203c292510245cc10f45e013553b9ef1726e1e589badbcd2a0b12a49990aecca52882982cbe87f3ad7a98573aa328a175bf04c5
6
+ metadata.gz: 3b99d6b2df35ce4196a748ef9a39d65c901377008d31d6b7479004b1968c5d2fa8cc29d4bc3905a4a209e01865a660112431cdfda4e86da00ebed801b341d180
7
+ data.tar.gz: 29e17215b38690bc68d37171d61f18dc2f07fa9b27bcc577de76ab81e76f998d72b922db821c3dd3674edbdb649cfdc8e481bdc4bf562d698586241244390cb0
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ![This is really cool dispatcher. However es6-dispatcher is really piece of crap](https://zhf.io/raw/p8IRct)
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/redispatcher.svg)](http://badge.fury.io/rb/redispatcher)
4
+ [![Code Climate](https://codeclimate.com/github/rambler-digital-solutions/redispatcher/badges/gpa.svg)](https://codeclimate.com/github/rambler-digital-solutions/redispatcher)
5
+ [![Test Coverage](https://codeclimate.com/github/rambler-digital-solutions/redispatcher/badges/coverage.svg)](https://codeclimate.com/github/rambler-digital-solutions/redispatcher)
6
+
3
7
  Dispatch ActiveRecord objects to any structures with ease.
4
8
 
5
9
  ## Installation
@@ -30,6 +34,29 @@ class TopicDispatcher < Redispatcher::Dispatcher
30
34
  end
31
35
  ```
32
36
 
37
+
38
+ Do not hesitate to use dispatscher's callbacks `before_` and `after_` `initialize`, `process`, `commit`, `rollback` just like that:
39
+
40
+ ```ruby
41
+ # app/dispatchers/topic_dispatcher.rb
42
+ class TopicDispatcher < Redispatcher::Dispatcher
43
+
44
+ after_initialize do
45
+ @processed_object = {}
46
+ end
47
+
48
+ before_process do
49
+ @processed_object.merge! title: object.title
50
+ end
51
+
52
+ after_commit :update_mongodb
53
+
54
+ def update_mongodb
55
+ MONGO['topics'].update({ id: object.id }, processed_object, upsert: true)
56
+ end
57
+ end
58
+ ```
59
+
33
60
  ### Enable dispatcher for your model
34
61
 
35
62
  ```ruby
@@ -21,7 +21,7 @@ class << ActiveRecord::Base
21
21
  end
22
22
 
23
23
  include Redispatcher::Callbacks
24
- define_dispatcher_callbacks
24
+ define_dispatcher_callbacks :dispatch
25
25
 
26
26
  include Redispatcher::Dispatchable
27
27
 
@@ -6,24 +6,26 @@ module Redispatcher
6
6
  end
7
7
 
8
8
  module ClassMethods
9
- def define_dispatcher_callbacks
10
- define_callbacks :dispatch
9
+ def define_dispatcher_callbacks(*callbacks)
10
+ define_callbacks(*callbacks.flatten)
11
11
 
12
- eval <<-end_callbacks
13
- def before_dispatch(*args, &block)
14
- set_callback(:dispatch, :before, *args, &block)
15
- end
12
+ callbacks.each do |callback|
13
+ eval <<-end_callbacks
14
+ def before_#{callback}(*args, &block)
15
+ set_callback(:#{callback}, :before, *args, &block)
16
+ end
16
17
 
17
- def after_dispatch(*args, &block)
18
- set_callback(:dispatch, :after, *args, &block)
19
- end
20
- end_callbacks
18
+ def after_#{callback}(*args, &block)
19
+ set_callback(:#{callback}, :after, *args, &block)
20
+ end
21
+ end_callbacks
22
+ end
21
23
  end
22
24
  end
23
25
 
24
26
  module InstanceMethods
25
- def run_dispatcher_callbacks(&block)
26
- run_callbacks(:dispatch, &block)
27
+ def run_dispatcher_callbacks(callback, &block)
28
+ run_callbacks(callback, &block)
27
29
  end
28
30
  end
29
31
  end
@@ -11,7 +11,7 @@ module Redispatcher
11
11
  # @param [Hash] options
12
12
  # see {Redispatcher::Dispatcher#initialize}
13
13
  def dispatch(options = {})
14
- run_dispatcher_callbacks do
14
+ run_dispatcher_callbacks :dispatch do
15
15
  dispatcher_class.dispatch(self, options)
16
16
  end
17
17
  end
@@ -1,15 +1,16 @@
1
1
  module Redispatcher
2
2
  class Dispatcher
3
3
  include ActiveSupport::Callbacks
4
+ include Callbacks
4
5
  include Logger
5
6
 
6
- define_callbacks :initialize, :process, :commit, :rollback
7
+ define_dispatcher_callbacks(:initialize, :process, :commit, :rollback)
7
8
 
8
- set_callback :commit, :after do
9
+ after_commit do
9
10
  log "successfully dispatched"
10
11
  end
11
12
 
12
- set_callback :rollback, :after do
13
+ after_rollback do
13
14
  log "dispatching failed"
14
15
  end
15
16
 
@@ -18,26 +19,26 @@ module Redispatcher
18
19
  def initialize(object, options={})
19
20
  @object = object
20
21
  @options = options
21
- run_callbacks :initialize do
22
+ run_dispatcher_callbacks :initialize do
22
23
  log "initialize callback"
23
24
  end
24
25
  end
25
26
 
26
27
  def process
27
- run_callbacks :process do
28
+ run_dispatcher_callbacks :process do
28
29
  log "process callback"
29
30
  end
30
31
  end
31
32
 
32
33
  def commit
33
- run_callbacks :commit do
34
+ run_dispatcher_callbacks :commit do
34
35
  log "commit callback"
35
36
  end
36
37
  processed_object
37
38
  end
38
39
 
39
40
  def rollback
40
- run_callbacks :rollback do
41
+ run_dispatcher_callbacks :rollback do
41
42
  log "rollback callback"
42
43
  end
43
44
  end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'redispatcher'
7
- spec.version = '0.0.1'
7
+ spec.version = '0.0.2'
8
8
  spec.authors = ['Sergey Besedin']
9
9
  spec.email = ['kr3ssh@gmail.com']
10
10
  spec.summary = %q{Gem to dispatch ActiveRecord objects to anywhere}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redispatcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Besedin