koyo-postgres-replication 0.1.4.pre → 0.1.6.pre

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7e309ca1f76d89a85e0d84b66fd54b629e7060ffd089a6a4383099230ccad9f
4
- data.tar.gz: d387c7c45a91cf7500c83188688024fd8c08c97c4298fcc015d1d7b12adc425b
3
+ metadata.gz: 205fff146002126edb7d725c1897ed7e3dc6bedc78539f0d21e707e22c5aeee0
4
+ data.tar.gz: 5aa57b08c21c7e86fdd6b44f9b2a4a679b2cf6c3e7628ab99f932757b46974ab
5
5
  SHA512:
6
- metadata.gz: 69dae55f084fc5d4206164d47e312d5bcbf530397190563126097fc3e0250760537ae1930b68228e18f7490e929e374af67663bb3ee8b6da99460dc718951bc6
7
- data.tar.gz: 4c53b1c6a422c78f70885ac5db3a4951b8323b8ba9707771915cd4cbe933274d2697c467c2b75586ca9c77e2e5fd299cf8bdfdc5b011a39dc6efa2ab6288bb82
6
+ metadata.gz: 13a8079535f071892ce0916853c6ddb2f197d355dbe780889c80d67313254632365e6a2a29a171f3dcbba6811bf6f77f9be59a26fe9822abbf56cace481cd41b
7
+ data.tar.gz: 20db2d8d865adc610b433673b44c93528cc490b43f7ac430aaf4a8924f10a14e552e7ea8e986790226bab27ce3e4835f900daebddf6252f27133fd5b9f1faba3
data/.yardoc/checksums CHANGED
@@ -4,7 +4,7 @@ lib/koyo/repl/mod.rb 92b54b56643b06fdc74adc65dc04460f631d4036
4
4
  lib/koyo/repl/data.rb cb847585c0f439b9f645b5ebd7fa3b96e08b94ff
5
5
  lib/koyo/repl/install.rb 9b19b7bb74d084882a1f726693bac2d693015daa
6
6
  lib/koyo/repl/railtie.rb 9c560c38f4663edda57aa39c9bb4bd9411daabbd
7
- lib/koyo/repl/version.rb d0d535b2aac27e3caa5eaeef69e117772e334f44
7
+ lib/koyo/repl/version.rb a05897446d0fc22220b2393f10f0ab1f4dbba1d8
8
8
  lib/koyo/repl/data_row.rb 46bd0b440721f3b0ddcded3fef1817ca5d77cb35
9
9
  lib/koyo/repl/database.rb 719f2723b83a927e0524f6dea79393caaeba0514
10
10
  lib/koyo/repl/diagnostics.rb 93226c47642c5e20f615425aff8a0c0ba988b07b
Binary file
data/Dockerfile ADDED
@@ -0,0 +1,24 @@
1
+ FROM ruby:3.2.2-slim
2
+
3
+ RUN apt-get update -qq && apt-get install -yq --no-install-recommends \
4
+ git \
5
+ build-essential \
6
+ gnupg2 \
7
+ less \
8
+ libpq-dev \
9
+ postgresql-client \
10
+ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
11
+
12
+ ENV LANG=C.UTF-8 \
13
+ BUNDLE_JOBS=4 \
14
+ BUNDLE_RETRY=3
15
+
16
+ RUN gem update --system && gem install bundler && gem install rails
17
+
18
+ WORKDIR /usr/src/app
19
+
20
+ COPY . .
21
+
22
+ RUN bundle install
23
+
24
+ CMD ["irb"]
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- koyo-postgres-replication (0.1.4.pre)
4
+ koyo-postgres-replication (0.1.6.pre)
5
5
  pg (~> 1.1)
6
6
  rack (~> 2.0, >= 2.0.0)
7
7
  rails (~> 7.0)
@@ -125,6 +125,8 @@ GEM
125
125
  net-smtp (0.3.3)
126
126
  net-protocol
127
127
  nio4r (2.5.9)
