pgtk 0.9.6 → 0.11.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 04bf16143dbb42f1081b9ccbbe914b689437b851a639c8aa3260f26f6fbe7bb7
4
- data.tar.gz: 6baa628d9a3fa5d559120cd85479caa281b0b45bd332878882c13b1d9536fdc1
3
+ metadata.gz: 5dcffe3ba23b17694740ccad32c11d2813f1606b4dfa9b93c63480ebb0e54299
4
+ data.tar.gz: b166a621155d4be6f8e7294d46b7a07ead34a711a17a3119cd34c289313d8f62
5
5
  SHA512:
6
- metadata.gz: fe16da33edcbecc5d946c87576df7cc9df2095ad82b3f4f7dc62e8f7974bc2bdbfb783dedb053abab4dc9adeb5e2f45354e5d4cc1f0787a39607f783711427fd
7
- data.tar.gz: 25301a409afe7a607262104d790943a64903c0d07a21efba0476f5667413e860970bc596cd7604b09a61b7b7ebb15ec9f776b6e69d6004ccdbdbd69becb9ca10
6
+ metadata.gz: 522afdb2e8c28af25cffd7a298f7caa6e1d964f8551408b7c9200650013d4b2e17c59363e6826011b175269744fb0436a351a79d5d85c5eafcf97d38c2bd7a5a
7
+ data.tar.gz: fa0eae28c330618462229826c735b1802e483ae07db63f6a8cc617cfb41f2a70dcf40ddd1ec86ce33b5ea3ec605b47f6b50335f22d456cde919a7bbe8c852663
@@ -28,7 +28,7 @@ name: actionlint
28
28
  - master
29
29
  jobs:
30
30
  actionlint:
31
- runs-on: ubuntu-22.04
31
+ runs-on: ubuntu-24.04
32
32
  steps:
33
33
  - uses: actions/checkout@v4
34
34
  - name: Download actionlint
@@ -25,7 +25,7 @@ on:
25
25
  - master
26
26
  jobs:
27
27
  codecov:
28
- runs-on: ubuntu-22.04
28
+ runs-on: ubuntu-24.04
29
29
  steps:
30
30
  - uses: actions/checkout@v4
31
31
  - uses: ruby/setup-ruby@v1
@@ -34,12 +34,13 @@ jobs:
34
34
  bundler-cache: true
35
35
  - run: |
36
36
  sudo apt-get update
37
- sudo apt-get install -y postgresql-14
38
- sudo ln -s /usr/lib/postgresql/14/bin/initdb /bin/initdb
39
- sudo ln -s /usr/lib/postgresql/14/bin/postgres /bin/postgres
37
+ sudo apt-get install -y libpq-dev postgresql-client postgresql
38
+ sudo ln -s "$(realpath /usr/lib/postgresql/*/bin/initdb)" /bin/initdb
39
+ sudo ln -s "$(realpath /usr/lib/postgresql/*/bin/postgres)" /bin/postgres
40
+ sudo ln -s "$(realpath /usr/lib/postgresql/*/bin/pg_ctl)" /bin/pg_ctl
40
41
  - run: bundle install
41
42
  - run: bundle exec rake
42
- - uses: codecov/codecov-action@v4
43
+ - uses: codecov/codecov-action@v5
43
44
  with:
44
45
  token: ${{ secrets.CODECOV_TOKEN }}
45
46
  file: coverage/.resultset.json
@@ -24,7 +24,7 @@ name: copyrights
24
24
  pull_request:
25
25
  jobs:
26
26
  copyrights:
27
- runs-on: ubuntu-22.04
27
+ runs-on: ubuntu-24.04
28
28
  steps:
29
29
  - uses: actions/checkout@v4
30
- - uses: yegor256/copyrights-action@0.0.5
30
+ - uses: yegor256/copyrights-action@0.0.8
@@ -28,7 +28,7 @@ name: license
28
28
  - master
29
29
  jobs:
30
30
  license:
31
- runs-on: ubuntu-22.04
31
+ runs-on: ubuntu-24.04
32
32
  steps:
33
33
  - uses: actions/checkout@v4
34
34
  - shell: bash
@@ -32,7 +32,7 @@ concurrency:
32
32
  cancel-in-progress: true
33
33
  jobs:
34
34
  markdown-lint:
35
- runs-on: ubuntu-22.04
35
+ runs-on: ubuntu-24.04
36
36
  steps:
37
37
  - uses: actions/checkout@v4
38
38
  - uses: articulate/actions-markdownlint@v1
@@ -28,7 +28,7 @@ on:
28
28
  - master
29
29
  jobs:
30
30
  pdd:
31
- runs-on: ubuntu-22.04
31
+ runs-on: ubuntu-24.04
32
32
  steps:
33
33
  - uses: actions/checkout@v4
34
34
  - uses: volodya-lombrozo/pdd-action@master
@@ -27,23 +27,24 @@ on:
27
27
  branches:
28
28
  - master
29
29
  jobs:
30
- test:
31
- name: test
30
+ rake:
31
+ name: rake
32
32
  strategy:
33
33
  matrix:
34
- os: [ubuntu-20.04]
35
- ruby: [3.2]
34
+ os: [ubuntu-24.04]
35
+ ruby: [3.3]
36
36
  runs-on: ${{ matrix.os }}
37
37
  steps:
38
38
  - uses: actions/checkout@v4
39
39
  - run: |
40
40
  sudo apt-get update
41
- sudo apt-get install -y postgresql-14
42
- sudo ln -s /usr/lib/postgresql/14/bin/initdb /bin/initdb
43
- sudo ln -s /usr/lib/postgresql/14/bin/postgres /bin/postgres
41
+ sudo apt-get install -y libpq-dev postgresql-client postgresql
42
+ sudo ln -s "$(realpath /usr/lib/postgresql/*/bin/initdb)" /bin/initdb
43
+ sudo ln -s "$(realpath /usr/lib/postgresql/*/bin/postgres)" /bin/postgres
44
+ sudo ln -s "$(realpath /usr/lib/postgresql/*/bin/pg_ctl)" /bin/pg_ctl
44
45
  - uses: ruby/setup-ruby@v1
45
46
  with:
46
47
  ruby-version: ${{ matrix.ruby }}
47
48
  bundler-cache: true
48
- - run: bundle install
49
+ - run: bundle update
49
50
  - run: bundle exec rake
@@ -28,7 +28,7 @@ name: xcop
28
28
  - master
29
29
  jobs:
30
30
  xcop:
31
- runs-on: ubuntu-22.04
31
+ runs-on: ubuntu-24.04
32
32
  steps:
33
33
  - uses: actions/checkout@v4
34
34
  - uses: g4s8/xcop-action@master
@@ -28,7 +28,7 @@ name: yamllint
28
28
  - master
29
29
  jobs:
30
30
  yamllint:
31
- runs-on: ubuntu-22.04
31
+ runs-on: ubuntu-24.04
32
32
  steps:
33
33
  - uses: actions/checkout@v4
34
34
  - uses: ibiqlik/action-yamllint@v3
data/.rubocop.yml CHANGED
@@ -33,15 +33,15 @@ Style/ClassAndModuleChildren:
33
33
  Layout/EndOfLine:
34
34
  EnforcedStyle: lf
35
35
  Metrics/BlockLength:
36
- Max: 50
36
+ Max: 100
37
37
  Layout/EmptyLineAfterGuardClause:
38
38
  Enabled: false
39
39
  Metrics/AbcSize:
40
- Max: 50
40
+ Max: 100
41
41
  Metrics/CyclomaticComplexity:
42
42
  Max: 15
43
43
  Metrics/ClassLength:
44
- Max: 150
44
+ Max: 200
45
45
  Metrics/MethodLength:
46
46
  Max: 100
47
47
  Metrics/PerceivedComplexity:
data/.rultor.yml CHANGED
@@ -19,10 +19,16 @@
19
19
  # SOFTWARE.
20
20
  ---
21
21
  docker:
22
- image: yegor256/rultor-image:1.23.1
22
+ image: yegor256/rultor-java
23
23
  assets:
24
24
  rubygems.yml: yegor256/home#assets/rubygems.yml
25
25
  install: |
26
+ sudo hostname docker
27
+ sudo apt-get update
28
+ sudo apt-get install -y libpq-dev postgresql-client postgresql
29
+ sudo ln -s "$(realpath /usr/lib/postgresql/*/bin/initdb)" /bin/initdb
30
+ sudo ln -s "$(realpath /usr/lib/postgresql/*/bin/postgres)" /bin/postgres
31
+ sudo ln -s "$(realpath /usr/lib/postgresql/*/bin/pg_ctl)" /bin/pg_ctl
26
32
  pdd -f /dev/null
27
33
  bundle install --no-color
28
34
  release:
data/.yamllint.yml CHANGED
@@ -20,5 +20,5 @@
20
20
  ---
21
21
  rules:
22
22
  line-length:
23
- max: 80
23
+ max: 200
24
24
  allow-non-breakable-words: true
data/Gemfile CHANGED
@@ -23,11 +23,13 @@
23
23
  source 'https://rubygems.org'
24
24
  gemspec
25
25
 
26
- gem 'minitest', '5.24.1', require: false
27
- gem 'rack', '3.1.7', require: false
26
+ gem 'minitest', '5.25.4', require: false
27
+ gem 'minitest-reporters', '~>1.7', require: false
28
+ gem 'rack', '3.1.8', require: false
28
29
  gem 'rake', '13.2.1', require: false
29
- gem 'rspec-rails', '6.1.3', require: false
30
- gem 'rubocop', '1.65.0', require: false
31
- gem 'rubocop-rspec', '3.0.3', require: false
30
+ gem 'rspec-rails', '7.1.0', require: false
31
+ gem 'rubocop', '1.69.2', require: false
32
+ gem 'rubocop-rspec', '3.3.0', require: false
32
33
  gem 'simplecov', '0.22.0', require: false
34
+ gem 'simplecov-cobertura', '~>2.1'
33
35
  gem 'xcop', '0.7.1', require: false
data/Gemfile.lock CHANGED
@@ -2,180 +2,208 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  pgtk (0.0.0)
5
- backtrace (~> 0.3)
6
- loog (~> 0.2)
5
+ backtrace (> 0)
6
+ loog (> 0)
7
7
  pg (~> 1.1)
8
- random-port (~> 0.3)
8
+ qbash (> 0)
9
+ random-port (> 0)
9
10
 
10
11
  GEM
11
12
  remote: https://rubygems.org/
12
13
  specs:
13
- actionpack (7.1.3.4)
14
- actionview (= 7.1.3.4)
15
- activesupport (= 7.1.3.4)
14
+ actionpack (8.0.1)
15
+ actionview (= 8.0.1)
16
+ activesupport (= 8.0.1)
16
17
  nokogiri (>= 1.8.5)
17
- racc
18
18
  rack (>= 2.2.4)
19
19
  rack-session (>= 1.0.1)
20
20
  rack-test (>= 0.6.3)
21
21
  rails-dom-testing (~> 2.2)
22
22
  rails-html-sanitizer (~> 1.6)
23
- actionview (7.1.3.4)
24
- activesupport (= 7.1.3.4)
23
+ useragent (~> 0.16)
24
+ actionview (8.0.1)
25
+ activesupport (= 8.0.1)
25
26
  builder (~> 3.1)
26
27
  erubi (~> 1.11)
27
28
  rails-dom-testing (~> 2.2)
28
29
  rails-html-sanitizer (~> 1.6)
29
- activesupport (7.1.3.4)
30
+ activesupport (8.0.1)
30
31
  base64
32
+ benchmark (>= 0.3)
31
33
  bigdecimal
32
- concurrent-ruby (~> 1.0, >= 1.0.2)
34
+ concurrent-ruby (~> 1.0, >= 1.3.1)
33
35
  connection_pool (>= 2.2.5)
34
36
  drb
35
37
  i18n (>= 1.6, < 2)
38
+ logger (>= 1.4.2)
36
39
  minitest (>= 5.1)
37
- mutex_m
38
- tzinfo (~> 2.0)
40
+ securerandom (>= 0.3)
41
+ tzinfo (~> 2.0, >= 2.0.5)
42
+ uri (>= 0.13.1)
43
+ ansi (1.5.0)
39
44
  ast (2.4.2)
40
45
  backtrace (0.4.0)
41
46
  base64 (0.2.0)
42
- bigdecimal (3.1.8)
47
+ benchmark (0.4.0)
48
+ bigdecimal (3.1.9)
43
49
  builder (3.3.0)
44
- concurrent-ruby (1.3.3)
50
+ concurrent-ruby (1.3.4)
45
51
  connection_pool (2.4.1)
46
52
  crass (1.0.6)
53
+ date (3.4.1)
47
54
  diff-lcs (1.5.1)
48
55
  differ (0.1.2)
49
- docile (1.4.0)
56
+ docile (1.4.1)
50
57
  drb (2.2.1)
51
- erubi (1.13.0)
52
- i18n (1.14.5)
58
+ elapsed (0.0.1)
59
+ loog (> 0)
60
+ tago (> 0)
61
+ erubi (1.13.1)
62
+ i18n (1.14.6)
53
63
  concurrent-ruby (~> 1.0)
54
- io-console (0.7.2)
55
- irb (1.14.0)
64
+ io-console (0.8.0)
65
+ irb (1.14.3)
56
66
  rdoc (>= 4.0.0)
57
67
  reline (>= 0.4.2)
58
- json (2.7.2)
68
+ json (2.9.1)
59
69
  language_server-protocol (3.17.0.3)
60
- loofah (2.22.0)
70
+ logger (1.6.4)
71
+ loofah (2.23.1)
61
72
  crass (~> 1.0.2)
62
73
  nokogiri (>= 1.12.0)
63
- loog (0.5.2)
64
- minitest (5.24.1)
65
- mutex_m (0.2.0)
66
- nokogiri (1.16.6-arm64-darwin)
74
+ loog (0.6.0)
75
+ minitest (5.25.4)
76
+ minitest-reporters (1.7.1)
77
+ ansi
78
+ builder
79
+ minitest (>= 5.0)
80
+ ruby-progressbar
81
+ nokogiri (1.18.0-arm64-darwin)
67
82
  racc (~> 1.4)
68
- nokogiri (1.16.6-x86_64-linux)
83
+ nokogiri (1.18.0-x86_64-linux-gnu)
69
84
  racc (~> 1.4)
70
- parallel (1.25.1)
71
- parser (3.3.4.0)
85
+ parallel (1.26.3)
86
+ parser (3.3.6.0)
72
87
  ast (~> 2.4.1)
73
88
  racc
74
- pg (1.5.6)
75
- psych (5.1.2)
89
+ pg (1.5.9)
90
+ psych (5.2.2)
91
+ date
76
92
  stringio
77
- racc (1.8.0)
78
- rack (3.1.7)
93
+ qbash (0.2.2)
94
+ backtrace (> 0)
95
+ elapsed (> 0)
96
+ loog (> 0)
97
+ tago (> 0)
98
+ racc (1.8.1)
99
+ rack (3.1.8)
79
100
  rack-session (2.0.0)
80
101
  rack (>= 3.0.0)
81
- rack-test (2.1.0)
102
+ rack-test (2.2.0)
82
103
  rack (>= 1.3)
83
- rackup (2.1.0)
104
+ rackup (2.2.1)
84
105
  rack (>= 3)
85
- webrick (~> 1.8)
86
106
  rails-dom-testing (2.2.0)
87
107
  activesupport (>= 5.0.0)
88
108
  minitest
89
109
  nokogiri (>= 1.6)
90
- rails-html-sanitizer (1.6.0)
110
+ rails-html-sanitizer (1.6.2)
91
111
  loofah (~> 2.21)
92
- nokogiri (~> 1.14)
93
- railties (7.1.3.4)
94
- actionpack (= 7.1.3.4)
95
- activesupport (= 7.1.3.4)
96
- irb
112
+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
113
+ railties (8.0.1)
114
+ actionpack (= 8.0.1)
115
+ activesupport (= 8.0.1)
116
+ irb (~> 1.13)
97
117
  rackup (>= 1.0.0)
98
118
  rake (>= 12.2)
99
119
  thor (~> 1.0, >= 1.2.2)
100
120
  zeitwerk (~> 2.6)
101
121
  rainbow (3.1.1)
102
122
  rake (13.2.1)
103
- random-port (0.7.0)
104
- rdoc (6.7.0)
123
+ random-port (0.7.1)
124
+ rdoc (6.10.0)
105
125
  psych (>= 4.0.0)
106
- regexp_parser (2.9.2)
107
- reline (0.5.9)
126
+ regexp_parser (2.10.0)
127
+ reline (0.6.0)
108
128
  io-console (~> 0.5)
109
- rexml (3.3.1)
110
- strscan
111
- rspec-core (3.13.0)
129
+ rexml (3.4.0)
130
+ rspec-core (3.13.2)
112
131
  rspec-support (~> 3.13.0)
113
- rspec-expectations (3.13.1)
132
+ rspec-expectations (3.13.3)
114
133
  diff-lcs (>= 1.2.0, < 2.0)
115
134
  rspec-support (~> 3.13.0)
116
- rspec-mocks (3.13.1)
135
+ rspec-mocks (3.13.2)
117
136
  diff-lcs (>= 1.2.0, < 2.0)
118
137
  rspec-support (~> 3.13.0)
119
- rspec-rails (6.1.3)
120
- actionpack (>= 6.1)
121
- activesupport (>= 6.1)
122
- railties (>= 6.1)
138
+ rspec-rails (7.1.0)
139
+ actionpack (>= 7.0)
140
+ activesupport (>= 7.0)
141
+ railties (>= 7.0)
123
142
  rspec-core (~> 3.13)
124
143
  rspec-expectations (~> 3.13)
125
144
  rspec-mocks (~> 3.13)
126
145
  rspec-support (~> 3.13)
127
- rspec-support (3.13.1)
128
- rubocop (1.65.0)
146
+ rspec-support (3.13.2)
147
+ rubocop (1.69.2)
129
148
  json (~> 2.3)
130
149
  language_server-protocol (>= 3.17.0)
131
150
  parallel (~> 1.10)
132
151
  parser (>= 3.3.0.2)
133
152
  rainbow (>= 2.2.2, < 4.0)
134
- regexp_parser (>= 2.4, < 3.0)
135
- rexml (>= 3.2.5, < 4.0)
136
- rubocop-ast (>= 1.31.1, < 2.0)
153
+ regexp_parser (>= 2.9.3, < 3.0)
154
+ rubocop-ast (>= 1.36.2, < 2.0)
137
155
  ruby-progressbar (~> 1.7)
138
- unicode-display_width (>= 2.4.0, < 3.0)
139
- rubocop-ast (1.31.3)
156
+ unicode-display_width (>= 2.4.0, < 4.0)
157
+ rubocop-ast (1.37.0)
140
158
  parser (>= 3.3.1.0)
141
- rubocop-rspec (3.0.3)
159
+ rubocop-rspec (3.3.0)
142
160
  rubocop (~> 1.61)
143
161
  ruby-progressbar (1.13.0)
162
+ securerandom (0.4.1)
144
163
  simplecov (0.22.0)
145
164
  docile (~> 1.1)
146
165
  simplecov-html (~> 0.11)
147
166
  simplecov_json_formatter (~> 0.1)
148
- simplecov-html (0.12.3)
167
+ simplecov-cobertura (2.1.0)
168
+ rexml
169
+ simplecov (~> 0.19)
170
+ simplecov-html (0.13.1)
149
171
  simplecov_json_formatter (0.1.4)
150
172
  slop (4.10.1)
151
- stringio (3.1.1)
152
- strscan (3.1.0)
153
- thor (1.3.1)
173
+ stringio (3.1.2)
174
+ tago (0.0.2)
175
+ thor (1.3.2)
154
176
  tzinfo (2.0.6)
155
177
  concurrent-ruby (~> 1.0)
156
- unicode-display_width (2.5.0)
157
- webrick (1.8.1)
178
+ unicode-display_width (3.1.2)
179
+ unicode-emoji (~> 4.0, >= 4.0.4)
180
+ unicode-emoji (4.0.4)
181
+ uri (1.0.2)
182
+ useragent (0.16.11)
158
183
  xcop (0.7.1)
159
184
  differ (~> 0.1.2)
160
185
  nokogiri (~> 1.10)
161
186
  rainbow (~> 3.0)
162
187
  slop (~> 4.4)
163
- zeitwerk (2.6.16)
188
+ zeitwerk (2.7.1)
164
189
 
165
190
  PLATFORMS
166
191
  arm64-darwin-22
192
+ arm64-darwin-24
167
193
  x86_64-linux
168
194
 
169
195
  DEPENDENCIES
170
- minitest (= 5.24.1)
196
+ minitest (= 5.25.4)
197
+ minitest-reporters (~> 1.7)
171
198
  pgtk!
172
- rack (= 3.1.7)
199
+ rack (= 3.1.8)
173
200
  rake (= 13.2.1)
174
- rspec-rails (= 6.1.3)
175
- rubocop (= 1.65.0)
176
- rubocop-rspec (= 3.0.3)
201
+ rspec-rails (= 7.1.0)
202
+ rubocop (= 1.69.2)
203
+ rubocop-rspec (= 3.3.0)
177
204
  simplecov (= 0.22.0)
205
+ simplecov-cobertura (~> 2.1)
178
206
  xcop (= 0.7.1)
179
207
 
180
208
  BUNDLED WITH
181
- 2.5.6
209
+ 2.5.16
@@ -21,6 +21,7 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  require 'English'
24
+ require 'qbash'
24
25
  require 'rake'
25
26
  require 'rake/tasklib'
26
27
  require 'shellwords'
@@ -79,7 +80,7 @@ class Pgtk::LiquibaseTask < Rake::TaskLib
79
80
  password = yml['pgsql']['password']
80
81
  raise "The 'password' is not set in the config (YAML)" if password.nil?
81
82
  Dir.chdir(File.dirname(@master)) do
82
- system(
83
+ qbash(
83
84
  [
84
85
  'mvn verify',
85
86
  '--errors',
@@ -101,9 +102,8 @@ class Pgtk::LiquibaseTask < Rake::TaskLib
101
102
  '--define',
102
103
  "liquibase.password=#{Shellwords.escape(password)}",
103
104
  '2>&1'
104
- ].join(' ')
105
+ ]
105
106
  )
106
107
  end
107
- raise unless $CHILD_STATUS.exitstatus.zero?
108
108
  end
