table_sync 4.2.2 → 6.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +52 -0
  3. data/CHANGELOG.md +79 -9
  4. data/Gemfile.lock +163 -156
  5. data/README.md +4 -1
  6. data/docs/message_protocol.md +3 -3
  7. data/docs/publishing/configuration.md +143 -0
  8. data/docs/publishing/manual.md +155 -0
  9. data/docs/publishing/publishers.md +162 -0
  10. data/docs/publishing.md +45 -112
  11. data/docs/receiving.md +11 -6
  12. data/lib/table_sync/errors.rb +31 -22
  13. data/lib/table_sync/event.rb +35 -0
  14. data/lib/table_sync/orm_adapter/active_record.rb +25 -0
  15. data/lib/table_sync/orm_adapter/base.rb +92 -0
  16. data/lib/table_sync/orm_adapter/sequel.rb +29 -0
  17. data/lib/table_sync/publishing/batch.rb +53 -0
  18. data/lib/table_sync/publishing/data/objects.rb +50 -0
  19. data/lib/table_sync/publishing/data/raw.rb +27 -0
  20. data/lib/table_sync/publishing/helpers/attributes.rb +63 -0
  21. data/lib/table_sync/publishing/helpers/debounce.rb +134 -0
  22. data/lib/table_sync/publishing/helpers/objects.rb +39 -0
  23. data/lib/table_sync/publishing/message/base.rb +73 -0
  24. data/lib/table_sync/publishing/message/batch.rb +14 -0
  25. data/lib/table_sync/publishing/message/raw.rb +54 -0
  26. data/lib/table_sync/publishing/message/single.rb +13 -0
  27. data/lib/table_sync/publishing/params/base.rb +66 -0
  28. data/lib/table_sync/publishing/params/batch.rb +23 -0
  29. data/lib/table_sync/publishing/params/raw.rb +7 -0
  30. data/lib/table_sync/publishing/params/single.rb +31 -0
  31. data/lib/table_sync/publishing/raw.rb +21 -0
  32. data/lib/table_sync/publishing/single.rb +65 -0
  33. data/lib/table_sync/publishing.rb +20 -5
  34. data/lib/table_sync/receiving/config.rb +6 -4
  35. data/lib/table_sync/receiving/handler.rb +15 -10
  36. data/lib/table_sync/receiving/model/active_record.rb +1 -1
  37. data/lib/table_sync/receiving.rb +0 -2
  38. data/lib/table_sync/setup/active_record.rb +24 -0
  39. data/lib/table_sync/setup/base.rb +67 -0
  40. data/lib/table_sync/setup/sequel.rb +26 -0
  41. data/lib/table_sync/utils/interface_checker.rb +2 -2
  42. data/lib/table_sync/version.rb +1 -1
  43. data/lib/table_sync.rb +31 -8
  44. data/table_sync.gemspec +7 -7
  45. metadata +58 -37
  46. data/.travis.yml +0 -34
  47. data/lib/table_sync/publishing/base_publisher.rb +0 -114
  48. data/lib/table_sync/publishing/batch_publisher.rb +0 -109
  49. data/lib/table_sync/publishing/orm_adapter/active_record.rb +0 -32
  50. data/lib/table_sync/publishing/orm_adapter/sequel.rb +0 -57
  51. data/lib/table_sync/publishing/publisher.rb +0 -129
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d5af530003a4144653d1866fda0a581a5ecf021cbcd8e7c2a29028c0e838eb2
4
- data.tar.gz: 836de51df89dc99294bd8be65eeaf4e00cba6bdb22071170bef42372c4984a70
3
+ metadata.gz: 41a5d020905434bea4c5a4e1a53a2bb1125a86a9335491202706b2bf64e9a938
4
+ data.tar.gz: 9db8c23e9f26770a87f6952ebfb982e22b06e6abdf48a54ecf162f50dbe89bfa
5
5
  SHA512:
