wisper-activerecord 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 666f55caf67abe6ebccc3a5670316f32c4ff8406
4
- data.tar.gz: 10583078a56cb785deeb6c9548de3a09499d4e8d
3
+ metadata.gz: abf0ef394a173a3870dc882787c583c98d5c78f5
4
+ data.tar.gz: 6183077725919d5ce4e5e3b1f917c79c847f77c0
5
5
  SHA512:
6
- metadata.gz: 2212d5f93e3ecd82c01369f52396e6ee0e41df1a320c95496c76d3e50d0e8409a2d508c22b31b606bfd847264b65ce80743676a22b68b75e8a54fdb165cc6d24
7
- data.tar.gz: 5072defbcaf59d3df9eaf8ee6b8cfb01107b4be2793d53e24167d7ff3e9aa37747c6dbe6e7d19bdbd91e6e50009e1de3309d0e839e71afa9468259b6841af210
6
+ metadata.gz: 8053b1a558f92f4ccfa5e138122956a4266715852b7f89702111071dbc3fc8675856f7fad35ee36fbbbbce6eee795a084be4e8142813360c64744f400d16d8cb
7
+ data.tar.gz: 9aaadc00d223e96a5b66055697ce762f2e7eb17a688a9bc32f68d59e9d127563f0e8bc8a6c562b31801ce83b81ece3e90655e2a2dbbd52bc684c40d559624aa9
data/CHANGELOG.md ADDED
@@ -0,0 +1,10 @@
1
+ ## 0.3.0 (5 Feb 2015)
2
+
3
+ * Fixed README (Thomas Brus / thomasbrus)
4
+ * Added `:after_commit` / `:<model_name>_committed` events (Ryan Platte / replaid)
5
+
6
+ ## 0.2.0 (21 Oct 2014)
7
+
8
+ ## 0.1.0 (14 Oct 2014)
9
+
10
+ * Initial implementation (Kris Leech / krisleech)
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Wisper::ActiveRecord
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/wisper-activerecord.png)](http://badge.fury.io/rb/wisper-activerecord)
4
+ [![Code Climate](https://codeclimate.com/github/krisleech/wisper-activerecord.png)](https://codeclimate.com/github/krisleech/wisper-activerecord)
3
5
  [![Build Status](https://travis-ci.org/krisleech/wisper-activerecord.png?branch=master)](https://travis-ci.org/krisleech/wisper-activerecord)
4
6
 
5
7
  Transparently publish model lifecycle events to subscribers.
@@ -58,12 +60,13 @@ Please refer to the [Wisper README](https://github.com/krisleech/wisper) for ful
58
60
 
59
61
  The events which are automatically broadcast are:
60
62
 
61
- * `after_create`
62
63
  * `after_create`
63
64
  * `after_destroy`
64
65
  * `create_<model_name>_{successful, failed}`
65
66
  * `update_<model_name>_{successful, failed}`
66
67
  * `destroy_<model_name>_successful`
68
+ * `<model_name>_committed`
69
+ * `after_commit`
67
70
  * `after_rollback`
68
71
 
69
72
  ### Reacting to Events
@@ -109,6 +112,9 @@ class MeetingsController < ApplicationController
109
112
  end
110
113
  ```
111
114
 
115
+ Using `on` to subscribe a block to handle the response is optional,
116
+ you can still use `if @meeting.save` if you prefer.
117
+
112
118
  ### Listener
113
119
 
114
120
  **Which simply records an audit in memory**
@@ -150,7 +156,7 @@ class Auditor
150
156
  action: action,
151
157
  subject_id: subject.id,
152
158
  subject_class: subject.class.to_s,
153
- changes: subject.changes,
159
+ changes: subject.previous_changes,
154
160
  created_at: Time.now
155
161
  }
156
162
  end
@@ -10,6 +10,7 @@ module Wisper
10
10
  after_commit :after_create_broadcast, on: :create
11
11
  after_commit :after_update_broadcast, on: :update
12
12
  after_commit :after_destroy_broadcast, on: :destroy
13
+ after_commit :after_commit_broadcast
13
14
  after_rollback :after_rollback_broadcast
14
15
  end
15
16
 
@@ -30,27 +31,41 @@ module Wisper
30
31
 
31
32
  def after_validation_broadcast
32
33
  action = new_record? ? 'create' : 'update'
33
- broadcast("#{action}_#{self.class.model_name.param_key}_failed", self) unless errors.empty?
34
+ broadcast("#{action}_#{broadcast_model_name_key}_failed", self) unless errors.empty?
34
35
  end
35
36
 
36
37
  def after_create_broadcast
37
38
  broadcast(:after_create, self)
38
- broadcast("create_#{self.class.model_name.param_key}_successful", self)
39
+ broadcast("create_#{broadcast_model_name_key}_successful", self)
39
40
  end
40
41
 
41
42
  def after_update_broadcast
42
43
  broadcast(:after_update, self)
43
- broadcast("update_#{self.class.model_name.param_key}_successful", self)
44
+ broadcast("update_#{broadcast_model_name_key}_successful", self)
44
45
  end
45
46
 
46
47
  def after_destroy_broadcast
47
48
  broadcast(:after_destroy, self)
48
- broadcast("destroy_#{self.class.model_name.param_key}_successful", self)
49
+ broadcast("destroy_#{broadcast_model_name_key}_successful", self)
50
+ end
51
+
52
+ def after_commit_broadcast
53
+ broadcast(:after_commit, self)
54
+ broadcast("#{broadcast_model_name_key}_committed", self)
55
+ end
56
+
57
+ def after_commit_broadcast
58
+ broadcast(:after_commit, self)
59
+ broadcast("#{broadcast_model_name_key}_committed", self)
49
60
  end
50
61
 
51
62
  def after_rollback_broadcast
52
63
  broadcast(:after_rollback, self)
53
64
  end
65
+
66
+ def broadcast_model_name_key
67
+ self.class.model_name.param_key
68
+ end
54
69
  end
55
70
  end
56
71
  end
@@ -1,5 +1,5 @@
1
1
  module Wisper
2
2
  module ActiveRecord
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
@@ -76,10 +76,36 @@ describe 'ActiveRecord' do
76
76
 
77
77
  let(:model) { model_class.first }
78
78
 
79
- it 'publishes an on_destroy event to listener' do
79
+ it 'publishes an after_destroy event to listener' do
80
80
  expect(listener).to receive(:after_destroy).with(instance_of(model_class))
81
81
  model_class.subscribe(listener)
82
82
  model.destroy
83
83
  end
84
84
  end
85
+
86
+ describe 'commit' do
87
+ after do
88
+ model_class.subscribe(listener)
89
+ model_class.create
90
+ end
91
+
92
+ it 'publishes an after_commit event to listener' do
93
+ expect(listener).to receive(:after_commit).with(instance_of(model_class))
94
+ end
95
+
96
+ it 'publishes a <model_name>_committed event to listener' do
97
+ expect(listener).to receive(:meeting_committed).with(instance_of(model_class))
98
+ end
99
+ end
100
+
101
+ describe 'rollback' do
102
+ it 'publishes an after_rollback event to listener' do
103
+ expect(listener).to receive(:after_rollback).with(instance_of(model_class))
104
+ model_class.subscribe(listener)
105
+ model_class.transaction do
106
+ model_class.create!
107
+ raise ActiveRecord::Rollback
108
+ end
109
+ end
110
+ end
85
111
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wisper-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kris Leech
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-21 00:00:00.000000000 Z
11
+ date: 2015-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: wisper
@@ -48,6 +48,7 @@ files:
48
48
  - ".gitignore"
49
49
  - ".rspec"
50
50
  - ".travis.yml"
51
+ - CHANGELOG.md
51
52
  - Gemfile
52
53
  - LICENSE.txt
53
54
  - README.md