128
+ nokogiri (1.15.4-aarch64-linux)
129
+ racc (~> 1.4)
128
130
  nokogiri (1.15.4-arm64-darwin)
129
131
  racc (~> 1.4)
130
132
  parallel (1.23.0)
@@ -214,6 +216,7 @@ GEM
214
216
  zeitwerk (2.6.11)
215
217
 
216
218
  PLATFORMS
219
+ aarch64-linux
217
220
  arm64-darwin-22
218
221
 
219
222
  DEPENDENCIES
data/README.md CHANGED
@@ -4,9 +4,63 @@
4
4
 
5
5
  効用 koyo - Japanese for utility
6
6
 
7
- ## Replcation slots
7
+ ## What is this?
8
8
 
9
- This gem tries to simplify dealing with a `replication slot` in Postgres.
9
+ This gem tries to simplify dealing with a `replication slot` in Postgres. It
10
+ gives you a simple way to capture events in your Rails app when your Postgres
11
+ DB has a create, update, delete event. You can manage this from one class, or
12
+ manage this on a table-by-table basis within ActiveRecord Models.
13
+
14
+ Example of catch all:
15
+
16
+ ```
17
+ class KoyoReplHandlerService < Koyo::Repl::EventHandlerService
18
+ class << self
19
+ # This is called whenever a create/update/delete action happens
20
+ # @param (Koyo::Repl::DataRow) row is docuemented in the wiki at
21
+ # https://github.com/wiseleyb/koyo-postgres-replication/wiki/Koyo::Repl::DataRow-data-spec
22
+ def koyo_handle_all_replication(row)
23
+ case row.kind
24
+ when 'insert'
25
+ case row.table
26
+ when 'users'
27
+ # Do something with data... like update some api
28
+ # It's important to do this async (active-job/sidekiq) so you
29
+ # don't back up the replication slot
30
+ UpdateSomeApi.performn_async(row.id)
31
+ # This job would do something like:
32
+ # User.find(row.id); Call some API with data
33
+ when 'delete'
34
+ when 'update'
35
+ end
36
+ end
37
+ end
38
+ ```
39
+
40
+ Example of model callback:
41
+
42
+ ```
43
+ class User < ApplicationRecord
44
+ include Koyo::Repl::Mod
45
+ koyo_repl_handler :handle_replication
46
+
47
+ # This is called when a row is created/updated/deleted for the users table
48
+ # @param (Koyo::Repl::DataRow) row is docuemented in the wiki at
49
+ # https://github.com/wiseleyb/koyo-postgres-replication/wiki/Koyo::Repl::DataRow-data-spec
50
+ def self.handle_replication(row)
51
+ case row.kind
52
+ when 'insert'
53
+ # Do something with data... like update some api
54
+ # It's important to do this async (active-job/sidekiq) so you
55
+ # don't back up the replication slot
56
+ UpdateSomeApi.performn_async(row.id)
57
+ # This job would do something like:
58
+ # User.find(row.id); Call some API with data
59
+ when 'delete'
60
+ when 'update'
61
+ end
62
+ end
63
+ ```
10
64
 
11
65
  ### What is a replication slot?
12
66
 
@@ -192,6 +246,16 @@ TODO: update
192
246
 
193
247
  # Working with gem
194
248
 