109
109
  end
@@ -22,6 +22,7 @@
22
22
 
23
23
  require 'cgi'
24
24
  require 'English'
25
+ require 'qbash'
25
26
  require 'rake'
26
27
  require 'rake/tasklib'
27
28
  require 'random-port'
@@ -63,55 +64,74 @@ class Pgtk::PgsqlTask < Rake::TaskLib
63
64
  home = File.expand_path(@dir)
64
65
  FileUtils.rm_rf(home) if @fresh_start
65
66
  raise "Directory/file #{home} is present, use fresh_start=true" if File.exist?(home)
66
- out = "2>&1 #{@quiet ? '>/dev/null' : ''}"
67
+ stdout = @quiet ? nil : $stdout
67
68
  Tempfile.open do |pwfile|
68
69
  File.write(pwfile.path, @password)
69
- system(
70
+ qbash(
70
71
  [
71
- 'initdb --auth=trust',
72
- "-D #{Shellwords.escape(home)}",
72
+ 'initdb',
73
+ '--auth=trust',
74
+ '-D',
75
+ Shellwords.escape(home),
73
76
  '--username',
74
77
  Shellwords.escape(@user),
75
78
  '--pwfile',
76
- Shellwords.escape(pwfile.path),
77
- out
78
- ].join(' ')
79
+ Shellwords.escape(pwfile.path)
80
+ ],
81
+ log: stdout
79
82
  )
80
83
  end
81
- raise unless $CHILD_STATUS.exitstatus.zero?
82
84
  port = @port
83
85
  if port.nil?
84
86
  port = RandomPort::Pool::SINGLETON.acquire
85
- puts "Random TCP port #{port} is used"
87
+ puts "Random TCP port #{port} is used for PostgreSQL server" unless @quiet
86
88
  else
87
- puts "Required TCP port #{port} is used"
89
+ puts "Required TCP port #{port} is used for PostgreSQL server" unless @quiet
88
90
  end
89
- pid = Process.spawn('postgres', '-k', home, '-D', home, "--port=#{port}")
91
+ cmd = [
92
+ 'postgres',
93
+ '-k', Shellwords.escape(home),
94
+ '-D', Shellwords.escape(home),
95
+ '-c', Shellwords.escape("log_directory=#{home}"),
96
+ '-c', 'logging_collector=on',
97
+ '-c', 'log_statement=all',
98
+ '-c', 'log_filename=pgsql.log',
99
+ "--port=#{port}"
100
+ ].join(' ')
101
+ pid = Process.spawn(
102
+ cmd,
103
+ $stdout => File.join(home, 'stdout.txt'),
104
+ $stderr => File.join(home, 'stderr.txt')
105
+ )
90
106
  File.write(File.join(@dir, 'pid'), pid)
91
107
  at_exit do
92
- `kill -TERM #{pid}`
93
- puts "PostgreSQL killed in PID #{pid}"
108
+ qbash("kill -TERM #{pid}", log: stdout)
109
+ puts "PostgreSQL killed in PID #{pid}" unless @quiet
94
110
  end
95
- sleep 1
96
111
  attempt = 0
97
112
  begin
98
- system(
99
- [
100
- "createdb -h localhost -p #{port}",
101
- '--username',
102
- Shellwords.escape(@user),
103
- Shellwords.escape(@dbname),
104
- out
105
- ].join(' ')
106
- )
107
- raise unless $CHILD_STATUS.exitstatus.zero?
113
+ TCPSocket.new('localhost', port)
108
114
  rescue StandardError => e
109
- puts e.message
110
- sleep(5)
115
+ sleep(0.1)
111
116
  attempt += 1
112
- raise if attempt > 10
117
+ if attempt > 50
118
+ puts "+ #{cmd}"
119
+ puts "stdout:\n#{File.read(File.join(home, 'stdout.txt'))}"
120
+ puts "stderr:\n#{File.read(File.join(home, 'stderr.txt'))}"
121
+ raise "Failed to start PostgreSQL database server on port #{port}: #{e.message}"
122
+ end
113
123
  retry
114
124
  end
125
+ qbash(
126
+ [
127
+ 'createdb',
128
+ '--host', 'localhost',
129
+ '--port', Shellwords.escape(port),
130
+ '--username', Shellwords.escape(@user),
131
+ Shellwords.escape(@dbname)
132
+ ],
133
+ log: stdout
134
+ )
115
135
  File.write(
116
136
  @yaml,
117
137
  {
@@ -128,6 +148,6 @@ class Pgtk::PgsqlTask < Rake::TaskLib
128
148
  }
129
149
  }.to_yaml
130
150
  )
131
- puts "PostgreSQL has been started in process ##{pid}, port #{port}"
151
+ puts "PostgreSQL has been started in process ##{pid}, port #{port}" unless @quiet
132
152
  end
133
153
  end
data/lib/pgtk/version.rb CHANGED
@@ -28,5 +28,5 @@ require_relative '../pgtk'
28
28
  # License:: MIT
29
29
  module Pgtk
30
30
  # Current version of the library.
31
- VERSION = '0.9.6'
31
+ VERSION = '0.11.0'
32
32
  end
data/pgtk.gemspec CHANGED
@@ -32,9 +32,10 @@ Gem::Specification.new do |s|
32
32
  s.version = Pgtk::VERSION
33
33
  s.license = 'MIT'
34
34
  s.summary = 'PostgreSQL ToolKit for Ruby apps'
35
- s.description = 'This small Ruby gem helps you integrate PostgreSQL \
36
- with your Ruby web app, through Liquibase. It also adds a simple \
37
- connection pool and query processor, to make SQL manipulation simpler.'
35
+ s.description =
36
+ 'This small Ruby gem helps you integrate PostgreSQL ' \
37
+ 'with your Ruby web app, through Liquibase. It also adds a simple ' \
38
+ 'connection pool and query processor, to make SQL manipulation simpler.'
38
39
  s.authors = ['Yegor Bugayenko']
39
40
  s.email = 'yegor256@gmail.com'
40
41
  s.homepage = 'http://github.com/yegor256/pgtk'
@@ -42,9 +43,10 @@ connection pool and query processor, to make SQL manipulation simpler.'
42
43
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
43
44
  s.rdoc_options = ['--charset=UTF-8']
44
45
  s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
45
- s.add_dependency 'backtrace', '~> 0.3'
46
- s.add_dependency 'loog', '~> 0.2'
47
- s.add_dependency 'pg', '~> 1.1'
48
- s.add_dependency 'random-port', '~> 0.3'
46
+ s.add_dependency 'backtrace', '>0'
47
+ s.add_dependency 'loog', '>0'
48
+ s.add_dependency 'pg', '~>1.1'
49
+ s.add_dependency 'qbash', '>0'
50
+ s.add_dependency 'random-port', '>0'
49
51
  s.metadata['rubygems_mfa_required'] = 'true'
50
52
  end
data/resources/pom.xml CHANGED
@@ -29,8 +29,8 @@ SOFTWARE.
29
29
  <version>0.0.0</version>
30
30
  <packaging>pom</packaging>
31
31
  <properties>
32
- <postgresql.version>42.7.3</postgresql.version>
33
- <liquibase.version>4.29.0</liquibase.version>
32
+ <postgresql.version>42.7.4</postgresql.version>
33
+ <liquibase.version>4.30.0</liquibase.version>
34
34
  </properties>
35
35
  <dependencies>
36
36
  <dependency>
data/test/test__helper.rb CHANGED
@@ -25,5 +25,11 @@ $stdout.sync = true
25
25
  require 'simplecov'
26
26
  SimpleCov.start
27
27
 
28
+ require 'simplecov-cobertura'
29
+ SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
30
+
31
+ require 'minitest/reporters'
32
+ Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new]
33
+
28
34
  require 'minitest/autorun'
29
35
  require_relative '../lib/pgtk'
@@ -21,8 +21,8 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  require 'minitest/autorun'
24
- require 'tmpdir'
25
24
  require 'rake'
25
+ require 'tmpdir'
26
26
  require 'yaml'
27
27
  require_relative '../lib/pgtk/pgsql_task'
28
28
 
@@ -44,6 +44,24 @@ class TestPgsqlTask < Minitest::Test
44
44
  Rake::Task['p2'].invoke
45
45
  yaml = YAML.load_file(File.join(dir, 'cfg.yml'))
46
46
  assert(yaml['pgsql']['url'].start_with?('jdbc:postgresql://localhost'))
47
+ assert(File.exist?(File.join(dir, 'pgsql/pgsql.log')))
48
+ end
49
+ end
50
+
51
+ def test_not_quiet
52
+ Dir.mktmpdir 'test' do |dir|
53
+ Pgtk::PgsqlTask.new(:p3) do |t|
54
+ t.dir = File.join(dir, 'pgsql')
55
+ t.user = 'hello'
56
+ t.password = 'the password'
57
+ t.dbname = 'test'
58
+ t.yaml = File.join(dir, 'cfg.yml')
59
+ t.quiet = false
60
+ end
61
+ Rake::Task['p3'].invoke
62
+ yaml = YAML.load_file(File.join(dir, 'cfg.yml'))
63
+ assert(yaml['pgsql']['url'].start_with?('jdbc:postgresql://localhost'))
64
+ assert(File.exist?(File.join(dir, 'pgsql/pgsql.log')))
47
65
  end
48
66
  end
49
67
  end
data/test/test_pool.rb CHANGED
@@ -20,14 +20,15 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
 
23
+ require 'loog'
23
24
  require 'minitest/autorun'
24
- require 'tmpdir'
25
25
  require 'pg'
26
+ require 'qbash'
26
27
  require 'rake'
28
+ require 'tmpdir'
27
29
  require 'yaml'
28
- require 'loog'
29
- require_relative '../lib/pgtk/pgsql_task'
30
30
  require_relative '../lib/pgtk/liquibase_task'
31
+ require_relative '../lib/pgtk/pgsql_task'
31
32
  require_relative '../lib/pgtk/pool'
32
33
 
33
34
  # Pool test.
@@ -127,7 +128,7 @@ class TestPool < Minitest::Test
127
128
  t.password = 'A B C привет ! & | !'
128
129
  t.dbname = 'test'
129
130
  t.yaml = File.join(dir, 'cfg.yml')
130
- t.quiet = true
131
+ t.quiet = false
131
132
  t.fresh_start = true
132
133
  t.port = port
133
134
  end
@@ -139,15 +140,37 @@ class TestPool < Minitest::Test
139
140
  )
140
141
  pool.start(1)
141
142
  pool.exec('SELECT * FROM pg_catalog.pg_tables')
142
- pid = File.read(File.join(dir, 'pgsql/pid')).to_i
143
- `kill -KILL #{pid}`
144
- sleep 1
145
- task.reenable
146
- task.invoke
143
+ qbash("pg_ctl -D #{Shellwords.escape(File.join(dir, 'pgsql'))} stop", log: $stdout)
144
+ cycle = 0
145
+ loop do
146
+ begin
147
+ TCPSocket.new('localhost', port)
148
+ sleep(0.1)
149
+ cycle += 1
150
+ if cycle > 50
151
+ qbash('ps -ax | grep postgres')
152
+ raise "Can't stop running postgres at port #{port}, for some reason"
153
+ end
154
+ rescue StandardError => e
155
+ puts e.message
156
+ break
157
+ end
158
+ end
147
159
  assert_raises(PG::UnableToSend, PG::ConnectionBad) do
148
160
  pool.exec('SELECT * FROM pg_catalog.pg_tables')
149
161
  end
150
- pool.exec('SELECT * FROM pg_catalog.pg_tables')
162
+ task.reenable
163
+ task.invoke
164
+ loop do
165
+ begin
166
+ pool.exec('SELECT * FROM pg_catalog.pg_tables')
167
+ break
168
+ rescue StandardError => e
169
+ puts e.message
170
+ sleep(0.1)
171
+ retry
172
+ end
173
+ end
151
174
  end
152
175
  end
153
176
 
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pgtk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-31 00:00:00.000000000 Z
11
+ date: 2024-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.3'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.3'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: loog
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.2'
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.2'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pg
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,24 +52,37 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: qbash
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: random-port
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - "~>"
73
+ - - ">"
60
74
  - !ruby/object:Gem::Version
61
- version: '0.3'
75
+ version: '0'
62
76
  type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - "~>"
80
+ - - ">"
67
81
  - !ruby/object:Gem::Version
68
- version: '0.3'
69
- description: |-
70
- This small Ruby gem helps you integrate PostgreSQL \
71
- with your Ruby web app, through Liquibase. It also adds a simple \
72
- connection pool and query processor, to make SQL manipulation simpler.
82
+ version: '0'
83
+ description: This small Ruby gem helps you integrate PostgreSQL with your Ruby web
84
+ app, through Liquibase. It also adds a simple connection pool and query processor,
85
+ to make SQL manipulation simpler.
73
86
  email: yegor256@gmail.com
74
87
  executables: []
75
88
  extensions: []
@@ -120,7 +133,7 @@ licenses:
120
133
  - MIT
121
134
  metadata:
122
135
  rubygems_mfa_required: 'true'
123
- post_install_message:
136
+ post_install_message:
124
137
  rdoc_options:
125
138
  - "--charset=UTF-8"
126
139
  require_paths:
@@ -137,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
150
  version: '0'
138
151
  requirements: []
139
152
  rubygems_version: 3.4.10
140
- signing_key:
153
+ signing_key:
141
154
  specification_version: 4
142
155
  summary: PostgreSQL ToolKit for Ruby apps
143
156
  test_files: []