pub_sub_model_sync 1.0.beta2 → 1.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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +43 -0
  3. data/CHANGELOG.md +7 -4
  4. data/Gemfile.lock +3 -1
  5. data/README.md +174 -105
  6. data/docs/notifications-diagram.png +0 -0
  7. data/lib/pub_sub_model_sync.rb +1 -1
  8. data/lib/pub_sub_model_sync/base.rb +0 -20
  9. data/lib/pub_sub_model_sync/config.rb +1 -1
  10. data/lib/pub_sub_model_sync/initializers/before_commit.rb +3 -3
  11. data/lib/pub_sub_model_sync/message_processor.rb +32 -9
  12. data/lib/pub_sub_model_sync/message_publisher.rb +14 -10
  13. data/lib/pub_sub_model_sync/payload.rb +15 -12
  14. data/lib/pub_sub_model_sync/{publisher.rb → payload_builder.rb} +15 -10
  15. data/lib/pub_sub_model_sync/publisher_concern.rb +27 -16
  16. data/lib/pub_sub_model_sync/run_subscriber.rb +17 -13
  17. data/lib/pub_sub_model_sync/service_base.rb +5 -32
  18. data/lib/pub_sub_model_sync/service_google.rb +1 -1
  19. data/lib/pub_sub_model_sync/subscriber_concern.rb +6 -4
  20. data/lib/pub_sub_model_sync/transaction.rb +6 -2
  21. data/lib/pub_sub_model_sync/version.rb +1 -1
  22. data/samples/README.md +50 -0
  23. data/samples/app1/.gitattributes +8 -0
  24. data/samples/app1/.gitignore +28 -0
  25. data/samples/app1/Dockerfile +13 -0
  26. data/samples/app1/Gemfile +37 -0
  27. data/samples/app1/Gemfile.lock +171 -0
  28. data/samples/app1/README.md +24 -0
  29. data/samples/app1/Rakefile +6 -0
  30. data/samples/app1/app/models/application_record.rb +3 -0
  31. data/samples/app1/app/models/concerns/.keep +0 -0
  32. data/samples/app1/app/models/post.rb +19 -0
  33. data/samples/app1/app/models/user.rb +29 -0
  34. data/samples/app1/bin/bundle +114 -0
  35. data/samples/app1/bin/rails +5 -0
  36. data/samples/app1/bin/rake +5 -0
  37. data/samples/app1/bin/setup +33 -0
  38. data/samples/app1/bin/spring +14 -0
  39. data/samples/app1/config.ru +6 -0
  40. data/samples/app1/config/application.rb +40 -0
  41. data/samples/app1/config/boot.rb +4 -0
  42. data/samples/app1/config/credentials.yml.enc +1 -0
  43. data/samples/app1/config/database.yml +25 -0
  44. data/samples/app1/config/environment.rb +5 -0
  45. data/samples/app1/config/environments/development.rb +63 -0
  46. data/samples/app1/config/environments/production.rb +105 -0
  47. data/samples/app1/config/environments/test.rb +57 -0
  48. data/samples/app1/config/initializers/application_controller_renderer.rb +8 -0
  49. data/samples/app1/config/initializers/backtrace_silencers.rb +8 -0
  50. data/samples/app1/config/initializers/cors.rb +16 -0
  51. data/samples/app1/config/initializers/filter_parameter_logging.rb +6 -0
  52. data/samples/app1/config/initializers/inflections.rb +16 -0
  53. data/samples/app1/config/initializers/mime_types.rb +4 -0
  54. data/samples/app1/config/initializers/pubsub.rb +4 -0
  55. data/samples/app1/config/initializers/wrap_parameters.rb +14 -0
  56. data/samples/app1/config/locales/en.yml +33 -0
  57. data/samples/app1/config/puma.rb +43 -0
  58. data/samples/app1/config/routes.rb +3 -0
  59. data/samples/app1/config/spring.rb +6 -0
  60. data/samples/app1/db/migrate/20210513080700_create_users.rb +12 -0
  61. data/samples/app1/db/migrate/20210513134332_create_posts.rb +11 -0
  62. data/samples/app1/db/schema.rb +34 -0
  63. data/samples/app1/db/seeds.rb +7 -0
  64. data/samples/app1/docker-compose.yml +32 -0
  65. data/samples/app1/log/.keep +0 -0
  66. data/samples/app2/.gitattributes +8 -0
  67. data/samples/app2/.gitignore +28 -0
  68. data/samples/app2/Dockerfile +13 -0
  69. data/samples/app2/Gemfile +37 -0
  70. data/samples/app2/Gemfile.lock +171 -0
  71. data/samples/app2/README.md +24 -0
  72. data/samples/app2/Rakefile +6 -0
  73. data/samples/app2/app/models/application_record.rb +9 -0
  74. data/samples/app2/app/models/concerns/.keep +0 -0
  75. data/samples/app2/app/models/customer.rb +28 -0
  76. data/samples/app2/app/models/post.rb +10 -0
  77. data/samples/app2/bin/bundle +114 -0
  78. data/samples/app2/bin/rails +5 -0
  79. data/samples/app2/bin/rake +5 -0
  80. data/samples/app2/bin/setup +33 -0
  81. data/samples/app2/bin/spring +14 -0
  82. data/samples/app2/config.ru +6 -0
  83. data/samples/app2/config/application.rb +40 -0
  84. data/samples/app2/config/boot.rb +4 -0
  85. data/samples/app2/config/credentials.yml.enc +1 -0
  86. data/samples/app2/config/database.yml +25 -0
  87. data/samples/app2/config/environment.rb +5 -0
  88. data/samples/app2/config/environments/development.rb +63 -0
  89. data/samples/app2/config/environments/production.rb +105 -0
  90. data/samples/app2/config/environments/test.rb +57 -0
  91. data/samples/app2/config/initializers/application_controller_renderer.rb +8 -0
  92. data/samples/app2/config/initializers/backtrace_silencers.rb +8 -0
  93. data/samples/app2/config/initializers/cors.rb +16 -0
  94. data/samples/app2/config/initializers/filter_parameter_logging.rb +6 -0
  95. data/samples/app2/config/initializers/inflections.rb +16 -0
  96. data/samples/app2/config/initializers/mime_types.rb +4 -0
  97. data/samples/app2/config/initializers/pubsub.rb +4 -0
  98. data/samples/app2/config/initializers/wrap_parameters.rb +14 -0
  99. data/samples/app2/config/locales/en.yml +33 -0
  100. data/samples/app2/config/puma.rb +43 -0
  101. data/samples/app2/config/routes.rb +3 -0
  102. data/samples/app2/config/spring.rb +6 -0
  103. data/samples/app2/db/migrate/20210513080956_create_customers.rb +10 -0
  104. data/samples/app2/db/migrate/20210513135203_create_posts.rb +10 -0
  105. data/samples/app2/db/schema.rb +31 -0
  106. data/samples/app2/db/seeds.rb +7 -0
  107. data/samples/app2/docker-compose.yml +20 -0
  108. data/samples/app2/log/.keep +0 -0
  109. metadata +93 -5
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
3
+ end
@@ -0,0 +1,6 @@
1
+ Spring.watch(
2
+ ".ruby-version",
3
+ ".rbenv-vars",
4
+ "tmp/restart.txt",
5
+ "tmp/caching-dev.txt"
6
+ )
@@ -0,0 +1,10 @@
1
+ class CreateCustomers < ActiveRecord::Migration[6.1]
2
+ def change
3
+ create_table :customers do |t|
4
+ t.string :full_name
5
+ t.string :email
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ class CreatePosts < ActiveRecord::Migration[6.1]
2
+ def change
3
+ create_table :posts do |t|
4
+ t.string :title
5
+ t.belongs_to :customer, null: false, foreign_key: true
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,31 @@
1
+ # This file is auto-generated from the current state of the database. Instead
2
+ # of editing this file, please use the migrations feature of Active Record to
3
+ # incrementally modify your database, and then regenerate this schema definition.
4
+ #
5
+ # This file is the source Rails uses to define your schema when running `bin/rails
6
+ # db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
7
+ # be faster and is potentially less error prone than running all of your
8
+ # migrations from scratch. Old migrations may fail to apply correctly if those
9
+ # migrations use external dependencies or application code.
10
+ #
11
+ # It's strongly recommended that you check this file into your version control system.
12
+
13
+ ActiveRecord::Schema.define(version: 2021_05_13_135203) do
14
+
15
+ create_table "customers", force: :cascade do |t|
16
+ t.string "full_name"
17
+ t.string "email"
18
+ t.datetime "created_at", precision: 6, null: false
19
+ t.datetime "updated_at", precision: 6, null: false
20
+ end
21
+
22
+ create_table "posts", force: :cascade do |t|
23
+ t.string "title"
24
+ t.integer "customer_id", null: false
25
+ t.datetime "created_at", precision: 6, null: false
26
+ t.datetime "updated_at", precision: 6, null: false
27
+ t.index ["customer_id"], name: "index_posts_on_customer_id"
28
+ end
29
+
30
+ add_foreign_key "posts", "customers"
31
+ end
@@ -0,0 +1,7 @@
1
+ # This file should contain all the record creation needed to seed the database with its default values.
2
+ # The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
3
+ #
4
+ # Examples:
5
+ #
6
+ # movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
7
+ # Character.create(name: 'Luke', movie: movies.first)
@@ -0,0 +1,20 @@
1
+ version: "3.7"
2
+
3
+ networks:
4
+ shared_app_services:
5
+ external: true
6
+
7
+ services:
8
+ app: &app
9
+ build:
10
+ context: .
11
+ volumes:
12
+ - .:/app
13
+ external_links:
14
+ - pubsub
15
+ networks: # required to connect to pubsub
16
+ - shared_app_services
17
+
18
+ listener:
19
+ <<: *app
20
+ command: bash -c "DB_POOL=20 rails db:migrate && bundle exec rake pub_sub_model_sync:start"
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pub_sub_model_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.beta2
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Owen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-14 00:00:00.000000000 Z
11
+ date: 2021-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -87,6 +87,7 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - ".github/workflows/release.yml"
90
91
  - ".github/workflows/ruby.yml"