249
+ ## Run specs
250
+
251
+ ```
252
+ rspec spec
253
+ ```
254
+
255
+ ### Docker
256
+
257
+ See [Docker wiki page](https://github.com/wiseleyb/koyo-postgres-replication/wiki/Docker)
258
+
195
259
  ## Gem Build
196
260
 
197
261
  ```
data/changelog.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Koyo Postgres Replication Changelog
2
2
 
3
+ ## 0.1.6.pre
4
+
5
+ - Clean up docker config
6
+ - Clean up README/doc
7
+
8
+ ## 0.1.5.pre
9
+
10
+ - Yard doc gemspec change to get it to show up in rubygems
11
+ - Add Docker files
12
+
3
13
  ## 0.1.4.pre
4
14
 
5
15
  - Add link to
@@ -0,0 +1,3 @@
1
+ FROM postgres:14
2
+ RUN apt-get update -qq && apt-get install -yq --no-install-recommends \
3
+ postgresql-14-wal2json
@@ -0,0 +1,34 @@
1
+ version: '3.9'
2
+ services:
3
+ db:
4
+ build: ./docker/postgres
5
+ image: postgres:13
6
+ ports:
7
+ - "5432:5432"
8
+ environment:
9
+ - POSTGRES_DB=rei_replication_test
10
+ - POSTGRES_PASSWORD=changeme
11
+ # - POSTGRES_USER=postgres
12
+ volumes:
13
+ - db_data:/var/lib/postgresql/data
14
+ command:
15
+ - "postgres"
16
+ - "-c"
17
+ - "wal_level=logical"
18
+ web:
19
+ build: .
20
+ image: rails-on-docker:1.3.0
21
+ stdin_open: true
22
+ tty: true
23
+ environment:
24
+ - DATABASE_URL=postgres://postgres:changeme@db
25
+ - BOOTSNAP_CACHE_DIR=/usr/local/bundle/_bootsnap
26
+ - HISTFILE=/usr/src/app/.dockerdev/.bash_history
27
+ - MALLOC_ARENA_MAX=2
28
+ volumes:
29
+ - .:/usr/src/app/:cached
30
+ depends_on:
31
+ - db
32
+ volumes:
33
+ bundle:
34
+ db_data:
data/entrypoint.sh ADDED
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+ unset BUNDLE_PATH
3
+ unset BUNDLE_BIN
4
+ set -e
5
+ exec "$@"
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.metadata = {
21
21
  'bug_tracker_uri' => "#{url}/issues",
22
22
  'changelog_uri' => "#{url}/blob/main/changelog.md",
23
- 'documentation' => 'https://www.rubydoc.info/github/wiseleyb/koyo-postgres-replication/main',
23
+ 'documentation_uri' => 'https://www.rubydoc.info/github/wiseleyb/koyo-postgres-replication/main',
24
24
  'homepage_uri' => spec.homepage,
25
25
  'source_code_uri' => burl
26
26
  }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Koyo
4
4
  module Repl
5
- VERSION = '0.1.4.pre'
5
+ VERSION = '0.1.6.pre'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: koyo-postgres-replication
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4.pre
4
+ version: 0.1.6.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Wiseley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-20 00:00:00.000000000 Z
11
+ date: 2023-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -116,12 +116,16 @@ files:
116
116
  - ".yardoc/objects/root.dat"
117
117
  - ".yardoc/proxy_types"
118
118
  - ".yardopts"
119
+ - Dockerfile
119
120
  - Gemfile
120
121
  - Gemfile.lock
121
122
  - MIT-LICENSE
122
123
  - README.md
123
124
  - Rakefile
124
125
  - changelog.md
126
+ - docker-compose.yml
127
+ - docker/postgres/Dockerfile
128
+ - entrypoint.sh
125
129
  - koyo-postgres-replication.gemspec
126
130
  - lib/koyo.rb
127
131
  - lib/koyo/repl/configuration.rb
@@ -146,7 +150,7 @@ licenses:
146
150
  metadata:
147
151
  bug_tracker_uri: https://github.com/wiseleyb/koyo-postgres-replication/issues
148
152
  changelog_uri: https://github.com/wiseleyb/koyo-postgres-replication/blob/main/changelog.md
149
- documentation: https://www.rubydoc.info/github/wiseleyb/koyo-postgres-replication/main
153
+ documentation_uri: https://www.rubydoc.info/github/wiseleyb/koyo-postgres-replication/main
150
154
  homepage_uri: https://github.com/wiseleyb
151
155
  source_code_uri: https://github.com/wiseleyb
152
156
  post_install_message: