active_record_proxy_adapters 0.1.1 → 0.1.2
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/CHANGELOG.md +12 -4
- data/Rakefile +13 -0
- data/docker/postgres_replica/cmd.sh +9 -0
- data/docker-compose.yml +2 -2
- data/lib/active_record_proxy_adapters/primary_replica_proxy.rb +1 -1
- data/lib/active_record_proxy_adapters/version.rb +1 -1
- data/postgres_replica.dockerfile +3 -11
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b23e66bd5df6d979b9efad29a52139552950f29774935cc91fffdbc87805a4c
|
4
|
+
data.tar.gz: 5b3206ee7420635f2f76432a1bbe728e161a9ea434db42da22ac5290ae561e3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cb98f62ce8a62ef0d71364491d1686186c527adc0c6a8612fd5ee118710fe9360166f14ae06b348856548c8b507ef90edf413113e93a9afa56c82e84c267df1e
|
7
|
+
data.tar.gz: 75f30a3ce9473415be91a51acc9fc39a5aacc31b6623943a007b3fb0c41e330752c6f6b470ee759d141b6c84feb96d3b24a015939bb0b053d82ac50a22adb447
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,17 @@
|
|
1
|
+
## [Unreleased]
|
2
|
+
|
3
|
+
## [0.1.2] - 2024-12-16
|
4
|
+
|
5
|
+
Fix CTE regex matcher (4b1d10b)
|
6
|
+
|
7
|
+
## [0.1.1] - 2024-11-27
|
8
|
+
|
9
|
+
- Enable RubyGems MFA (2a71b1f)
|
10
|
+
|
1
11
|
## [0.1.0] - 2024-11-19
|
2
12
|
|
3
|
-
- Add PostgreSQLProxyAdapter
|
13
|
+
- Add PostgreSQLProxyAdapter (2b3bb9f)
|
4
14
|
|
5
15
|
## [0.1.0.rc2] - 2024-10-28
|
6
16
|
|
7
|
-
- Add PostgreSQLProxyAdapter
|
8
|
-
|
9
|
-
## [Unreleased]
|
17
|
+
- Add PostgreSQLProxyAdapter (2b3bb9f)
|
data/Rakefile
CHANGED
@@ -10,3 +10,16 @@ require "rubocop/rake_task"
|
|
10
10
|
RuboCop::RakeTask.new
|
11
11
|
|
12
12
|
task default: %i[spec rubocop]
|
13
|
+
|
14
|
+
namespace :coverage do
|
15
|
+
desc "Collates all result sets generated by the different test runners"
|
16
|
+
task :report do
|
17
|
+
require "simplecov"
|
18
|
+
|
19
|
+
SimpleCov.collate Dir["coverage/**/.resultset.json"] do
|
20
|
+
add_group "PostgreSQL" do |src_file|
|
21
|
+
[/postgresql/, /postgre_sql/].any? { |pattern| pattern.match?(src_file.filename) }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
until pg_basebackup --pgdata=/var/lib/postgresql/data -R --slot=$PRIMARY_REPLICATION_SLOT --host=$PRIMARY_DATABASE_HOST --port=$PRIMARY_DATABASE_PORT
|
2
|
+
do
|
3
|
+
echo 'Waiting for primary to connect...'
|
4
|
+
sleep 1s
|
5
|
+
done
|
6
|
+
|
7
|
+
echo 'Backup done, starting replica...'
|
8
|
+
chmod 0700 /var/lib/postgresql/data
|
9
|
+
postgres
|
data/docker-compose.yml
CHANGED
@@ -15,8 +15,8 @@ services:
|
|
15
15
|
app:
|
16
16
|
build:
|
17
17
|
args:
|
18
|
-
- RUBY_VERSION=${RUBY_VERSION:-3.
|
19
|
-
- RAILS_VERSION=${RAILS_VERSION
|
18
|
+
- RUBY_VERSION=${RUBY_VERSION:-3.3.6}
|
19
|
+
- RAILS_VERSION=${RAILS_VERSION:-8.0.0}
|
20
20
|
container_name: app
|
21
21
|
image: active_record_proxy_adapters-app:${ENV_TAG:-latest}
|
22
22
|
tty: true
|
@@ -16,7 +16,7 @@ module ActiveRecordProxyAdapters
|
|
16
16
|
/\A\s*select.+(nextval|currval|lastval|get_lock|release_lock|pg_advisory_lock|pg_advisory_unlock)\(/i
|
17
17
|
].map(&:freeze).freeze
|
18
18
|
# All queries that match these patterns should be sent to the replica database
|
19
|
-
SQL_REPLICA_MATCHERS = [/\A\s*(select|with
|
19
|
+
SQL_REPLICA_MATCHERS = [/\A\s*(select|with\s[\s\S]*\)\s*select)\s/i].map(&:freeze).freeze
|
20
20
|
# All queries that match these patterns should be sent to all databases
|
21
21
|
SQL_ALL_MATCHERS = [/\A\s*set\s/i].map(&:freeze).freeze
|
22
22
|
# Local sets queries should not be sent to all datbases
|
data/postgres_replica.dockerfile
CHANGED
@@ -4,20 +4,12 @@ ENV PRIMARY_DATABASE_HOST=localhost
|
|
4
4
|
ENV PRIMARY_DATABASE_PORT=5432
|
5
5
|
ENV PRIMARY_REPLICATION_SLOT=replication_slot
|
6
6
|
|
7
|
-
USER root
|
8
|
-
RUN printf '' > cmd.sh
|
9
7
|
|
10
|
-
|
11
|
-
RUN echo 'do' >> cmd.sh
|
12
|
-
RUN echo "echo 'Waiting for primary to connect...'" >> cmd.sh
|
13
|
-
RUN echo 'sleep 1s' >> cmd.sh
|
14
|
-
RUN echo 'done' >> cmd.sh
|
15
|
-
RUN echo "echo 'Backup done, starting replica...'" >> cmd.sh
|
16
|
-
RUN echo 'chmod 0700 /var/lib/postgresql/data' >> cmd.sh
|
17
|
-
RUN echo 'postgres' >> cmd.sh
|
8
|
+
COPY docker/postgres_replica/cmd.sh cmd.sh
|
18
9
|
|
10
|
+
USER root
|
19
11
|
RUN chown -R postgres:postgres cmd.sh
|
20
12
|
USER postgres
|
21
|
-
RUN chmod u+
|
13
|
+
RUN chmod u+x cmd.sh
|
22
14
|
|
23
15
|
CMD [ "./cmd.sh" ]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_proxy_adapters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Cruz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- README.md
|
70
70
|
- Rakefile
|
71
71
|
- docker-compose.yml
|
72
|
+
- docker/postgres_replica/cmd.sh
|
72
73
|
- lib/active_record/connection_adapters/postgresql_proxy_adapter.rb
|
73
74
|
- lib/active_record/tasks/postgresql_proxy_database_tasks.rb
|
74
75
|
- lib/active_record_proxy_adapters.rb
|