91
92
  - ".gitignore"
92
93
  - ".rspec"
@@ -117,7 +118,7 @@ files:
117
118
  - lib/pub_sub_model_sync/mock_kafka_service.rb
118
119
  - lib/pub_sub_model_sync/mock_rabbit_service.rb
119
120
  - lib/pub_sub_model_sync/payload.rb
120
- - lib/pub_sub_model_sync/publisher.rb
121
+ - lib/pub_sub_model_sync/payload_builder.rb
121
122
  - lib/pub_sub_model_sync/publisher_concern.rb
122
123
  - lib/pub_sub_model_sync/railtie.rb
123
124
  - lib/pub_sub_model_sync/run_subscriber.rb
@@ -132,6 +133,93 @@ files:
132
133
  - lib/pub_sub_model_sync/transaction.rb
133
134
  - lib/pub_sub_model_sync/version.rb
134
135
  - pub_sub_model_sync.gemspec
136
+ - samples/README.md
137
+ - samples/app1/.gitattributes
138
+ - samples/app1/.gitignore
139
+ - samples/app1/Dockerfile
140
+ - samples/app1/Gemfile
141
+ - samples/app1/Gemfile.lock
142
+ - samples/app1/README.md
143
+ - samples/app1/Rakefile
144
+ - samples/app1/app/models/application_record.rb
145
+ - samples/app1/app/models/concerns/.keep
146
+ - samples/app1/app/models/post.rb
147
+ - samples/app1/app/models/user.rb
148
+ - samples/app1/bin/bundle
149
+ - samples/app1/bin/rails
150
+ - samples/app1/bin/rake
151
+ - samples/app1/bin/setup
152
+ - samples/app1/bin/spring
153
+ - samples/app1/config.ru
154
+ - samples/app1/config/application.rb
155
+ - samples/app1/config/boot.rb
156
+ - samples/app1/config/credentials.yml.enc
157
+ - samples/app1/config/database.yml
158
+ - samples/app1/config/environment.rb
159
+ - samples/app1/config/environments/development.rb
160
+ - samples/app1/config/environments/production.rb
161
+ - samples/app1/config/environments/test.rb
162
+ - samples/app1/config/initializers/application_controller_renderer.rb
163
+ - samples/app1/config/initializers/backtrace_silencers.rb
164
+ - samples/app1/config/initializers/cors.rb
165
+ - samples/app1/config/initializers/filter_parameter_logging.rb
166
+ - samples/app1/config/initializers/inflections.rb
167
+ - samples/app1/config/initializers/mime_types.rb
168
+ - samples/app1/config/initializers/pubsub.rb
169
+ - samples/app1/config/initializers/wrap_parameters.rb
170
+ - samples/app1/config/locales/en.yml
171
+ - samples/app1/config/puma.rb
172
+ - samples/app1/config/routes.rb
173
+ - samples/app1/config/spring.rb
174
+ - samples/app1/db/migrate/20210513080700_create_users.rb
175
+ - samples/app1/db/migrate/20210513134332_create_posts.rb
176
+ - samples/app1/db/schema.rb
177
+ - samples/app1/db/seeds.rb
178
+ - samples/app1/docker-compose.yml
179
+ - samples/app1/log/.keep
180
+ - samples/app2/.gitattributes
181
+ - samples/app2/.gitignore
182
+ - samples/app2/Dockerfile
183
+ - samples/app2/Gemfile
184
+ - samples/app2/Gemfile.lock
185
+ - samples/app2/README.md
186
+ - samples/app2/Rakefile
187
+ - samples/app2/app/models/application_record.rb
188
+ - samples/app2/app/models/concerns/.keep
189
+ - samples/app2/app/models/customer.rb
190
+ - samples/app2/app/models/post.rb
191
+ - samples/app2/bin/bundle
192
+ - samples/app2/bin/rails
193
+ - samples/app2/bin/rake
194
+ - samples/app2/bin/setup
195
+ - samples/app2/bin/spring
196
+ - samples/app2/config.ru
197
+ - samples/app2/config/application.rb
198
+ - samples/app2/config/boot.rb
199
+ - samples/app2/config/credentials.yml.enc
200
+ - samples/app2/config/database.yml
201
+ - samples/app2/config/environment.rb
202
+ - samples/app2/config/environments/development.rb
203
+ - samples/app2/config/environments/production.rb
204
+ - samples/app2/config/environments/test.rb
205
+ - samples/app2/config/initializers/application_controller_renderer.rb
206
+ - samples/app2/config/initializers/backtrace_silencers.rb
207
+ - samples/app2/config/initializers/cors.rb
208
+ - samples/app2/config/initializers/filter_parameter_logging.rb
209
+ - samples/app2/config/initializers/inflections.rb
210
+ - samples/app2/config/initializers/mime_types.rb
211
+ - samples/app2/config/initializers/pubsub.rb
212
+ - samples/app2/config/initializers/wrap_parameters.rb
213
+ - samples/app2/config/locales/en.yml
214
+ - samples/app2/config/puma.rb
215
+ - samples/app2/config/routes.rb
216
+ - samples/app2/config/spring.rb
217
+ - samples/app2/db/migrate/20210513080956_create_customers.rb
218
+ - samples/app2/db/migrate/20210513135203_create_posts.rb
219
+ - samples/app2/db/schema.rb
220
+ - samples/app2/db/seeds.rb
221
+ - samples/app2/docker-compose.yml
222
+ - samples/app2/log/.keep
135
223
  homepage: https://github.com/owen2345/pub_sub_model_sync
136
224
  licenses:
137
225
  - MIT
@@ -150,9 +238,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
238
  version: '2.4'
151
239
  required_rubygems_version: !ruby/object:Gem::Requirement
152
240
  requirements:
153
- - - ">"
241
+ - - ">="
154
242
  - !ruby/object:Gem::Version
155
- version: 1.3.1
243
+ version: '0'
156
244
  requirements: []
157
245
  rubygems_version: 3.0.8
158
246
  signing_key: