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 +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +8 -2
- data/lib/wisper/active_record/publisher.rb +19 -4
- data/lib/wisper/active_record/version.rb +1 -1
- data/spec/wisper/activerecord_spec.rb +27 -1
- 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: abf0ef394a173a3870dc882787c583c98d5c78f5
|
4
|
+
data.tar.gz: 6183077725919d5ce4e5e3b1f917c79c847f77c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
+
[](http://badge.fury.io/rb/wisper-activerecord)
|
4
|
+
[](https://codeclimate.com/github/krisleech/wisper-activerecord)
|
3
5
|
[](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.
|
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}_#{
|
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_#{
|
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_#{
|
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_#{
|
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
|
@@ -76,10 +76,36 @@ describe 'ActiveRecord' do
|
|
76
76
|
|
77
77
|
let(:model) { model_class.first }
|
78
78
|
|
79
|
-
it 'publishes an
|
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.
|
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:
|
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
|