6
- metadata.gz: 2558335ef49a853d8d0d12878cdb42cfb91d4bf7dc7838f22c4853dbf09a22aa60569c420eaee0f5a667f21ea55c02b4a62d3c9d7a4299128d2a6d4b47d7b76a
7
- data.tar.gz: d24f3e8e2cab9f946a37296261d531a44b3ea6e660aa1a9424e0685c9ba2ffff73130e6b9661f3ff76a0636eab9c877e4f7b18ce2c1b7b65326bfb5d2434df48
6
+ metadata.gz: 845f2b56ba16fc606eec72a3f88dc021ea72a08918b255eb1fe11cd9a0b7150001c43073469ef8e1ad055b6f98c8d2c6aa30f8cf46836bc5f252543be9e71bce
7
+ data.tar.gz: 2665c600fc3961b32c860c121a48af09dbf53e4ddc0d7b8a76aade0d22003baef82df649c0d5e435c0e2ec992403913bb8cd131d6b5f5c9abb5f5309cfc4d0bb
@@ -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,86 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## [6.0.2] - 2021-12-01
5
+ ### Fixed
6
+ - Fixed bug: skip publish when object is new and event is destroy for ActiveRecord
7
+
8
+ ## [6.0.1] - 2021-11-30
9
+ ### Fixed
10
+ - fixed docs
11
+
12
+ ## [6.0.0] - 2021-10-15
13
+ ### Added
14
+
15
+ - A lot of specs for all the refactoring.
16
+ - Docs
17
+ - 100% coverage
18
+
19
+ ### Changed
20
+ - Heavy refactoring of Publisher and BatchPublisher.
21
+ All code is separated in different modules and classes.
22
+
23
+ 1. Job callables are now called:
24
+ - single_publishing_job_class_callable
25
+ - batch_publishing_job_class_callable
26
+
27
+ 2. Now there are three main classes for messaging:
28
+ - TableSync::Publishing::Single - sends one row with initialization
29
+ - TableSync::Publishing::Batch - sends batch of rows with initialization
30
+ - TableSync::Publishing::Raw - sends raw data without checks
31
+
32
+ Separate classes for publishing, object data, Rabbit params, debounce, serialization.
33
+
34
+ 3. Jobs are not constrained by being ActiveJob anymore. Just need to have #perform_at method
35
+
36
+ 4. Changed some method names towards consistency:
37
+ - attrs_for_routing_key -> attributes_for_routing_key
38
+ - attrs_for_metadata -> attributes_for_headers
39
+
40
+ 5. Moved TableSync setup into separate classes.
41
+
42
+ 6. Changed ORMAdapters.
43
+
44
+ 7. Destroyed objects are initialized.
45
+ Now custom attributes for destruction will be called on instances.
46
+ - Obj.table_sync_destroy_attributes() -> Obj#attributes_for_destroy
47
+
48
+ 8. Event constants are now kept in one place.
49
+
50
+ ### Removed
51
+
52
+ - Plugin Errors
53
+
54
+ ## [5.1.0] - 2021-09-09
55
+
56
+ ### Changed
57
+ - Provide current fired event to wrap receiver. You'll be able to get it with `wrap_receiving(event:, **rest) {}` as usual for `data, target_keys, version_key`
58
+ - Update rails dependencies with patch version
59
+
60
+ ## [5.0.1] - 2021-04-06
61
+ ### Fixed
62
+ - documentation
63
+
64
+ ### Changed
65
+ - update gems
66
+
67
+ ## [5.0.0] - 2021-03-04
68
+ ### Fixed
69
+ - Fix `delete` events being broken when either `#attrs_for_routing_key` or `#attrs_for_metadata` was defined on a model.
70
+
71
+ ### Changed
72
+ - 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`.
73
+ - Send all original attributes for `delete` events instead of just PK.
74
+
4
75
  ## [4.2.2] - 2020-11-20
5
76
  ### Fixed
6
77
  - potential data corruption with batches
7
78
 
8
79
  ## [4.2.1] - 2020-11-20
9
80
  ### Fixed
10
- - bug with sorting data in handler, it was bad idea to use `.hash` replaced to `.to_s`
81
+ - bug with sorting data in handler, it was bad idea to use `.hash` replaced to `.to_s`
11
82
 
12
83
  ## [4.2.0] - 2020-11-19
13
-
14
84
  - No changes. Just stabilization release.
15
85
 
16
86
  ## [4.1.2] - 2020-11-19
@@ -42,9 +112,9 @@ All notable changes to this project will be documented in this file.
42
112
  ### Changed
43
113
  - .rubocop.yml
44
114
  - documentation
45
- - modules hierarchy (split receiving and publishing)
46
- `TableSync::Publisher` -> `TableSync::Publishing::Publisher`
47
- `TableSync::BatchPublisher` -> `TableSync::Publishing::BatchPublisher`
115
+ - modules hierarchy (split receiving and publishing)
116
+ `TableSync::Publisher` -> `TableSync::Publishing::Publisher`
117
+ `TableSync::BatchPublisher` -> `TableSync::Publishing::BatchPublisher`
48
118
  `TableSync::ReceivingHandler` -> `TableSync::Receiving::Handler`
49
119
  - made data batches processing as native
50
120
  - implemented callbacks as options
@@ -52,10 +122,10 @@ All notable changes to this project will be documented in this file.
52
122
  - type checking in options
53
123
  - `before_commit on: event, &block` -> `before_update(&block)` or `before_destroy(&block)`
54
124
  - `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
