cony 2.2.3 → 2.2.4
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/.travis.yml +21 -2
- data/Gemfile.lock +22 -11
- data/README.md +4 -6
- data/VERSION +1 -1
- data/cony.gemspec +2 -0
- data/gemfiles/activesupport-5.0.gemfile +5 -0
- data/gemfiles/activesupport-5.1.gemfile +6 -0
- data/lib/cony/active_record.rb +6 -1
- data/spec/cony/active_record_spec.rb +1 -1
- data/spec/integration/active_record_spec.rb +203 -0
- metadata +35 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d3842111c6f329895cec4c644a89ebe7f3b0f15
|
4
|
+
data.tar.gz: 27c16fe6e690804943672252fdf0814d972d2472
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acdbf52d571bd33aad2686708df9c3d973788cfc148adf73e753c95f75a7d9f4bc1580e8aeee854d22dc3d9a10651c244842d26c7043e1910b770577a98e3ec0
|
7
|
+
data.tar.gz: bf9f4d1ebfc8fdef33ea46c12d8089d33c194a4bc65cd06e2c8d189da632820b55f8967a4cb5f625f3177adf15d5f9fa21299b4c63fd727a7892f814500990a8
|
data/.travis.yml
CHANGED
@@ -1,13 +1,32 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
3
|
- 2.0.0
|
4
|
-
- 2.1.
|
5
|
-
- 2.3.
|
4
|
+
- 2.1.0
|
5
|
+
- 2.3.4
|
6
|
+
- 2.4.2
|
6
7
|
gemfile:
|
7
8
|
- gemfiles/activesupport-3.2.gemfile
|
8
9
|
- gemfiles/activesupport-4.0.gemfile
|
9
10
|
- gemfiles/activesupport-4.1.gemfile
|
10
11
|
- gemfiles/activesupport-4.2.gemfile
|
12
|
+
- gemfiles/activesupport-5.0.gemfile
|
13
|
+
- gemfiles/activesupport-5.1.gemfile
|
14
|
+
matrix:
|
15
|
+
exclude:
|
16
|
+
- rvm: 2.0.0
|
17
|
+
gemfile: gemfiles/activesupport-5.0.gemfile
|
18
|
+
- rvm: 2.0.0
|
19
|
+
gemfile: gemfiles/activesupport-5.1.gemfile
|
20
|
+
- rvm: 2.1.0
|
21
|
+
gemfile: gemfiles/activesupport-5.0.gemfile
|
22
|
+
- rvm: 2.1.0
|
23
|
+
gemfile: gemfiles/activesupport-5.1.gemfile
|
24
|
+
- rvm: 2.4.2
|
25
|
+
gemfile: gemfiles/activesupport-3.2.gemfile
|
26
|
+
- rvm: 2.4.2
|
27
|
+
gemfile: gemfiles/activesupport-4.0.gemfile
|
28
|
+
- rvm: 2.4.2
|
29
|
+
gemfile: gemfiles/activesupport-4.1.gemfile
|
11
30
|
before_install:
|
12
31
|
- gem install bundler
|
13
32
|
notifications:
|
data/Gemfile.lock
CHANGED
@@ -1,25 +1,33 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cony (2.2.
|
5
|
-
activesupport (>=
|
4
|
+
cony (2.2.3)
|
5
|
+
activesupport (>= 5.1)
|
6
6
|
bunny (~> 2.6)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
|
11
|
+
activemodel (5.1.4)
|
12
|
+
activesupport (= 5.1.4)
|
13
|
+
activerecord (5.1.4)
|
14
|
+
activemodel (= 5.1.4)
|
15
|
+
activesupport (= 5.1.4)
|
16
|
+
arel (~> 8.0)
|
17
|
+
activesupport (5.1.4)
|
12
18
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
13
19
|
i18n (~> 0.7)
|
14
20
|
minitest (~> 5.1)
|
15
21
|
tzinfo (~> 1.1)
|
16
|
-
amq-protocol (2.0
|
17
|
-
|
18
|
-
|
19
|
-
|
22
|
+
amq-protocol (2.2.0)
|
23
|
+
arel (8.0.0)
|
24
|
+
bunny (2.7.1)
|
25
|
+
amq-protocol (>= 2.2.0)
|
26
|
+
concurrent-ruby (1.0.5)
|
20
27
|
diff-lcs (1.2.5)
|
21
|
-
i18n (0.
|
22
|
-
|
28
|
+
i18n (0.9.0)
|
29
|
+
concurrent-ruby (~> 1.0)
|
30
|
+
minitest (5.10.3)
|
23
31
|
rake (11.3.0)
|
24
32
|
rspec (3.5.0)
|
25
33
|
rspec-core (~> 3.5.0)
|
@@ -34,17 +42,20 @@ GEM
|
|
34
42
|
diff-lcs (>= 1.2.0, < 2.0)
|
35
43
|
rspec-support (~> 3.5.0)
|
36
44
|
rspec-support (3.5.0)
|
37
|
-
|
38
|
-
|
45
|
+
sqlite3 (1.3.13)
|
46
|
+
thread_safe (0.3.6)
|
47
|
+
tzinfo (1.2.3)
|
39
48
|
thread_safe (~> 0.1)
|
40
49
|
|
41
50
|
PLATFORMS
|
42
51
|
ruby
|
43
52
|
|
44
53
|
DEPENDENCIES
|
54
|
+
activerecord (>= 5.1)
|
45
55
|
cony!
|
46
56
|
rake (~> 11.0)
|
47
57
|
rspec (~> 3.0)
|
58
|
+
sqlite3
|
48
59
|
|
49
60
|
BUNDLED WITH
|
50
61
|
1.12.5
|
data/README.md
CHANGED
@@ -5,9 +5,9 @@ Cony sends notifications about the lifecycle of your models via AMQP.
|
|
5
5
|
|
6
6
|
## Setup
|
7
7
|
|
8
|
-
### Rails 3 &
|
8
|
+
### Rails 3, 4 & 5
|
9
9
|
|
10
|
-
In Rails 3 and
|
10
|
+
In Rails 3, 4 and 5.0, add this to your Gemfile and run the bundle command.
|
11
11
|
|
12
12
|
```ruby
|
13
13
|
gem 'cony'
|
@@ -108,8 +108,6 @@ The sent JSON structure will look like this:
|
|
108
108
|
|
109
109
|
## About
|
110
110
|
|
111
|
-
This gem is currently maintained and funded by [nine
|
111
|
+
This gem is currently maintained and funded by [nine](https://nine.ch).
|
112
112
|
|
113
|
-
[](https://www.nine.ch)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.2.
|
1
|
+
2.2.4
|
data/cony.gemspec
CHANGED
@@ -21,6 +21,8 @@ Gem::Specification.new do |s|
|
|
21
21
|
|
22
22
|
s.add_development_dependency 'rake', '~> 11.0'
|
23
23
|
s.add_development_dependency 'rspec', '~> 3.0'
|
24
|
+
s.add_development_dependency 'activerecord', '>= 3'
|
25
|
+
s.add_development_dependency 'sqlite3'
|
24
26
|
|
25
27
|
s.add_runtime_dependency 'activesupport', '>= 3'
|
26
28
|
s.add_runtime_dependency 'bunny', '~> 2.6'
|
data/lib/cony/active_record.rb
CHANGED
@@ -48,8 +48,13 @@ module Cony
|
|
48
48
|
@cony_amqp_connection ||= Cony::AMQPConnectionHandler.new(Cony.config.amqp)
|
49
49
|
end
|
50
50
|
|
51
|
+
def cony_changes
|
52
|
+
return saved_changes if respond_to? :saved_changes
|
53
|
+
changes
|
54
|
+
end
|
55
|
+
|
51
56
|
def cony_mapped_changes
|
52
|
-
|
57
|
+
cony_changes.map do |name, change|
|
53
58
|
{ name => { old: change.first, new: change.last } }
|
54
59
|
end
|
55
60
|
end
|
@@ -26,7 +26,7 @@ describe Cony::ActiveRecord do
|
|
26
26
|
def self.after_commit(callback); end
|
27
27
|
def self.name; "Anonymaus::Klass"; end
|
28
28
|
def id; #{id}; end
|
29
|
-
def
|
29
|
+
def saved_changes; #{active_record_changes}; end
|
30
30
|
def attributes; #{active_record_attributes}; end
|
31
31
|
|
32
32
|
include Cony::ActiveRecord
|
@@ -0,0 +1,203 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require "active_record"
|
4
|
+
require 'cony/active_record'
|
5
|
+
|
6
|
+
class MyModel < ActiveRecord::Base
|
7
|
+
include Cony::ActiveRecord
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'Integration' do
|
11
|
+
describe Cony::ActiveRecord do
|
12
|
+
before do
|
13
|
+
ActiveRecord::Base.establish_connection(
|
14
|
+
adapter: "sqlite3",
|
15
|
+
database: ":memory:"
|
16
|
+
)
|
17
|
+
|
18
|
+
ActiveRecord::Schema.verbose = false
|
19
|
+
ActiveRecord::Schema.define do
|
20
|
+
create_table :my_models do |table|
|
21
|
+
table.column :title, :string
|
22
|
+
table.column :num, :integer
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
allow(Cony::AMQPConnectionHandler).to receive(:new).and_return(amqp_connection)
|
27
|
+
allow(amqp_connection).to receive(:publish)
|
28
|
+
end
|
29
|
+
|
30
|
+
let(:amqp_connection) { double('Cony::AMQPConnectionHandler') }
|
31
|
+
|
32
|
+
let(:title) { 'Sansibar' }
|
33
|
+
let(:num) { 21 }
|
34
|
+
|
35
|
+
subject { MyModel.new title: title, num: num }
|
36
|
+
|
37
|
+
describe 'Create new MyModel' do
|
38
|
+
let(:event) { :created }
|
39
|
+
|
40
|
+
it 'sends a message' do
|
41
|
+
expect(amqp_connection).to receive(:publish)
|
42
|
+
subject.save
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'sets the routing_key' do
|
46
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
47
|
+
expect(key).to eq("my_model.mutation.#{event}")
|
48
|
+
end
|
49
|
+
|
50
|
+
subject.save
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'sets the correct id' do
|
54
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
55
|
+
expect(payload[:id]).to eq(subject.id)
|
56
|
+
end
|
57
|
+
|
58
|
+
subject.save
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'sets the correct model' do
|
62
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
63
|
+
expect(payload[:model]).to eq(subject.class.name)
|
64
|
+
end
|
65
|
+
|
66
|
+
subject.save
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'sets the correct event type' do
|
70
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
71
|
+
expect(payload[:event]).to eq(event)
|
72
|
+
end
|
73
|
+
|
74
|
+
subject.save
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'contains the changes' do
|
78
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
79
|
+
expect(payload[:changes]).to match_array([
|
80
|
+
{"id"=>{old: nil, new: subject.id}},
|
81
|
+
{"title"=>{old: nil, new: title}},
|
82
|
+
{"num"=>{old: nil, new: num}}
|
83
|
+
])
|
84
|
+
end
|
85
|
+
|
86
|
+
subject.save
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe 'Update a MyModel' do
|
91
|
+
before { subject.save }
|
92
|
+
|
93
|
+
let(:event) { :updated }
|
94
|
+
let(:new_title) { 'Tristan da Cunha' }
|
95
|
+
|
96
|
+
it 'sends a message' do
|
97
|
+
expect(amqp_connection).to receive(:publish)
|
98
|
+
subject.title = new_title
|
99
|
+
subject.save
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'sets the routing_key' do
|
103
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
104
|
+
expect(key).to eq("my_model.mutation.#{event}")
|
105
|
+
end
|
106
|
+
|
107
|
+
subject.title = new_title
|
108
|
+
subject.save
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'sets the correct id' do
|
112
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
113
|
+
expect(payload[:id]).to eq(subject.id)
|
114
|
+
end
|
115
|
+
|
116
|
+
subject.title = new_title
|
117
|
+
subject.save
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'sets the correct model' do
|
121
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
122
|
+
expect(payload[:model]).to eq(subject.class.name)
|
123
|
+
end
|
124
|
+
|
125
|
+
subject.title = new_title
|
126
|
+
subject.save
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'sets the correct event type' do
|
130
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
131
|
+
expect(payload[:event]).to eq(event)
|
132
|
+
end
|
133
|
+
|
134
|
+
subject.title = new_title
|
135
|
+
subject.save
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'contains the changes' do
|
139
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
140
|
+
expect(payload[:changes]).to match_array([{"title"=>{old: title, new: new_title}}])
|
141
|
+
end
|
142
|
+
|
143
|
+
subject.title = new_title
|
144
|
+
subject.save
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
describe 'Delete a MyModel' do
|
149
|
+
before { subject.save }
|
150
|
+
|
151
|
+
let(:event) { :destroyed }
|
152
|
+
|
153
|
+
it 'sends a message' do
|
154
|
+
expect(amqp_connection).to receive(:publish)
|
155
|
+
subject.destroy
|
156
|
+
end
|
157
|
+
|
158
|
+
it 'sets the routing_key' do
|
159
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
160
|
+
expect(key).to eq("my_model.mutation.#{event}")
|
161
|
+
end
|
162
|
+
|
163
|
+
subject.destroy
|
164
|
+
end
|
165
|
+
|
166
|
+
it 'sets the correct id' do
|
167
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
168
|
+
expect(payload[:id]).to eq(subject.id)
|
169
|
+
end
|
170
|
+
|
171
|
+
subject.destroy
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'sets the correct model' do
|
175
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
176
|
+
expect(payload[:model]).to eq(subject.class.name)
|
177
|
+
end
|
178
|
+
|
179
|
+
subject.destroy
|
180
|
+
end
|
181
|
+
|
182
|
+
it 'sets the correct event type' do
|
183
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
184
|
+
expect(payload[:event]).to eq(event)
|
185
|
+
end
|
186
|
+
|
187
|
+
subject.destroy
|
188
|
+
end
|
189
|
+
|
190
|
+
it 'contains the changes' do
|
191
|
+
expect(amqp_connection).to receive(:publish) do |payload, key|
|
192
|
+
expect(payload[:changes]).to match_array([
|
193
|
+
{"id"=>{old: subject.id, new: nil}},
|
194
|
+
{"title"=>{old: title, new: nil}},
|
195
|
+
{"num"=>{old: num, new: nil}}
|
196
|
+
])
|
197
|
+
end
|
198
|
+
|
199
|
+
subject.destroy
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cony
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nine.ch Development-Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activerecord
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sqlite3
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: activesupport
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -91,11 +119,14 @@ files:
|
|
91
119
|
- gemfiles/activesupport-4.0.gemfile
|
92
120
|
- gemfiles/activesupport-4.1.gemfile
|
93
121
|
- gemfiles/activesupport-4.2.gemfile
|
122
|
+
- gemfiles/activesupport-5.0.gemfile
|
123
|
+
- gemfiles/activesupport-5.1.gemfile
|
94
124
|
- lib/cony.rb
|
95
125
|
- lib/cony/active_record.rb
|
96
126
|
- lib/cony/amqp_connection_handler.rb
|
97
127
|
- spec/cony/active_record_spec.rb
|
98
128
|
- spec/cony/amqp_connection_handler_spec.rb
|
129
|
+
- spec/integration/active_record_spec.rb
|
99
130
|
- spec/spec_helper.rb
|
100
131
|
homepage: http://github.com/ninech/
|
101
132
|
licenses:
|
@@ -117,11 +148,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
148
|
version: '0'
|
118
149
|
requirements: []
|
119
150
|
rubyforge_project:
|
120
|
-
rubygems_version: 2.5.
|
151
|
+
rubygems_version: 2.5.1
|
121
152
|
signing_key:
|
122
153
|
specification_version: 4
|
123
154
|
summary: Automatically sends notifications via AMQP when a model has been changed.
|
124
|
-
test_files:
|
125
|
-
- spec/cony/active_record_spec.rb
|
126
|
-
- spec/cony/amqp_connection_handler_spec.rb
|
127
|
-
- spec/spec_helper.rb
|
155
|
+
test_files: []
|