table_sync 4.2.2 → 5.0.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/.github/workflows/ci.yml +52 -0
- data/CHANGELOG.md +16 -9
- data/Gemfile.lock +139 -136
- data/README.md +1 -1
- data/docs/message_protocol.md +3 -3
- data/docs/publishing.md +15 -29
- data/lib/table_sync/publishing/base_publisher.rb +10 -14
- data/lib/table_sync/publishing/publisher.rb +15 -15
- data/lib/table_sync/receiving/handler.rb +4 -3
- data/lib/table_sync/receiving/model/active_record.rb +1 -1
- data/lib/table_sync/utils/interface_checker.rb +2 -2
- data/lib/table_sync/version.rb +1 -1
- data/table_sync.gemspec +7 -7
- metadata +32 -32
- data/.travis.yml +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d78fecdf8f43cfa8a84fb4ce366af5c9a8da236988b66887ef5aff16c40e3f89
|
4
|
+
data.tar.gz: 47ad42e41cc6b3383977aa63105a8dc7c575115dddd00f868acfb6b4a15f73b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17b77342ca100235816dbc5d1dabf9391eb0a612eb5c540776b6e7f234f23da4a50fe802a62e511e4148657f804a6e04159560798f650dfd3fb1c3b8f07cb005
|
7
|
+
data.tar.gz: 83e53da6b5895ee392a7b0d53e70509ce453c7973a0f08d3b8bd1b7cea7dc50d252a1848506206cbcfef80fa80bc16abea3f1f711ce4806097a540fac31e0bc3
|
@@ -0,0 +1,52 @@
|
|
1
|
+
name: CI
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
test:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
|
9
|
+
# We want to run on external PRs, but not on our own internal PRs as they'll be run on push event
|
10
|
+
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != 'umbrellio/table_sync'
|
11
|
+
|
12
|
+
services:
|
13
|
+
postgres:
|
14
|
+
image: postgres
|
15
|
+
env:
|
16
|
+
POSTGRES_USER: root
|
17
|
+
POSTGRES_HOST_AUTH_METHOD: trust
|
18
|
+
options: >-
|
19
|
+
--health-cmd pg_isready
|
20
|
+
--health-interval 10s
|
21
|
+
--health-timeout 5s
|
22
|
+
--health-retries 5
|
23
|
+
ports:
|
24
|
+
- 5432:5432
|
25
|
+
|
26
|
+
env:
|
27
|
+
PGHOST: localhost
|
28
|
+
PGUSER: root
|
29
|
+
|
30
|
+
strategy:
|
31
|
+
fail-fast: false
|
32
|
+
matrix:
|
33
|
+
ruby: ["2.5", "2.6", "2.7", "3.0"]
|
34
|
+
|
35
|
+
name: ${{ matrix.ruby }}
|
36
|
+
|
37
|
+
steps:
|
38
|
+
- uses: actions/checkout@v2
|
39
|
+
|
40
|
+
- uses: ruby/setup-ruby@v1
|
41
|
+
with:
|
42
|
+
ruby-version: ${{ matrix.ruby }}
|
43
|
+
bundler-cache: true
|
44
|
+
|
45
|
+
- run: psql -c 'CREATE DATABASE table_sync_test'
|
46
|
+
- run: bundle exec rake bundle:audit
|
47
|
+
- run: bundle exec rubocop
|
48
|
+
- run: bundle exec rspec
|
49
|
+
|
50
|
+
- uses: coverallsapp/github-action@v1.1.2
|
51
|
+
with:
|
52
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
data/CHANGELOG.md
CHANGED
@@ -1,16 +1,23 @@
|
|
1
1
|
# Changelog
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
+
## [5.0.0] - 2021-03-04
|
5
|
+
### Fixed
|
6
|
+
- Fix `delete` events being broken when either `#attrs_for_routing_key` or `#attrs_for_metadata` was defined on a model.
|
7
|
+
|
8
|
+
### Changed
|
9
|
+
- Instead of original attributes (default raw model attributes), use published attributes (as defined by `#attributes_for_sync` or `.table_sync_destroy_attributes`) for `TableSync.routing_key_callable` and `TableSync.routing_metadata_callable`.
|
10
|
+
- Send all original attributes for `delete` events instead of just PK.
|
11
|
+
|
4
12
|
## [4.2.2] - 2020-11-20
|
5
13
|
### Fixed
|
6
14
|
- potential data corruption with batches
|
7
15
|
|
8
16
|
## [4.2.1] - 2020-11-20
|
9
17
|
### Fixed
|
10
|
-
- bug with sorting data in handler, it was bad idea to use `.hash` replaced to `.to_s`
|
18
|
+
- bug with sorting data in handler, it was bad idea to use `.hash` replaced to `.to_s`
|
11
19
|
|
12
20
|
## [4.2.0] - 2020-11-19
|
13
|
-
|
14
21
|
- No changes. Just stabilization release.
|
15
22
|
|
16
23
|
## [4.1.2] - 2020-11-19
|
@@ -42,9 +49,9 @@ All notable changes to this project will be documented in this file.
|
|
42
49
|
### Changed
|
43
50
|
- .rubocop.yml
|
44
51
|
- documentation
|
45
|
-
- modules hierarchy (split receiving and publishing)
|
46
|
-
`TableSync::Publisher` -> `TableSync::Publishing::Publisher`
|
47
|
-
`TableSync::BatchPublisher` -> `TableSync::Publishing::BatchPublisher`
|
52
|
+
- modules hierarchy (split receiving and publishing)
|
53
|
+
`TableSync::Publisher` -> `TableSync::Publishing::Publisher`
|
54
|
+
`TableSync::BatchPublisher` -> `TableSync::Publishing::BatchPublisher`
|
48
55
|
`TableSync::ReceivingHandler` -> `TableSync::Receiving::Handler`
|
49
56
|
- made data batches processing as native
|
50
57
|
- implemented callbacks as options
|
@@ -52,10 +59,10 @@ All notable changes to this project will be documented in this file.
|
|
52
59
|
- type checking in options
|
53
60
|
- `before_commit on: event, &block` -> `before_update(&block)` or `before_destroy(&block)`
|
54
61
|
- `after_commit on: event, &block` -> `after_commit_on_update(&block)` or `after_commit_on_destroy(&block)`
|
55
|
-
- changed parameters in some options:
|
56
|
-
add `raw_data`
|
57
|
-
`current_row` -> `row`
|
58
|
-
...
|
62
|
+
- changed parameters in some options:
|
63
|
+
add `raw_data`
|
64
|
+
`current_row` -> `row`
|
65
|
+
...
|
59
66
|
see documents for details
|
60
67
|
|
61
68
|
### Removed
|
data/Gemfile.lock
CHANGED
@@ -1,72 +1,76 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
table_sync (
|
4
|
+
table_sync (5.0.0)
|
5
5
|
memery
|
6
|
-
rabbit_messaging
|
6
|
+
rabbit_messaging
|
7
7
|
rails
|
8
8
|
self_data
|
9
9
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
12
12
|
specs:
|
13
|
-
actioncable (6.
|
14
|
-
actionpack (= 6.
|
13
|
+
actioncable (6.1.3)
|
14
|
+
actionpack (= 6.1.3)
|
15
|
+
activesupport (= 6.1.3)
|
15
16
|
nio4r (~> 2.0)
|
16
17
|
websocket-driver (>= 0.6.1)
|
17
|
-
actionmailbox (6.
|
18
|
-
actionpack (= 6.
|
19
|
-
activejob (= 6.
|
20
|
-
activerecord (= 6.
|
21
|
-
activestorage (= 6.
|
22
|
-
activesupport (= 6.
|
18
|
+
actionmailbox (6.1.3)
|
19
|
+
actionpack (= 6.1.3)
|
20
|
+
activejob (= 6.1.3)
|
21
|
+
activerecord (= 6.1.3)
|
22
|
+
activestorage (= 6.1.3)
|
23
|
+
activesupport (= 6.1.3)
|
23
24
|
mail (>= 2.7.1)
|
24
|
-
actionmailer (6.
|
25
|
-
actionpack (= 6.
|
26
|
-
actionview (= 6.
|
27
|
-
activejob (= 6.
|
25
|
+
actionmailer (6.1.3)
|
26
|
+
actionpack (= 6.1.3)
|
27
|
+
actionview (= 6.1.3)
|
28
|
+
activejob (= 6.1.3)
|
29
|
+
activesupport (= 6.1.3)
|
28
30
|
mail (~> 2.5, >= 2.5.4)
|
29
31
|
rails-dom-testing (~> 2.0)
|
30
|
-
actionpack (6.
|
31
|
-
actionview (= 6.
|
32
|
-
activesupport (= 6.
|
33
|
-
rack (~> 2.0, >= 2.0.
|
32
|
+
actionpack (6.1.3)
|
33
|
+
actionview (= 6.1.3)
|
34
|
+
activesupport (= 6.1.3)
|
35
|
+
rack (~> 2.0, >= 2.0.9)
|
34
36
|
rack-test (>= 0.6.3)
|
35
37
|
rails-dom-testing (~> 2.0)
|
36
38
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
37
|
-
actiontext (6.
|
38
|
-
actionpack (= 6.
|
39
|
-
activerecord (= 6.
|
40
|
-
activestorage (= 6.
|
41
|
-
activesupport (= 6.
|
39
|
+
actiontext (6.1.3)
|
40
|
+
actionpack (= 6.1.3)
|
41
|
+
activerecord (= 6.1.3)
|
42
|
+
activestorage (= 6.1.3)
|
43
|
+
activesupport (= 6.1.3)
|
42
44
|
nokogiri (>= 1.8.5)
|
43
|
-
actionview (6.
|
44
|
-
activesupport (= 6.
|
45
|
+
actionview (6.1.3)
|
46
|
+
activesupport (= 6.1.3)
|
45
47
|
builder (~> 3.1)
|
46
48
|
erubi (~> 1.4)
|
47
49
|
rails-dom-testing (~> 2.0)
|
48
50
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
49
|
-
activejob (6.
|
50
|
-
activesupport (= 6.
|
51
|
+
activejob (6.1.3)
|
52
|
+
activesupport (= 6.1.3)
|
51
53
|
globalid (>= 0.3.6)
|
52
|
-
activemodel (6.
|
53
|
-
activesupport (= 6.
|
54
|
-
activerecord (6.
|
55
|
-
activemodel (= 6.
|
56
|
-
activesupport (= 6.
|
57
|
-
activestorage (6.
|
58
|
-
actionpack (= 6.
|
59
|
-
activejob (= 6.
|
60
|
-
activerecord (= 6.
|
54
|
+
activemodel (6.1.3)
|
55
|
+
activesupport (= 6.1.3)
|
56
|
+
activerecord (6.1.3)
|
57
|
+
activemodel (= 6.1.3)
|
58
|
+
activesupport (= 6.1.3)
|
59
|
+
activestorage (6.1.3)
|
60
|
+
actionpack (= 6.1.3)
|
61
|
+
activejob (= 6.1.3)
|
62
|
+
activerecord (= 6.1.3)
|
63
|
+
activesupport (= 6.1.3)
|
61
64
|
marcel (~> 0.3.1)
|
62
|
-
|
65
|
+
mimemagic (~> 0.3.2)
|
66
|
+
activesupport (6.1.3)
|
63
67
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
64
|
-
i18n (>=
|
65
|
-
minitest (
|
66
|
-
tzinfo (~>
|
67
|
-
zeitwerk (~> 2.
|
68
|
+
i18n (>= 1.6, < 2)
|
69
|
+
minitest (>= 5.1)
|
70
|
+
tzinfo (~> 2.0)
|
71
|
+
zeitwerk (~> 2.3)
|
68
72
|
amq-protocol (2.3.2)
|
69
|
-
ast (2.4.
|
73
|
+
ast (2.4.2)
|
70
74
|
builder (3.2.4)
|
71
75
|
bundler-audit (0.7.0.1)
|
72
76
|
bundler (>= 1.2.0, < 3)
|
@@ -74,28 +78,21 @@ GEM
|
|
74
78
|
bunny (2.17.0)
|
75
79
|
amq-protocol (~> 2.3, >= 2.3.1)
|
76
80
|
coderay (1.1.3)
|
77
|
-
concurrent-ruby (1.1.
|
78
|
-
coveralls (0.8.23)
|
79
|
-
json (>= 1.8, < 3)
|
80
|
-
simplecov (~> 0.16.1)
|
81
|
-
term-ansicolor (~> 1.3)
|
82
|
-
thor (>= 0.19.4, < 2.0)
|
83
|
-
tins (~> 1.6)
|
81
|
+
concurrent-ruby (1.1.8)
|
84
82
|
crass (1.0.6)
|
85
83
|
diff-lcs (1.4.4)
|
86
|
-
docile (1.3.
|
84
|
+
docile (1.3.5)
|
87
85
|
erubi (1.10.0)
|
88
86
|
exception_notification (4.4.3)
|
89
87
|
actionmailer (>= 4.0, < 7)
|
90
88
|
activesupport (>= 4.0, < 7)
|
91
89
|
globalid (0.4.2)
|
92
90
|
activesupport (>= 4.2.0)
|
93
|
-
i18n (1.8.
|
91
|
+
i18n (1.8.9)
|
94
92
|
concurrent-ruby (~> 1.0)
|
95
|
-
json (2.3.1)
|
96
93
|
lamian (1.2.0)
|
97
94
|
rails (>= 4.2)
|
98
|
-
loofah (2.
|
95
|
+
loofah (2.9.0)
|
99
96
|
crass (~> 1.0.2)
|
100
97
|
nokogiri (>= 1.5.9)
|
101
98
|
mail (2.7.1)
|
@@ -107,16 +104,17 @@ GEM
|
|
107
104
|
method_source (1.0.0)
|
108
105
|
mimemagic (0.3.5)
|
109
106
|
mini_mime (1.0.2)
|
110
|
-
mini_portile2 (2.
|
111
|
-
minitest (5.14.
|
112
|
-
nio4r (2.5.
|
113
|
-
nokogiri (1.
|
114
|
-
mini_portile2 (~> 2.
|
115
|
-
|
116
|
-
|
107
|
+
mini_portile2 (2.5.0)
|
108
|
+
minitest (5.14.4)
|
109
|
+
nio4r (2.5.7)
|
110
|
+
nokogiri (1.11.1)
|
111
|
+
mini_portile2 (~> 2.5.0)
|
112
|
+
racc (~> 1.4)
|
113
|
+
parallel (1.20.1)
|
114
|
+
parser (3.0.0.0)
|
117
115
|
ast (~> 2.4.1)
|
118
|
-
pg (
|
119
|
-
pry (0.
|
116
|
+
pg (1.2.3)
|
117
|
+
pry (0.14.0)
|
120
118
|
coderay (~> 1.1)
|
121
119
|
method_source (~> 1.0)
|
122
120
|
rabbit_messaging (0.9.0)
|
@@ -126,88 +124,99 @@ GEM
|
|
126
124
|
rails (>= 5.2)
|
127
125
|
sneakers (~> 2.0)
|
128
126
|
tainbox
|
127
|
+
racc (1.5.2)
|
129
128
|
rack (2.2.3)
|
130
129
|
rack-test (1.1.0)
|
131
130
|
rack (>= 1.0, < 3)
|
132
|
-
rails (6.
|
133
|
-
actioncable (= 6.
|
134
|
-
actionmailbox (= 6.
|
135
|
-
actionmailer (= 6.
|
136
|
-
actionpack (= 6.
|
137
|
-
actiontext (= 6.
|
138
|
-
actionview (= 6.
|
139
|
-
activejob (= 6.
|
140
|
-
activemodel (= 6.
|
141
|
-
activerecord (= 6.
|
142
|
-
activestorage (= 6.
|
143
|
-
activesupport (= 6.
|
144
|
-
bundler (>= 1.
|
145
|
-
railties (= 6.
|
131
|
+
rails (6.1.3)
|
132
|
+
actioncable (= 6.1.3)
|
133
|
+
actionmailbox (= 6.1.3)
|
134
|
+
actionmailer (= 6.1.3)
|
135
|
+
actionpack (= 6.1.3)
|
136
|
+
actiontext (= 6.1.3)
|
137
|
+
actionview (= 6.1.3)
|
138
|
+
activejob (= 6.1.3)
|
139
|
+
activemodel (= 6.1.3)
|
140
|
+
activerecord (= 6.1.3)
|
141
|
+
activestorage (= 6.1.3)
|
142
|
+
activesupport (= 6.1.3)
|
143
|
+
bundler (>= 1.15.0)
|
144
|
+
railties (= 6.1.3)
|
146
145
|
sprockets-rails (>= 2.0.0)
|
147
146
|
rails-dom-testing (2.0.3)
|
148
147
|
activesupport (>= 4.2.0)
|
149
148
|
nokogiri (>= 1.6)
|
150
149
|
rails-html-sanitizer (1.3.0)
|
151
150
|
loofah (~> 2.3)
|
152
|
-
railties (6.
|
153
|
-
actionpack (= 6.
|
154
|
-
activesupport (= 6.
|
151
|
+
railties (6.1.3)
|
152
|
+
actionpack (= 6.1.3)
|
153
|
+
activesupport (= 6.1.3)
|
155
154
|
method_source
|
156
155
|
rake (>= 0.8.7)
|
157
|
-
thor (
|
156
|
+
thor (~> 1.0)
|
158
157
|
rainbow (3.0.0)
|
159
|
-
rake (13.0.
|
160
|
-
regexp_parser (1.
|
158
|
+
rake (13.0.3)
|
159
|
+
regexp_parser (2.1.1)
|
161
160
|
rexml (3.2.4)
|
162
|
-
rspec (3.
|
163
|
-
rspec-core (~> 3.
|
164
|
-
rspec-expectations (~> 3.
|
165
|
-
rspec-mocks (~> 3.
|
166
|
-
rspec-core (3.
|
167
|
-
rspec-support (~> 3.
|
168
|
-
rspec-expectations (3.
|
161
|
+
rspec (3.10.0)
|
162
|
+
rspec-core (~> 3.10.0)
|
163
|
+
rspec-expectations (~> 3.10.0)
|
164
|
+
rspec-mocks (~> 3.10.0)
|
165
|
+
rspec-core (3.10.1)
|
166
|
+
rspec-support (~> 3.10.0)
|
167
|
+
rspec-expectations (3.10.1)
|
169
168
|
diff-lcs (>= 1.2.0, < 2.0)
|
170
|
-
rspec-support (~> 3.
|
171
|
-
rspec-mocks (3.
|
169
|
+
rspec-support (~> 3.10.0)
|
170
|
+
rspec-mocks (3.10.2)
|
172
171
|
diff-lcs (>= 1.2.0, < 2.0)
|
173
|
-
rspec-support (~> 3.
|
174
|
-
rspec-support (3.
|
175
|
-
rubocop (
|
172
|
+
rspec-support (~> 3.10.0)
|
173
|
+
rspec-support (3.10.2)
|
174
|
+
rubocop (1.11.0)
|
176
175
|
parallel (~> 1.10)
|
177
|
-
parser (>=
|
176
|
+
parser (>= 3.0.0.0)
|
178
177
|
rainbow (>= 2.2.2, < 4.0)
|
179
|
-
regexp_parser (>= 1.
|
178
|
+
regexp_parser (>= 1.8, < 3.0)
|
180
179
|
rexml
|
181
|
-
rubocop-ast (>=
|
180
|
+
rubocop-ast (>= 1.2.0, < 2.0)
|
182
181
|
ruby-progressbar (~> 1.7)
|
183
|
-
unicode-display_width (>= 1.4.0, <
|
184
|
-
rubocop-ast (
|
182
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
183
|
+
rubocop-ast (1.4.1)
|
185
184
|
parser (>= 2.7.1.5)
|
186
|
-
rubocop-config-umbrellio (
|
187
|
-
rubocop (=
|
188
|
-
rubocop-performance (= 1.
|
189
|
-
rubocop-rails (= 2.
|
190
|
-
rubocop-
|
191
|
-
|
192
|
-
rubocop (
|
193
|
-
rubocop-
|
185
|
+
rubocop-config-umbrellio (1.11.0.40)
|
186
|
+
rubocop (= 1.11.0)
|
187
|
+
rubocop-performance (= 1.10.0)
|
188
|
+
rubocop-rails (= 2.9.1)
|
189
|
+
rubocop-rake (= 0.5.1)
|
190
|
+
rubocop-rspec (= 2.2.0)
|
191
|
+
rubocop-sequel (= 0.2.0)
|
192
|
+
rubocop-performance (1.10.0)
|
193
|
+
rubocop (>= 0.90.0, < 2.0)
|
194
|
+
rubocop-ast (>= 0.4.0)
|
195
|
+
rubocop-rails (2.9.1)
|
194
196
|
activesupport (>= 4.2.0)
|
195
197
|
rack (>= 1.1)
|
196
|
-
rubocop (>= 0.
|
197
|
-
rubocop-
|
198
|
-
rubocop
|
199
|
-
|
200
|
-
|
198
|
+
rubocop (>= 0.90.0, < 2.0)
|
199
|
+
rubocop-rake (0.5.1)
|
200
|
+
rubocop
|
201
|
+
rubocop-rspec (2.2.0)
|
202
|
+
rubocop (~> 1.0)
|
203
|
+
rubocop-ast (>= 1.1.0)
|
204
|
+
rubocop-sequel (0.2.0)
|
205
|
+
rubocop (~> 1.0)
|
206
|
+
ruby-progressbar (1.11.0)
|
207
|
+
ruby2_keywords (0.0.4)
|
201
208
|
self_data (1.2.1)
|
202
|
-
sequel (5.
|
209
|
+
sequel (5.42.0)
|
203
210
|
serverengine (2.0.7)
|
204
211
|
sigdump (~> 0.2.2)
|
205
212
|
sigdump (0.2.4)
|
206
|
-
simplecov (0.
|
213
|
+
simplecov (0.21.2)
|
207
214
|
docile (~> 1.1)
|
208
|
-
|
209
|
-
|
210
|
-
simplecov-html (0.
|
215
|
+
simplecov-html (~> 0.11)
|
216
|
+
simplecov_json_formatter (~> 0.1)
|
217
|
+
simplecov-html (0.12.3)
|
218
|
+
simplecov-lcov (0.8.0)
|
219
|
+
simplecov_json_formatter (0.1.2)
|
211
220
|
sneakers (2.11.0)
|
212
221
|
bunny (~> 2.12)
|
213
222
|
concurrent-ruby (~> 1.0)
|
@@ -221,42 +230,36 @@ GEM
|
|
221
230
|
actionpack (>= 4.0)
|
222
231
|
activesupport (>= 4.0)
|
223
232
|
sprockets (>= 3.0.0)
|
224
|
-
sync (0.5.0)
|
225
233
|
tainbox (2.1.2)
|
226
234
|
activesupport
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
tins (1.25.0)
|
233
|
-
sync
|
234
|
-
tzinfo (1.2.7)
|
235
|
-
thread_safe (~> 0.1)
|
236
|
-
unicode-display_width (1.7.0)
|
235
|
+
thor (1.1.0)
|
236
|
+
timecop (0.9.4)
|
237
|
+
tzinfo (2.0.4)
|
238
|
+
concurrent-ruby (~> 1.0)
|
239
|
+
unicode-display_width (2.0.0)
|
237
240
|
websocket-driver (0.7.3)
|
238
241
|
websocket-extensions (>= 0.1.0)
|
239
242
|
websocket-extensions (0.1.5)
|
240
|
-
zeitwerk (2.4.
|
243
|
+
zeitwerk (2.4.2)
|
241
244
|
|
242
245
|
PLATFORMS
|
243
246
|
ruby
|
244
247
|
|
245
248
|
DEPENDENCIES
|
246
|
-
activejob
|
247
|
-
activerecord
|
249
|
+
activejob
|
250
|
+
activerecord
|
248
251
|
bundler
|
249
252
|
bundler-audit
|
250
|
-
|
251
|
-
pg (~> 0.18)
|
253
|
+
pg
|
252
254
|
pry
|
253
255
|
rake
|
254
|
-
rspec
|
256
|
+
rspec
|
255
257
|
rubocop-config-umbrellio
|
256
258
|
sequel
|
257
|
-
simplecov
|
259
|
+
simplecov
|
260
|
+
simplecov-lcov
|
258
261
|
table_sync!
|
259
262
|
timecop
|
260
263
|
|
261
264
|
BUNDLED WITH
|
262
|
-
2.
|
265
|
+
2.2.11
|
data/README.md
CHANGED
data/docs/message_protocol.md
CHANGED
data/docs/publishing.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# Publishing changes
|
2
2
|
|
3
|
-
Include `TableSync.sync(self)` into a Sequel or ActiveRecord model. `:if` and `:unless` are
|
4
|
-
supported for Sequel and ActiveRecord
|
3
|
+
Include `TableSync.sync(self)` into a Sequel or ActiveRecord model. `:if` and `:unless` are supported for Sequel and ActiveRecord
|
5
4
|
|
6
5
|
Functioning `Rails.cache` is required
|
7
6
|
|
@@ -9,37 +8,33 @@ Example:
|
|
9
8
|
|
10
9
|
```ruby
|
11
10
|
class SomeModel < Sequel::Model
|
12
|
-
|
11
|
+
TableSync.sync(self, { if: -> (*) { some_code } })
|
13
12
|
end
|
14
13
|
```
|
15
14
|
|
16
15
|
#### #attributes_for_sync
|
17
16
|
|
18
|
-
Models can implement `#attributes_for_sync` to override which attributes are published. If not
|
19
|
-
present, all attributes are published
|
17
|
+
Models can implement `#attributes_for_sync` to override which attributes are published. If not present, all attributes are published
|
20
18
|
|
21
19
|
#### #attrs_for_routing_key
|
22
20
|
|
23
|
-
Models can implement `#attrs_for_routing_key` to override which attributes are given to routing_key_callable
|
21
|
+
Models can implement `#attrs_for_routing_key` to override which attributes are given to `routing_key_callable`. If not present, published attributes are given
|
24
22
|
|
25
23
|
#### #attrs_for_metadata
|
26
24
|
|
27
|
-
Models can implement `#attrs_for_metadata` to override which attributes are given to metadata_callable
|
25
|
+
Models can implement `#attrs_for_metadata` to override which attributes are given to `metadata_callable`. If not present, published attributes are given
|
28
26
|
|
29
27
|
#### .table_sync_model_name
|
30
28
|
|
31
|
-
Models can implement `.table_sync_model_name` class method to override the model name used for
|
32
|
-
publishing events. Default is model class name
|
29
|
+
Models can implement `.table_sync_model_name` class method to override the model name used for publishing events. Default is model class name
|
33
30
|
|
34
31
|
#### .table_sync_destroy_attributes(original_attributes)
|
35
32
|
|
36
|
-
Models can implement `.table_sync_destroy_attributes` class method to override the attributes
|
37
|
-
used for publishing destroy events. Default is object's primary key
|
33
|
+
Models can implement `.table_sync_destroy_attributes` class method to override the attributes used for publishing destroy events. Default is object's original attributes
|
38
34
|
|
39
35
|
## Configuration
|
40
36
|
|
41
|
-
- `TableSync.publishing_job_class_callable` is a callable which should resolve to a ActiveJob
|
42
|
-
subclass that calls TableSync back to actually publish changes (required)
|
37
|
+
- `TableSync.publishing_job_class_callable` is a callable which should resolve to a ActiveJob subclass that calls TableSync back to actually publish changes (required)
|
43
38
|
|
44
39
|
Example:
|
45
40
|
|
@@ -51,11 +46,9 @@ class TableSync::Job < ActiveJob::Base
|
|
51
46
|
end
|
52
47
|
```
|
53
48
|
|
54
|
-
- `TableSync.batch_publishing_job_class_callable` is a callable which should resolve to a ActiveJob
|
55
|
-
subclass that calls TableSync batch publisher back to actually publish changes (required for batch publisher)
|
49
|
+
- `TableSync.batch_publishing_job_class_callable` is a callable which should resolve to a ActiveJob subclass that calls TableSync batch publisher back to actually publish changes (required for batch publisher)
|
56
50
|
|
57
|
-
- `TableSync.routing_key_callable` is a callable which resolves which routing key to use when
|
58
|
-
publishing changes. It receives object class and attributes (required)
|
51
|
+
- `TableSync.routing_key_callable` is a callable which resolves which routing key to use when publishing changes. It receives object class and published attributes (required)
|
59
52
|
|
60
53
|
Example:
|
61
54
|
|
@@ -63,9 +56,7 @@ Example:
|
|
63
56
|
TableSync.routing_key_callable = -> (klass, attributes) { klass.gsub('::', '_').tableize }
|
64
57
|
```
|
65
58
|
|
66
|
-
- `TableSync.routing_metadata_callable` is a callable that adds RabbitMQ headers which can be
|
67
|
-
used in routing (optional). One possible way of using it is defining a headers exchange and
|
68
|
-
routing rules based on key-value pairs (which correspond to sent headers)
|
59
|
+
- `TableSync.routing_metadata_callable` is a callable that adds RabbitMQ headers which can be used in routing (optional). It receives object class and published attributes. One possible way of using it is defining a headers exchange and routing rules based on key-value pairs (which correspond to sent headers)
|
69
60
|
|
70
61
|
Example:
|
71
62
|
|
@@ -73,8 +64,7 @@ Example:
|
|
73
64
|
TableSync.routing_metadata_callable = -> (klass, attributes) { attributes.slice("project_id") }
|
74
65
|
```
|
75
66
|
|
76
|
-
- `TableSync.exchange_name` defines the exchange name used for publishing (optional, falls back
|
77
|
-
to default Rabbit gem configuration).
|
67
|
+
- `TableSync.exchange_name` defines the exchange name used for publishing (optional, falls back to default Rabbit gem configuration).
|
78
68
|
|
79
69
|
- `TableSync.notifier` is a module that provides publish and recieve notifications.
|
80
70
|
|
@@ -87,9 +77,7 @@ where state is one of `:created / :updated / :destroyed` and `confirm` is Rabbit
|
|
87
77
|
|
88
78
|
You can use `TableSync::BatchPublisher` to publish changes in batches (array of hashes in `attributes`).
|
89
79
|
|
90
|
-
When using `TableSync::BatchPublisher`,` TableSync.routing_key_callable` is called as follows:
|
91
|
-
`TableSync.routing_key_callable.call(klass, {})`, i.e. empty hash is passed instead of attributes.
|
92
|
-
And `TableSync.routing_metadata_callable` is not called at all: metadata is set to empty hash.
|
80
|
+
When using `TableSync::BatchPublisher`,` TableSync.routing_key_callable` is called as follows: `TableSync.routing_key_callable.call(klass, {})`, i.e. empty hash is passed instead of attributes. And `TableSync.routing_metadata_callable` is not called at all: metadata is set to empty hash.
|
93
81
|
|
94
82
|
`TableSync::BatchPublisher.new(object_class, original_attributes_array, **options)`, where `original_attributes_array` is an array with hash of attributes of published objects and `options` is a hash of options.
|
95
83
|
|
@@ -119,9 +107,7 @@ TableSync::BatchPublisher.new(
|
|
119
107
|
|
120
108
|
С помощью класса `TableSync::BatchPublisher` вы можете опубликовать изменения батчами (массивом в `attributes`).
|
121
109
|
|
122
|
-
При использовании `TableSync::BatchPublisher`, `TableSync.routing_key_callable` вызывается следующим образом:
|
123
|
-
`TableSync.routing_key_callable.call(klass, {})`, то есть вместо аттрибутов передается пустой хэш.
|
124
|
-
А `TableSync.routing_metadata_callable` не вызывается вовсе: в метадате устанавливается пустой хэш.
|
110
|
+
При использовании `TableSync::BatchPublisher`, `TableSync.routing_key_callable` вызывается следующим образом: `TableSync.routing_key_callable.call(klass, {})`, то есть вместо аттрибутов передается пустой хэш. А `TableSync.routing_metadata_callable` не вызывается вовсе: в метадате устанавливается пустой хэш.
|
125
111
|
|
126
112
|
`TableSync::BatchPublisher.new(object_class, original_attributes_array, **options)`, где `original_attributes_array` - массив с аттрибутами публикуемых объектов и `options`- это хэш с дополнительными опциями.
|
127
113
|
|
@@ -144,4 +130,4 @@ TableSync::BatchPublisher.new(
|
|
144
130
|
headers: { key: :value },
|
145
131
|
event: :destroy,
|
146
132
|
)
|
147
|
-
```
|
133
|
+
```
|
@@ -29,14 +29,6 @@ class TableSync::Publishing::BasePublisher
|
|
29
29
|
object_class.method_defined?(:attributes_for_sync)
|
30
30
|
end
|
31
31
|
|
32
|
-
memoize def attrs_for_routing_key_defined?
|
33
|
-
object_class.method_defined?(:attrs_for_routing_key)
|
34
|
-
end
|
35
|
-
|
36
|
-
memoize def attrs_for_metadata_defined?
|
37
|
-
object_class.method_defined?(:attrs_for_metadata)
|
38
|
-
end
|
39
|
-
|
40
32
|
def resolve_routing_key
|
41
33
|
routing_key_callable.call(object_class.name, attrs_for_routing_key)
|
42
34
|
end
|
@@ -57,17 +49,21 @@ class TableSync::Publishing::BasePublisher
|
|
57
49
|
def filter_safe_for_serialization(object)
|
58
50
|
case object
|
59
51
|
when Array
|
60
|
-
object.
|
52
|
+
object.each_with_object([]) do |value, memo|
|
53
|
+
value = filter_safe_for_serialization(value)
|
54
|
+
memo << value if object_mapped?(value)
|
55
|
+
end
|
61
56
|
when Hash
|
62
|
-
object
|
63
|
-
|
64
|
-
|
65
|
-
|
57
|
+
object.each_with_object({}) do |(key, value), memo|
|
58
|
+
key = filter_safe_for_serialization(key)
|
59
|
+
value = filter_safe_hash_values(value)
|
60
|
+
memo[key] = value if object_mapped?(key) && object_mapped?(value)
|
61
|
+
end
|
66
62
|
when Float::INFINITY
|
67
63
|
NOT_MAPPED
|
68
64
|
when *BASE_SAFE_JSON_TYPES
|
69
65
|
object
|
70
|
-
else
|
66
|
+
else # rubocop:disable Lint/DuplicateBranch
|
71
67
|
NOT_MAPPED
|
72
68
|
end
|
73
69
|
end
|
@@ -9,14 +9,8 @@ class TableSync::Publishing::Publisher < TableSync::Publishing::BasePublisher
|
|
9
9
|
@original_attributes = filter_safe_for_serialization(original_attributes.deep_symbolize_keys)
|
10
10
|
@confirm = opts.fetch(:confirm, true)
|
11
11
|
@debounce_time = opts[:debounce_time]&.seconds || DEBOUNCE_TIME
|
12
|
-
|
13
|
-
|
14
|
-
@state = opts.fetch(:state, :updated).to_sym
|
15
|
-
validate_state
|
16
|
-
else
|
17
|
-
# TODO Legacy job support, remove
|
18
|
-
@state = opts[:destroyed] ? :destroyed : :updated
|
19
|
-
end
|
12
|
+
@state = opts.fetch(:state, :updated).to_sym
|
13
|
+
validate_state
|
20
14
|
end
|
21
15
|
|
22
16
|
def publish
|
@@ -46,17 +40,23 @@ class TableSync::Publishing::Publisher < TableSync::Publishing::BasePublisher
|
|
46
40
|
attr_reader :debounce_time
|
47
41
|
|
48
42
|
def attrs_for_callables
|
49
|
-
|
43
|
+
attributes_for_sync
|
50
44
|
end
|
51
45
|
|
52
46
|
def attrs_for_routing_key
|
53
|
-
|
54
|
-
|
47
|
+
if object.respond_to?(:attrs_for_routing_key)
|
48
|
+
object.attrs_for_routing_key
|
49
|
+
else
|
50
|
+
attrs_for_callables
|
51
|
+
end
|
55
52
|
end
|
56
53
|
|
57
54
|
def attrs_for_metadata
|
58
|
-
|
59
|
-
|
55
|
+
if object.respond_to?(:attrs_for_metadata)
|
56
|
+
object.attrs_for_metadata
|
57
|
+
else
|
58
|
+
attrs_for_callables
|
59
|
+
end
|
60
60
|
end
|
61
61
|
|
62
62
|
def job_callable
|
@@ -85,12 +85,12 @@ class TableSync::Publishing::Publisher < TableSync::Publishing::BasePublisher
|
|
85
85
|
}
|
86
86
|
end
|
87
87
|
|
88
|
-
def attributes_for_sync
|
88
|
+
memoize def attributes_for_sync
|
89
89
|
if destroyed?
|
90
90
|
if object_class.respond_to?(:table_sync_destroy_attributes)
|
91
91
|
object_class.table_sync_destroy_attributes(original_attributes)
|
92
92
|
else
|
93
|
-
|
93
|
+
original_attributes
|
94
94
|
end
|
95
95
|
elsif attributes_for_sync_defined?
|
96
96
|
object.attributes_for_sync
|
@@ -82,7 +82,7 @@ class TableSync::Receiving::Handler < Rabbit::EventHandler
|
|
82
82
|
row[after] = row.delete(before)
|
83
83
|
end
|
84
84
|
|
85
|
-
config.except(row: row).each
|
85
|
+
config.except(row: row).each { |x| row.delete(x) }
|
86
86
|
|
87
87
|
row.merge!(config.additional_data(row: row))
|
88
88
|
|
@@ -98,7 +98,8 @@ class TableSync::Receiving::Handler < Rabbit::EventHandler
|
|
98
98
|
|
99
99
|
def validate_data(data, target_keys:)
|
100
100
|
data.each do |row|
|
101
|
-
next if target_keys.all?
|
101
|
+
next if target_keys.all? { |x| row.key?(x) }
|
102
|
+
|
102
103
|
raise TableSync::DataError.new(
|
103
104
|
data, target_keys, "Some target keys not found in received attributes!"
|
104
105
|
)
|
@@ -110,7 +111,7 @@ class TableSync::Receiving::Handler < Rabbit::EventHandler
|
|
110
111
|
|
111
112
|
keys_sample = data[0].keys
|
112
113
|
keys_diff = data.each_with_object(Set.new) do |row, set|
|
113
|
-
(row.keys - keys_sample | keys_sample - row.keys).each
|
114
|
+
(row.keys - keys_sample | keys_sample - row.keys).each { |x| set.add(x) }
|
114
115
|
end
|
115
116
|
|
116
117
|
unless keys_diff.empty?
|
@@ -96,7 +96,7 @@ module TableSync::Receiving::Model
|
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
|
-
result = query.destroy_all.map(
|
99
|
+
result = query.destroy_all.map { |x| row_to_hash(x) }
|
100
100
|
|
101
101
|
if result.size > data.size
|
102
102
|
raise TableSync::DestroyError.new(data: data, target_keys: target_keys, result: result)
|
@@ -54,8 +54,8 @@ class TableSync::Utils::InterfaceChecker
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def filter(parameters)
|
57
|
-
# for req and block parameters types we can ignore names
|
58
|
-
parameters.map { |param|
|
57
|
+
ignored_keys = %i[req block] # for req and block parameters types we can ignore names
|
58
|
+
parameters.map { |param| ignored_keys.include?(param.first) ? [param.first] : param }
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
data/lib/table_sync/version.rb
CHANGED
data/table_sync.gemspec
CHANGED
@@ -27,18 +27,18 @@ Gem::Specification.new do |spec|
|
|
27
27
|
end
|
28
28
|
|
29
29
|
spec.add_runtime_dependency "memery"
|
30
|
-
spec.add_runtime_dependency "rabbit_messaging"
|
30
|
+
spec.add_runtime_dependency "rabbit_messaging"
|
31
31
|
spec.add_runtime_dependency "rails"
|
32
32
|
spec.add_runtime_dependency "self_data"
|
33
33
|
|
34
|
-
spec.add_development_dependency "
|
35
|
-
spec.add_development_dependency "rspec", "~> 3.8"
|
34
|
+
spec.add_development_dependency "rspec"
|
36
35
|
spec.add_development_dependency "rubocop-config-umbrellio"
|
37
|
-
spec.add_development_dependency "simplecov"
|
36
|
+
spec.add_development_dependency "simplecov"
|
37
|
+
spec.add_development_dependency "simplecov-lcov"
|
38
38
|
|
39
|
-
spec.add_development_dependency "activejob"
|
40
|
-
spec.add_development_dependency "activerecord"
|
41
|
-
spec.add_development_dependency "pg"
|
39
|
+
spec.add_development_dependency "activejob"
|
40
|
+
spec.add_development_dependency "activerecord"
|
41
|
+
spec.add_development_dependency "pg"
|
42
42
|
spec.add_development_dependency "sequel"
|
43
43
|
spec.add_development_dependency "timecop"
|
44
44
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: table_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Umbrellio
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: memery
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: rabbit_messaging
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0
|
33
|
+
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,35 +67,35 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rubocop-config-umbrellio
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: simplecov
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -109,61 +109,61 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name: simplecov
|
112
|
+
name: simplecov-lcov
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0
|
117
|
+
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0
|
124
|
+
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: activejob
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
131
|
+
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
138
|
+
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: activerecord
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
145
|
+
version: '0'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
152
|
+
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: pg
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - "
|
157
|
+
- - ">="
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: '0
|
159
|
+
version: '0'
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - "
|
164
|
+
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: '0
|
166
|
+
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: sequel
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -256,10 +256,10 @@ executables: []
|
|
256
256
|
extensions: []
|
257
257
|
extra_rdoc_files: []
|
258
258
|
files:
|
259
|
+
- ".github/workflows/ci.yml"
|
259
260
|
- ".gitignore"
|
260
261
|
- ".rspec"
|
261
262
|
- ".rubocop.yml"
|
262
|
-
- ".travis.yml"
|
263
263
|
- CHANGELOG.md
|
264
264
|
- Gemfile
|
265
265
|
- Gemfile.lock
|
@@ -317,7 +317,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
317
317
|
- !ruby/object:Gem::Version
|
318
318
|
version: '0'
|
319
319
|
requirements: []
|
320
|
-
rubygems_version: 3.2.
|
320
|
+
rubygems_version: 3.2.11
|
321
321
|
signing_key:
|
322
322
|
specification_version: 4
|
323
323
|
summary: DB Table synchronization between microservices based on Model's event system
|
data/.travis.yml
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
rvm:
|
4
|
-
- 2.5
|
5
|
-
- 2.6
|
6
|
-
- 2.7
|
7
|
-
- ruby-head
|
8
|
-
|
9
|
-
matrix:
|
10
|
-
fast_finish: true
|
11
|
-
allow_failures:
|
12
|
-
- rvm: ruby-head
|
13
|
-
|
14
|
-
sudo: false
|
15
|
-
|
16
|
-
dist: xenial
|
17
|
-
|
18
|
-
cache: bundler
|
19
|
-
|
20
|
-
services:
|
21
|
-
- postgresql
|
22
|
-
|
23
|
-
addons:
|
24
|
-
postgresql: "10"
|
25
|
-
|
26
|
-
before_install: gem install bundler
|
27
|
-
|
28
|
-
before_script:
|
29
|
-
- psql -c 'create database table_sync_test;' -U postgres
|
30
|
-
|
31
|
-
script:
|
32
|
-
- bundle exec rake bundle:audit
|
33
|
-
- bundle exec rubocop
|
34
|
-
- bundle exec rspec
|