- ...
125
+ - changed parameters in some options:
126
+ add `raw_data`
127
+ `current_row` -> `row`
128
+ ...
59
129
  see documents for details
60
130
 
61
131
  ### Removed
data/Gemfile.lock CHANGED
@@ -1,262 +1,269 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- table_sync (4.2.2)
4
+ table_sync (6.0.2)
5
5
  memery
6
- rabbit_messaging (~> 0.3)
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.0.3.4)
14
- actionpack (= 6.0.3.4)
13
+ actioncable (6.1.4.1)
14
+ actionpack (= 6.1.4.1)
15
+ activesupport (= 6.1.4.1)
15
16
  nio4r (~> 2.0)
16
17
  websocket-driver (>= 0.6.1)
17
- actionmailbox (6.0.3.4)
18
- actionpack (= 6.0.3.4)
19
- activejob (= 6.0.3.4)
20
- activerecord (= 6.0.3.4)
21
- activestorage (= 6.0.3.4)
22
- activesupport (= 6.0.3.4)
18
+ actionmailbox (6.1.4.1)
19
+ actionpack (= 6.1.4.1)
20
+ activejob (= 6.1.4.1)
21
+ activerecord (= 6.1.4.1)
22
+ activestorage (= 6.1.4.1)
23
+ activesupport (= 6.1.4.1)
23
24
  mail (>= 2.7.1)
24
- actionmailer (6.0.3.4)
25
- actionpack (= 6.0.3.4)
26
- actionview (= 6.0.3.4)
27
- activejob (= 6.0.3.4)
25
+ actionmailer (6.1.4.1)
26
+ actionpack (= 6.1.4.1)
27
+ actionview (= 6.1.4.1)
28
+ activejob (= 6.1.4.1)
29
+ activesupport (= 6.1.4.1)
28
30
  mail (~> 2.5, >= 2.5.4)
29
31
  rails-dom-testing (~> 2.0)
30
- actionpack (6.0.3.4)
31
- actionview (= 6.0.3.4)
32
- activesupport (= 6.0.3.4)
33
- rack (~> 2.0, >= 2.0.8)
32
+ actionpack (6.1.4.1)
33
+ actionview (= 6.1.4.1)
34
+ activesupport (= 6.1.4.1)
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.0.3.4)
38
- actionpack (= 6.0.3.4)
39
- activerecord (= 6.0.3.4)
40
- activestorage (= 6.0.3.4)
41
- activesupport (= 6.0.3.4)
39
+ actiontext (6.1.4.1)
40
+ actionpack (= 6.1.4.1)
41
+ activerecord (= 6.1.4.1)
42
+ activestorage (= 6.1.4.1)
43
+ activesupport (= 6.1.4.1)
42
44
  nokogiri (>= 1.8.5)
43
- actionview (6.0.3.4)
44
- activesupport (= 6.0.3.4)
45
+ actionview (6.1.4.1)
46
+ activesupport (= 6.1.4.1)
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.0.3.4)
50
- activesupport (= 6.0.3.4)
51
+ activejob (6.1.4.1)
52
+ activesupport (= 6.1.4.1)
51
53
  globalid (>= 0.3.6)
52
- activemodel (6.0.3.4)
53
- activesupport (= 6.0.3.4)
54
- activerecord (6.0.3.4)
55
- activemodel (= 6.0.3.4)
56
- activesupport (= 6.0.3.4)
57
- activestorage (6.0.3.4)
58
- actionpack (= 6.0.3.4)
59
- activejob (= 6.0.3.4)
60
- activerecord (= 6.0.3.4)
61
- marcel (~> 0.3.1)
62
- activesupport (6.0.3.4)
54
+ activemodel (6.1.4.1)
55
+ activesupport (= 6.1.4.1)
56
+ activerecord (6.1.4.1)
57
+ activemodel (= 6.1.4.1)
58
+ activesupport (= 6.1.4.1)
59
+ activestorage (6.1.4.1)
60
+ actionpack (= 6.1.4.1)
61
+ activejob (= 6.1.4.1)
62
+ activerecord (= 6.1.4.1)
63
+ activesupport (= 6.1.4.1)
64
+ marcel (~> 1.0.0)
65
+ mini_mime (>= 1.1.0)
66
+ activesupport (6.1.4.1)
63
67
  concurrent-ruby (~> 1.0, >= 1.0.2)
64
- i18n (>= 0.7, < 2)
65
- minitest (~> 5.1)
66
- tzinfo (~> 1.1)
67
- zeitwerk (~> 2.2, >= 2.2.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.1)
73
+ ast (2.4.2)
70
74
  builder (3.2.4)
71
- bundler-audit (0.7.0.1)
75
+ bundler-audit (0.8.0)
72
76
  bundler (>= 1.2.0, < 3)
73
- thor (>= 0.18, < 2)
74
- bunny (2.17.0)
77
+ thor (~> 1.0)
78
+ bunny (2.19.0)
75
79
  amq-protocol (~> 2.3, >= 2.3.1)
80
+ sorted_set (~> 1, >= 1.0.2)
76
81
  coderay (1.1.3)
77
- concurrent-ruby (1.1.7)
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)
82
+ concurrent-ruby (1.1.9)
84
83
  crass (1.0.6)
85
84
  diff-lcs (1.4.4)
86
- docile (1.3.2)
85
+ docile (1.3.5)
87
86
  erubi (1.10.0)
88
87
  exception_notification (4.4.3)
89
88
  actionmailer (>= 4.0, < 7)
90
89
  activesupport (>= 4.0, < 7)
91
- globalid (0.4.2)
92
- activesupport (>= 4.2.0)
93
- i18n (1.8.5)
90
+ globalid (0.5.2)
91
+ activesupport (>= 5.0)
92
+ i18n (1.8.10)
94
93
  concurrent-ruby (~> 1.0)
95
- json (2.3.1)
96
- lamian (1.2.0)
94
+ lamian (1.4.0)
97
95
  rails (>= 4.2)
98
- loofah (2.7.0)
96
+ loofah (2.12.0)
99
97
  crass (~> 1.0.2)
100
98
  nokogiri (>= 1.5.9)
101
99
  mail (2.7.1)
102
100
  mini_mime (>= 0.1.1)
103
- marcel (0.3.3)
104
- mimemagic (~> 0.3.2)
105
- memery (1.3.0)
101
+ marcel (1.0.2)
102
+ memery (1.4.1)
106
103
  ruby2_keywords (~> 0.0.2)
107
104
  method_source (1.0.0)
108
- mimemagic (0.3.5)
109
- mini_mime (1.0.2)
110
- mini_portile2 (2.4.0)
111
- minitest (5.14.2)
112
- nio4r (2.5.4)
113
- nokogiri (1.10.10)
114
- mini_portile2 (~> 2.4.0)
115
- parallel (1.19.2)
116
- parser (2.7.1.5)
105
+ mini_mime (1.1.2)
106
+ mini_portile2 (2.6.1)
107
+ minitest (5.14.4)
108
+ nio4r (2.5.8)
109
+ nokogiri (1.12.5)
110
+ mini_portile2 (~> 2.6.1)
111
+ racc (~> 1.4)
112
+ parallel (1.20.1)
113
+ parser (3.0.0.0)
117
114
  ast (~> 2.4.1)
118
- pg (0.21.0)
119
- pry (0.13.1)
115
+ pg (1.2.3)
116
+ pry (0.14.0)
120
117
  coderay (~> 1.1)
121
118
  method_source (~> 1.0)
122
- rabbit_messaging (0.9.0)
119
+ rabbit_messaging (0.12.0)
123
120
  bunny (~> 2.0)
124
121
  exception_notification
125
122
  lamian
126
123
  rails (>= 5.2)
127
124
  sneakers (~> 2.0)
128
125
  tainbox
126
+ racc (1.6.0)
129
127
  rack (2.2.3)
130
128
  rack-test (1.1.0)
131
129
  rack (>= 1.0, < 3)
132
- rails (6.0.3.4)
133
- actioncable (= 6.0.3.4)
134
- actionmailbox (= 6.0.3.4)
135
- actionmailer (= 6.0.3.4)
136
- actionpack (= 6.0.3.4)
137
- actiontext (= 6.0.3.4)
138
- actionview (= 6.0.3.4)
139
- activejob (= 6.0.3.4)
140
- activemodel (= 6.0.3.4)
141
- activerecord (= 6.0.3.4)
142
- activestorage (= 6.0.3.4)
143
- activesupport (= 6.0.3.4)
144
- bundler (>= 1.3.0)
145
- railties (= 6.0.3.4)
130
+ rails (6.1.4.1)
131
+ actioncable (= 6.1.4.1)
132
+ actionmailbox (= 6.1.4.1)
133
+ actionmailer (= 6.1.4.1)
134
+ actionpack (= 6.1.4.1)
135
+ actiontext (= 6.1.4.1)
136
+ actionview (= 6.1.4.1)
137
+ activejob (= 6.1.4.1)
138
+ activemodel (= 6.1.4.1)
139
+ activerecord (= 6.1.4.1)
140
+ activestorage (= 6.1.4.1)
141
+ activesupport (= 6.1.4.1)
142
+ bundler (>= 1.15.0)
143
+ railties (= 6.1.4.1)
146
144
  sprockets-rails (>= 2.0.0)
147
145
  rails-dom-testing (2.0.3)
148
146
  activesupport (>= 4.2.0)
149
147
  nokogiri (>= 1.6)
150
- rails-html-sanitizer (1.3.0)
148
+ rails-html-sanitizer (1.4.2)
151
149
  loofah (~> 2.3)
152
- railties (6.0.3.4)
153
- actionpack (= 6.0.3.4)
154
- activesupport (= 6.0.3.4)
150
+ railties (6.1.4.1)
151
+ actionpack (= 6.1.4.1)
152
+ activesupport (= 6.1.4.1)
155
153
  method_source
156
- rake (>= 0.8.7)
157
- thor (>= 0.20.3, < 2.0)
154
+ rake (>= 0.13)
155
+ thor (~> 1.0)
158
156
  rainbow (3.0.0)
159
- rake (13.0.1)
160
- regexp_parser (1.8.1)
161
- rexml (3.2.4)
162
- rspec (3.9.0)
163
- rspec-core (~> 3.9.0)
164
- rspec-expectations (~> 3.9.0)
165
- rspec-mocks (~> 3.9.0)
166
- rspec-core (3.9.2)
167
- rspec-support (~> 3.9.3)
168
- rspec-expectations (3.9.2)
157
+ rake (13.0.6)
158
+ rbtree (0.4.4)
159
+ regexp_parser (2.1.1)
160
+ rexml (3.2.5)
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.9.0)
171
- rspec-mocks (3.9.1)
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.9.0)
174
- rspec-support (3.9.3)
175
- rubocop (0.90.0)
172
+ rspec-support (~> 3.10.0)
173
+ rspec-support (3.10.2)
174
+ rubocop (1.11.0)
176
175
  parallel (~> 1.10)
177
- parser (>= 2.7.1.1)
176
+ parser (>= 3.0.0.0)
178
177
  rainbow (>= 2.2.2, < 4.0)
179
- regexp_parser (>= 1.7)
178
+ regexp_parser (>= 1.8, < 3.0)
180
179
  rexml
181
- rubocop-ast (>= 0.3.0, < 1.0)
180
+ rubocop-ast (>= 1.2.0, < 2.0)
182
181
  ruby-progressbar (~> 1.7)
183
- unicode-display_width (>= 1.4.0, < 2.0)
184
- rubocop-ast (0.7.1)
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 (0.90.0.93)
187
- rubocop (= 0.90.0)
188
- rubocop-performance (= 1.7.1)
189
- rubocop-rails (= 2.7.0)
190
- rubocop-rspec (= 1.42.0)
191
- rubocop-performance (1.7.1)
192
- rubocop (>= 0.82.0)
193
- rubocop-rails (2.7.0)
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.87.0)
197
- rubocop-rspec (1.42.0)
198
- rubocop (>= 0.87.0)
199
- ruby-progressbar (1.10.1)
200
- ruby2_keywords (0.0.2)
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.5)
201
208
  self_data (1.2.1)
202
- sequel (5.37.0)
209
+ sequel (5.43.0)
203
210
  serverengine (2.0.7)
204
211
  sigdump (~> 0.2.2)
212
+ set (1.0.2)
205
213
  sigdump (0.2.4)
206
- simplecov (0.16.1)
214
+ simplecov (0.21.2)
207
215
  docile (~> 1.1)
208
- json (>= 1.8, < 3)
209
- simplecov-html (~> 0.10.0)
210
- simplecov-html (0.10.2)
216
+ simplecov-html (~> 0.11)
217
+ simplecov_json_formatter (~> 0.1)
218
+ simplecov-html (0.12.3)
219
+ simplecov-lcov (0.8.0)
220
+ simplecov_json_formatter (0.1.2)
211
221
  sneakers (2.11.0)
212
222
  bunny (~> 2.12)
213
223
  concurrent-ruby (~> 1.0)
214
224
  rake
215
225
  serverengine (~> 2.0.5)
216
226
  thor
227
+ sorted_set (1.0.3)
228
+ rbtree
229
+ set (~> 1.0)
217
230
  sprockets (4.0.2)
218
231
  concurrent-ruby (~> 1.0)
219
232
  rack (> 1, < 3)
220
- sprockets-rails (3.2.2)
221
- actionpack (>= 4.0)
222
- activesupport (>= 4.0)
233
+ sprockets-rails (3.4.1)
234
+ actionpack (>= 5.2)
235
+ activesupport (>= 5.2)
223
236
  sprockets (>= 3.0.0)
224
- sync (0.5.0)
225
237
  tainbox (2.1.2)
226
238
  activesupport
227
- term-ansicolor (1.7.1)
228
- tins (~> 1.0)
229
- thor (1.0.1)
230
- thread_safe (0.3.6)
231
- timecop (0.9.1)
232
- tins (1.25.0)
233
- sync
234
- tzinfo (1.2.7)
235
- thread_safe (~> 0.1)
236
- unicode-display_width (1.7.0)
237
- websocket-driver (0.7.3)
239
+ thor (1.1.0)
240
+ timecop (0.9.4)
241
+ tzinfo (2.0.4)
242
+ concurrent-ruby (~> 1.0)
243
+ unicode-display_width (2.0.0)
244
+ websocket-driver (0.7.5)
238
245
  websocket-extensions (>= 0.1.0)
239
246
  websocket-extensions (0.1.5)
240
- zeitwerk (2.4.0)
247
+ zeitwerk (2.4.2)
241
248
 
242
249
  PLATFORMS
243
250
  ruby
244
251
 
245
252
  DEPENDENCIES
246
- activejob (>= 6.0)
247
- activerecord (>= 6.0)
253
+ activejob
254
+ activerecord
248
255
  bundler
249
256
  bundler-audit
250
- coveralls (~> 0.8)
251
- pg (~> 0.18)
257
+ pg
252
258
  pry
253
259
  rake
254
- rspec (~> 3.8)
260
+ rspec
255
261
  rubocop-config-umbrellio
256
262
  sequel
257
- simplecov (~> 0.16)
263
+ simplecov
264
+ simplecov-lcov
258
265
  table_sync!
259
266
  timecop
260
267
 
261
268
  BUNDLED WITH
262
- 2.1.4
269
+ 2.2.27
data/README.md CHANGED
@@ -21,7 +21,10 @@ require 'table_sync'
21
21
  ## Usage
22
22
 
23
23
  - [Message protocol](docs/message_protocol.md)
24
- - [Publising](docs/publishing.md)
24
+ - [Publishing](docs/publishing.md)
25
+ - [Publishers](docs/publishing/publishers.md)
26
+ - [Configuration](docs/publishing/configuration.md)
27
+ - [Manual Sync (examples)](docs/publishing/manual.md)
25
28
  - [Receiving](docs/receiving.md)
26
29
  - [Notifications](docs/notifications.md)
27
30
 
@@ -1,9 +1,9 @@
1
1
  # Messages protocol
2
2
 
3
- ```
3
+ ```json
4
4
  {
5
- project_id: "pid",
6
- data: {
5
+ "project_id": "pid",
6
+ "data": {
7
7
  "event": "update",
8
8
  "model": "User",
9
9
  "version": 1.23,