pgtk 0.29.3 → 0.29.4
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/Gemfile +3 -1
- data/Gemfile.lock +27 -17
- data/LICENSE.txt +1 -1
- data/LICENSES/MIT.txt +1 -1
- data/README.md +0 -1
- data/Rakefile +14 -2
- data/cucumber.yml +1 -1
- data/lib/pgtk/impatient.rb +2 -2
- data/lib/pgtk/liquibase_task.rb +45 -36
- data/lib/pgtk/liquicheck_task.rb +5 -3
- data/lib/pgtk/pgsql_task.rb +35 -37
- data/lib/pgtk/pool.rb +2 -2
- data/lib/pgtk/retry.rb +2 -2
- data/lib/pgtk/spy.rb +2 -2
- data/lib/pgtk/stash.rb +2 -2
- data/lib/pgtk/version.rb +3 -3
- data/lib/pgtk/wire.rb +5 -5
- data/lib/pgtk.rb +2 -2
- data/pgtk.gemspec +2 -1
- data/resources/pom.xml +2 -2
- data/test-resources/2019/01-test.xml +1 -1
- data/test-resources/master.xml +1 -1
- metadata +15 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 296344ebe7c8fbd455e8c8276e5d4ce27765974b83a16ef001b4d699f7d63977
|
|
4
|
+
data.tar.gz: df63b7c1b2efdd245c4e167d70cbb85d1c4ecde026a402b51687256bb1d76695
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 969917c4590972ecfbda2701f1275d9ba3b0f8d63d4ff3492068509d22914a0c56fac94d4999703d0f03dbe4a2bf1a5d5d7371b77c31ca852bed47c72606ef84
|
|
7
|
+
data.tar.gz: 204bdc905dc18bf7addba0e01b4689b88a2d039cfbb96e77d3c5ed18a6c96e18b27d4f4a8fc38b62e4028f51c0690ccbeebf7d6a8ca3f269d45135cf3049a884
|
data/Gemfile
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
source 'https://rubygems.org'
|
|
@@ -10,6 +10,8 @@ gem 'minitest', '~>6.0', require: false
|
|
|
10
10
|
gem 'minitest-mock', '~>5.27', require: false
|
|
11
11
|
gem 'minitest-reporters', '~>1.7', require: false
|
|
12
12
|
gem 'minitest-stub-const', '~>0.6', require: false
|
|
13
|
+
gem 'os', '~>1.1', require: false
|
|
14
|
+
gem 'qbash', '~>0.0', require: false
|
|
13
15
|
gem 'rack', '~>3.1', require: false
|
|
14
16
|
gem 'rake', '~>13.2', require: false
|
|
15
17
|
gem 'rubocop', '~>1.73', require: false
|
data/Gemfile.lock
CHANGED
|
@@ -4,6 +4,7 @@ PATH
|
|
|
4
4
|
pgtk (0.0.0)
|
|
5
5
|
backtrace (~> 0.4)
|
|
6
6
|
concurrent-ruby (~> 1.3)
|
|
7
|
+
donce (~> 0.0)
|
|
7
8
|
joined (~> 0.3)
|
|
8
9
|
logger (~> 1.7)
|
|
9
10
|
loog (~> 0.6)
|
|
@@ -23,17 +24,23 @@ GEM
|
|
|
23
24
|
concurrent-ruby (1.3.6)
|
|
24
25
|
differ (0.1.2)
|
|
25
26
|
docile (1.4.1)
|
|
26
|
-
|
|
27
|
+
donce (0.6.0)
|
|
28
|
+
backtrace (~> 0.3)
|
|
29
|
+
os (~> 1.1)
|
|
30
|
+
qbash (~> 0.3)
|
|
31
|
+
elapsed (0.2.2)
|
|
27
32
|
loog (~> 0.6)
|
|
28
33
|
tago (~> 0.1)
|
|
34
|
+
ellipsized (0.3.0)
|
|
29
35
|
joined (0.4.0)
|
|
30
36
|
json (2.18.0)
|
|
31
37
|
language_server-protocol (3.17.0.5)
|
|
32
38
|
lint_roller (1.1.0)
|
|
33
39
|
logger (1.7.0)
|
|
34
|
-
loog (0.
|
|
40
|
+
loog (0.7.2)
|
|
41
|
+
ellipsized
|
|
35
42
|
logger (~> 1.0)
|
|
36
|
-
minitest (6.0.
|
|
43
|
+
minitest (6.0.1)
|
|
37
44
|
prism (~> 1.5)
|
|
38
45
|
minitest-mock (5.27.0)
|
|
39
46
|
minitest-reporters (1.7.1)
|
|
@@ -42,21 +49,22 @@ GEM
|
|
|
42
49
|
minitest (>= 5.0)
|
|
43
50
|
ruby-progressbar
|
|
44
51
|
minitest-stub-const (0.6)
|
|
45
|
-
nokogiri (1.
|
|
52
|
+
nokogiri (1.19.0-arm64-darwin)
|
|
46
53
|
racc (~> 1.4)
|
|
47
|
-
nokogiri (1.
|
|
54
|
+
nokogiri (1.19.0-x64-mingw-ucrt)
|
|
48
55
|
racc (~> 1.4)
|
|
49
|
-
nokogiri (1.
|
|
56
|
+
nokogiri (1.19.0-x86_64-linux-gnu)
|
|
50
57
|
racc (~> 1.4)
|
|
58
|
+
os (1.1.4)
|
|
51
59
|
parallel (1.27.0)
|
|
52
|
-
parser (3.3.10.
|
|
60
|
+
parser (3.3.10.1)
|
|
53
61
|
ast (~> 2.4.1)
|
|
54
62
|
racc
|
|
55
|
-
pg (1.6.
|
|
56
|
-
pg (1.6.
|
|
57
|
-
pg (1.6.
|
|
58
|
-
prism (1.
|
|
59
|
-
qbash (0.
|
|
63
|
+
pg (1.6.3-arm64-darwin)
|
|
64
|
+
pg (1.6.3-x64-mingw-ucrt)
|
|
65
|
+
pg (1.6.3-x86_64-linux)
|
|
66
|
+
prism (1.8.0)
|
|
67
|
+
qbash (0.7.1)
|
|
60
68
|
backtrace (> 0)
|
|
61
69
|
elapsed (> 0)
|
|
62
70
|
loog (> 0)
|
|
@@ -69,7 +77,7 @@ GEM
|
|
|
69
77
|
tago (~> 0.0)
|
|
70
78
|
regexp_parser (2.11.3)
|
|
71
79
|
rexml (3.4.4)
|
|
72
|
-
rubocop (1.
|
|
80
|
+
rubocop (1.84.0)
|
|
73
81
|
json (~> 2.3)
|
|
74
82
|
language_server-protocol (~> 3.17.0.2)
|
|
75
83
|
lint_roller (~> 1.1.0)
|
|
@@ -77,12 +85,12 @@ GEM
|
|
|
77
85
|
parser (>= 3.3.0.2)
|
|
78
86
|
rainbow (>= 2.2.2, < 4.0)
|
|
79
87
|
regexp_parser (>= 2.9.3, < 3.0)
|
|
80
|
-
rubocop-ast (>= 1.
|
|
88
|
+
rubocop-ast (>= 1.49.0, < 2.0)
|
|
81
89
|
ruby-progressbar (~> 1.7)
|
|
82
90
|
unicode-display_width (>= 2.4.0, < 4.0)
|
|
83
|
-
rubocop-ast (1.
|
|
91
|
+
rubocop-ast (1.49.0)
|
|
84
92
|
parser (>= 3.3.7.2)
|
|
85
|
-
prism (~> 1.
|
|
93
|
+
prism (~> 1.7)
|
|
86
94
|
rubocop-minitest (0.38.2)
|
|
87
95
|
lint_roller (~> 1.1)
|
|
88
96
|
rubocop (>= 1.75.0, < 2.0)
|
|
@@ -105,7 +113,7 @@ GEM
|
|
|
105
113
|
simplecov-html (0.13.2)
|
|
106
114
|
simplecov_json_formatter (0.1.4)
|
|
107
115
|
slop (4.10.1)
|
|
108
|
-
tago (0.
|
|
116
|
+
tago (0.7.0)
|
|
109
117
|
threads (0.5.0)
|
|
110
118
|
backtrace (~> 0)
|
|
111
119
|
concurrent-ruby (~> 1.0)
|
|
@@ -133,7 +141,9 @@ DEPENDENCIES
|
|
|
133
141
|
minitest-mock (~> 5.27)
|
|
134
142
|
minitest-reporters (~> 1.7)
|
|
135
143
|
minitest-stub-const (~> 0.6)
|
|
144
|
+
os (~> 1.1)
|
|
136
145
|
pgtk!
|
|
146
|
+
qbash (~> 0.0)
|
|
137
147
|
rack (~> 3.1)
|
|
138
148
|
rake (~> 13.2)
|
|
139
149
|
rubocop (~> 1.73)
|
data/LICENSE.txt
CHANGED
data/LICENSES/MIT.txt
CHANGED
data/README.md
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
[](https://github.com/yegor256/pgtk/actions/workflows/rake.yml)
|
|
8
8
|
[](https://www.0pdd.com/p?name=yegor256/pgtk)
|
|
9
9
|
[](https://badge.fury.io/rb/pgtk)
|
|
10
|
-
[](https://codeclimate.com/github/yegor256/pgtk/maintainability)
|
|
11
10
|
[](https://github.com/yegor256/pgtk/blob/master/LICENSE.txt)
|
|
12
11
|
[](https://codecov.io/github/yegor256/pgtk?branch=master)
|
|
13
12
|
[](https://hitsofcode.com/view/github/yegor256/pgtk)
|
data/Rakefile
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
|
+
require 'os'
|
|
7
|
+
require 'qbash'
|
|
6
8
|
require 'rubygems'
|
|
7
9
|
require 'rake'
|
|
8
10
|
require 'rake/clean'
|
|
@@ -15,7 +17,7 @@ def version
|
|
|
15
17
|
Gem::Specification.load(Dir['*.gemspec'].first).version
|
|
16
18
|
end
|
|
17
19
|
|
|
18
|
-
task default: %i[clean test rubocop xcop yard]
|
|
20
|
+
task default: %i[clean test picks rubocop xcop yard]
|
|
19
21
|
|
|
20
22
|
require 'rake/testtask'
|
|
21
23
|
desc 'Run all unit tests'
|
|
@@ -26,6 +28,16 @@ Rake::TestTask.new(:test) do |test|
|
|
|
26
28
|
test.verbose = false
|
|
27
29
|
end
|
|
28
30
|
|
|
31
|
+
desc 'Run them via Ruby, one by one'
|
|
32
|
+
task :picks do
|
|
33
|
+
next if OS.windows?
|
|
34
|
+
%w[lib].each do |d|
|
|
35
|
+
Dir["#{d}/**/*.rb"].each do |f|
|
|
36
|
+
qbash("bundle exec ruby #{Shellwords.escape(f)}", stdout: $stdout, env: { 'PICKS' => 'yes' })
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
29
41
|
require 'yard'
|
|
30
42
|
desc 'Build Yard documentation'
|
|
31
43
|
YARD::Rake::YardocTask.new do |t|
|
data/cucumber.yml
CHANGED
data/lib/pgtk/impatient.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'securerandom'
|
|
@@ -51,7 +51,7 @@ require_relative '../pgtk'
|
|
|
51
51
|
# spy.exec('SELECT * FROM users')
|
|
52
52
|
#
|
|
53
53
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
54
|
-
# Copyright:: Copyright (c) 2019-
|
|
54
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
55
55
|
# License:: MIT
|
|
56
56
|
class Pgtk::Impatient
|
|
57
57
|
# If timed out
|
data/lib/pgtk/liquibase_task.rb
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
|
+
require 'donce'
|
|
6
7
|
require 'English'
|
|
8
|
+
require 'loog'
|
|
9
|
+
require 'os'
|
|
7
10
|
require 'qbash'
|
|
8
11
|
require 'rake'
|
|
9
12
|
require 'rake/tasklib'
|
|
@@ -13,7 +16,7 @@ require_relative '../pgtk'
|
|
|
13
16
|
|
|
14
17
|
# Liquibase rake task.
|
|
15
18
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
16
|
-
# Copyright:: Copyright (c) 2019-
|
|
19
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
17
20
|
# License:: MIT
|
|
18
21
|
class Pgtk::LiquibaseTask < Rake::TaskLib
|
|
19
22
|
# Task name
|
|
@@ -99,47 +102,53 @@ class Pgtk::LiquibaseTask < Rake::TaskLib
|
|
|
99
102
|
raise "The 'password' is not set in the config (YAML)" if password.nil?
|
|
100
103
|
Dir.chdir(File.dirname(@master)) do
|
|
101
104
|
qbash(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
105
|
+
'mvn', 'verify',
|
|
106
|
+
'--errors',
|
|
107
|
+
'--batch-mode',
|
|
108
|
+
'--fail-fast',
|
|
109
|
+
@quiet ? '--quiet' : '--debug',
|
|
110
|
+
'--file',
|
|
111
|
+
Shellwords.escape(pom),
|
|
112
|
+
'--define',
|
|
113
|
+
"liquibase.version=#{@liquibase_version}",
|
|
114
|
+
'--define',
|
|
115
|
+
"postgresql.version=#{@postgresql_version}",
|
|
116
|
+
'--define',
|
|
117
|
+
Shellwords.escape("liquibase.searchPath=#{File.dirname(@master)}"),
|
|
118
|
+
'--define',
|
|
119
|
+
Shellwords.escape("liquibase.changeLogFile=#{old ? @master : File.basename(@master)}"),
|
|
120
|
+
'--define',
|
|
121
|
+
Shellwords.escape("liquibase.url=#{url}"),
|
|
122
|
+
'--define',
|
|
123
|
+
Shellwords.escape("liquibase.password=#{password}"),
|
|
124
|
+
'--define',
|
|
125
|
+
Shellwords.escape("liquibase.contexts=#{@contexts}"),
|
|
126
|
+
stdout: @quiet ? Loog::NULL : Loog::REGULAR,
|
|
127
|
+
stderr: Loog::REGULAR
|
|
125
128
|
)
|
|
126
129
|
end
|
|
127
130
|
return unless @schema
|
|
128
131
|
@schema = File.expand_path(@schema)
|
|
132
|
+
host = yml.dig('pgsql', 'host')
|
|
133
|
+
host = donce_host if OS.mac? && ['localhost', '127.0.0.1'].include?(host)
|
|
129
134
|
Dir.chdir(File.dirname(@schema)) do
|
|
130
|
-
|
|
131
|
-
|
|
135
|
+
out = donce(
|
|
136
|
+
image: 'postgres:18.1',
|
|
137
|
+
args: OS.mac? ? '' : '--network=host',
|
|
138
|
+
env: { 'PGPASSWORD' => password },
|
|
139
|
+
command: [
|
|
132
140
|
'pg_dump',
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
'-n public',
|
|
138
|
-
'--schema-only'
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
141
|
+
'-h', host,
|
|
142
|
+
'-p', yml.dig('pgsql', 'port').to_s,
|
|
143
|
+
'-U', yml.dig('pgsql', 'user'),
|
|
144
|
+
'-d', yml.dig('pgsql', 'dbname'),
|
|
145
|
+
'-n', 'public',
|
|
146
|
+
'--schema-only'
|
|
147
|
+
].shelljoin,
|
|
148
|
+
stdout: @quiet ? Loog::NULL : Loog::REGULAR,
|
|
149
|
+
stderr: Loog::REGULAR
|
|
142
150
|
)
|
|
151
|
+
File.write(@schema, out)
|
|
143
152
|
end
|
|
144
153
|
end
|
|
145
154
|
end
|
data/lib/pgtk/liquicheck_task.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'nokogiri'
|
|
@@ -9,7 +9,7 @@ require_relative '../pgtk'
|
|
|
9
9
|
|
|
10
10
|
# Liquicheck rake task for check Liquibase XML files.
|
|
11
11
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
12
|
-
# Copyright:: Copyright (c) 2019-
|
|
12
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
13
13
|
# License:: MIT
|
|
14
14
|
class Pgtk::LiquicheckTask < Rake::TaskLib
|
|
15
15
|
# Task name
|
|
@@ -113,6 +113,8 @@ class Pgtk::LiquicheckTask < Rake::TaskLib
|
|
|
113
113
|
(raise MustError, msg) unless prop.match?(regex)
|
|
114
114
|
end
|
|
115
115
|
|
|
116
|
-
MustError
|
|
116
|
+
class MustError < StandardError
|
|
117
|
+
# empty by design
|
|
118
|
+
end
|
|
117
119
|
private_constant :MustError
|
|
118
120
|
end
|
data/lib/pgtk/pgsql_task.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'cgi'
|
|
@@ -18,7 +18,7 @@ require_relative '../pgtk'
|
|
|
18
18
|
|
|
19
19
|
# Pgsql rake task.
|
|
20
20
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
21
|
-
# Copyright:: Copyright (c) 2019-
|
|
21
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
22
22
|
# License:: MIT
|
|
23
23
|
class Pgtk::PgsqlTask < Rake::TaskLib
|
|
24
24
|
# Task name
|
|
@@ -145,25 +145,26 @@ class Pgtk::PgsqlTask < Rake::TaskLib
|
|
|
145
145
|
FileUtils.mkdir_p(home)
|
|
146
146
|
out =
|
|
147
147
|
qbash(
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
],
|
|
160
|
-
log: stdout
|
|
148
|
+
'docker',
|
|
149
|
+
'run',
|
|
150
|
+
"--publish #{Shellwords.escape("#{port}:5432")}",
|
|
151
|
+
"-e POSTGRES_USER=#{Shellwords.escape(@user)}",
|
|
152
|
+
"-e POSTGRES_PASSWORD=#{Shellwords.escape(@password)}",
|
|
153
|
+
"-e POSTGRES_DB=#{Shellwords.escape(@dbname)}",
|
|
154
|
+
'--detach',
|
|
155
|
+
'--rm',
|
|
156
|
+
'postgres:18.1',
|
|
157
|
+
@config.map { |k, v| "-c #{Shellwords.escape("#{k}=#{v}")}" },
|
|
158
|
+
stdout:
|
|
161
159
|
)
|
|
162
160
|
container = out.scan(/[a-f0-9]+\Z/).first
|
|
163
161
|
File.write(File.join(home, 'docker-container'), container)
|
|
164
162
|
at_exit do
|
|
165
|
-
if qbash(
|
|
166
|
-
|
|
163
|
+
if qbash(
|
|
164
|
+
"docker ps --format '{{.ID}}' --no-trunc | grep '#{Shellwords.escape(container)}'",
|
|
165
|
+
both: true, accept: nil
|
|
166
|
+
)[1].zero?
|
|
167
|
+
qbash("docker stop #{Shellwords.escape(container)}")
|
|
167
168
|
puts "PostgreSQL docker container #{container.inspect} was stopped" unless @quiet
|
|
168
169
|
end
|
|
169
170
|
end
|
|
@@ -179,17 +180,16 @@ class Pgtk::PgsqlTask < Rake::TaskLib
|
|
|
179
180
|
Tempfile.open do |pwfile|
|
|
180
181
|
File.write(pwfile.path, @password)
|
|
181
182
|
qbash(
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
log: stdout
|
|
183
|
+
'initdb',
|
|
184
|
+
'--auth=trust',
|
|
185
|
+
'--locale=en_US.UTF-8',
|
|
186
|
+
'-D',
|
|
187
|
+
Shellwords.escape(home),
|
|
188
|
+
'--username',
|
|
189
|
+
Shellwords.escape(@user),
|
|
190
|
+
'--pwfile',
|
|
191
|
+
Shellwords.escape(pwfile.path),
|
|
192
|
+
stdout:
|
|
193
193
|
)
|
|
194
194
|
end
|
|
195
195
|
cmd = [
|
|
@@ -206,7 +206,7 @@ class Pgtk::PgsqlTask < Rake::TaskLib
|
|
|
206
206
|
)
|
|
207
207
|
File.write(File.join(@dir, 'pid'), pid)
|
|
208
208
|
at_exit do
|
|
209
|
-
qbash("kill -TERM #{pid}",
|
|
209
|
+
qbash("kill -TERM #{Shellwords.escape(pid)}", stdout:)
|
|
210
210
|
puts "PostgreSQL killed in PID #{pid}" unless @quiet
|
|
211
211
|
end
|
|
212
212
|
begin
|
|
@@ -218,14 +218,12 @@ class Pgtk::PgsqlTask < Rake::TaskLib
|
|
|
218
218
|
raise "Failed to start PostgreSQL database server on port #{port}: #{e.message}"
|
|
219
219
|
end
|
|
220
220
|
qbash(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
],
|
|
228
|
-
log: stdout
|
|
221
|
+
'createdb',
|
|
222
|
+
'--host', 'localhost',
|
|
223
|
+
'--port', Shellwords.escape(port),
|
|
224
|
+
'--username', Shellwords.escape(@user),
|
|
225
|
+
Shellwords.escape(@dbname),
|
|
226
|
+
stdout:
|
|
229
227
|
)
|
|
230
228
|
pid
|
|
231
229
|
end
|
data/lib/pgtk/pool.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'pg'
|
|
@@ -46,7 +46,7 @@ require_relative 'wire'
|
|
|
46
46
|
# end
|
|
47
47
|
#
|
|
48
48
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
49
|
-
# Copyright:: Copyright (c) 2019-
|
|
49
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
50
50
|
# License:: MIT
|
|
51
51
|
class Pgtk::Pool
|
|
52
52
|
# Constructor.
|
data/lib/pgtk/retry.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative '../pgtk'
|
|
@@ -45,7 +45,7 @@ require_relative '../pgtk'
|
|
|
45
45
|
# end
|
|
46
46
|
#
|
|
47
47
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
48
|
-
# Copyright:: Copyright (c) 2019-
|
|
48
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
49
49
|
# License:: MIT
|
|
50
50
|
class Pgtk::Retry
|
|
51
51
|
# Constructor.
|
data/lib/pgtk/spy.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'pg'
|
|
@@ -44,7 +44,7 @@ require_relative 'wire'
|
|
|
44
44
|
# puts "First query: #{queries.first}"
|
|
45
45
|
#
|
|
46
46
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
47
|
-
# Copyright:: Copyright (c) 2019-
|
|
47
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
48
48
|
# License:: MIT
|
|
49
49
|
class Pgtk::Spy
|
|
50
50
|
# Constructor.
|
data/lib/pgtk/stash.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'concurrent-ruby'
|
|
@@ -26,7 +26,7 @@ require_relative '../pgtk'
|
|
|
26
26
|
# result = stash.exec('SELECT * FROM users WHERE id = $1', [42])
|
|
27
27
|
#
|
|
28
28
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
29
|
-
# Copyright:: Copyright (c) 2019-
|
|
29
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
30
30
|
# License:: MIT
|
|
31
31
|
class Pgtk::Stash
|
|
32
32
|
MODS = %w[INSERT DELETE UPDATE LOCK VACUUM TRANSACTION COMMIT ROLLBACK REINDEX TRUNCATE CREATE ALTER DROP SET].freeze
|
data/lib/pgtk/version.rb
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require_relative '../pgtk'
|
|
7
7
|
|
|
8
8
|
# Pgtk version.
|
|
9
9
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
10
|
-
# Copyright:: Copyright (c) 2019-
|
|
10
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
11
11
|
# License:: MIT
|
|
12
12
|
module Pgtk
|
|
13
13
|
# Current version of the library.
|
|
14
|
-
VERSION = '0.29.
|
|
14
|
+
VERSION = '0.29.4' unless defined?(VERSION)
|
|
15
15
|
end
|
data/lib/pgtk/wire.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'pg'
|
|
@@ -10,14 +10,14 @@ require_relative '../pgtk'
|
|
|
10
10
|
|
|
11
11
|
# Wires.
|
|
12
12
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
13
|
-
# Copyright:: Copyright (c) 2019-
|
|
13
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
14
14
|
# License:: MIT
|
|
15
15
|
module Pgtk::Wire
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
# Simple wire with details.
|
|
19
19
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
20
|
-
# Copyright:: Copyright (c) 2019-
|
|
20
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
21
21
|
# License:: MIT
|
|
22
22
|
class Pgtk::Wire::Direct
|
|
23
23
|
# Constructor.
|
|
@@ -53,7 +53,7 @@ end
|
|
|
53
53
|
# postgres://user:password@host:port/dbname
|
|
54
54
|
#
|
|
55
55
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
56
|
-
# Copyright:: Copyright (c) 2019-
|
|
56
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
57
57
|
# License:: MIT
|
|
58
58
|
class Pgtk::Wire::Env
|
|
59
59
|
# Constructor.
|
|
@@ -81,7 +81,7 @@ end
|
|
|
81
81
|
|
|
82
82
|
# Using configuration from YAML file.
|
|
83
83
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
84
|
-
# Copyright:: Copyright (c) 2019-
|
|
84
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
85
85
|
# License:: MIT
|
|
86
86
|
class Pgtk::Wire::Yaml
|
|
87
87
|
# Constructor.
|
data/lib/pgtk.rb
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
# Pgtk main module.
|
|
7
7
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
8
|
-
# Copyright:: Copyright (c) 2019-
|
|
8
|
+
# Copyright:: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
9
9
|
# License:: MIT
|
|
10
10
|
module Pgtk
|
|
11
11
|
# Nothing here.
|
data/pgtk.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'English'
|
|
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
|
|
|
28
28
|
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
|
29
29
|
s.add_dependency 'backtrace', '~>0.4'
|
|
30
30
|
s.add_dependency 'concurrent-ruby', '~>1.3'
|
|
31
|
+
s.add_dependency 'donce', '~>0.0'
|
|
31
32
|
s.add_dependency 'joined', '~>0.3'
|
|
32
33
|
s.add_dependency 'logger', '~>1.7'
|
|
33
34
|
s.add_dependency 'loog', '~>0.6'
|
data/resources/pom.xml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<!--
|
|
3
|
-
* SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
* SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
-->
|
|
6
6
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<version>0.0.0</version>
|
|
11
11
|
<packaging>pom</packaging>
|
|
12
12
|
<properties>
|
|
13
|
-
<postgresql.version>42.7.
|
|
13
|
+
<postgresql.version>42.7.9</postgresql.version>
|
|
14
14
|
<liquibase.version>5.0.1</liquibase.version>
|
|
15
15
|
</properties>
|
|
16
16
|
<dependencies>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<!--
|
|
3
|
-
* SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
* SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
-->
|
|
6
6
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd" logicalFilePath="001-initial-schema.xml">
|
data/test-resources/master.xml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<!--
|
|
3
|
-
* SPDX-FileCopyrightText: Copyright (c) 2019-
|
|
3
|
+
* SPDX-FileCopyrightText: Copyright (c) 2019-2026 Yegor Bugayenko
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
-->
|
|
6
6
|
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pgtk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.29.
|
|
4
|
+
version: 0.29.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yegor Bugayenko
|
|
@@ -37,6 +37,20 @@ dependencies:
|
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '1.3'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: donce
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0.0'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0.0'
|
|
40
54
|
- !ruby/object:Gem::Dependency
|
|
41
55
|
name: joined
|
|
42
56
|
requirement: !ruby/object:Gem::Requirement
|