pg_objects 1.2.1 → 1.3.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: 91c7eb71d09850bc60f89da023336a3b23da1032b708edd25d6d7c4c36cda48a
4
- data.tar.gz: 68b0c1d67c6f8954b385bb92d9e56b4e9f26d493aeaa7ce436f853415d5df016
3
+ metadata.gz: acbea88e6ac8e0f1b6fb4c9516cee41598c05e26a7757e78f42bd6a0c716119c
4
+ data.tar.gz: c55ccdec811caaeb12b8bd8ba677af9b960117fc7b3fd2710b085dbb863482fd
5
5
  SHA512:
6
- metadata.gz: 58455882d344d4dff87af1855313bb2cf534408a43d8ead7c98d5eaf726cdd5d7c53576d066d018ea51932281bd7d4c38f716b21fb3a276cc859d074fc83ffd4
7
- data.tar.gz: 74199983303ce4ef51a41c2131c5f70e384e1ebeeb730681ed8458fe8fa24da481e6240ca6efad0a18350ae9428aae06d4f884f314e0dd27cecea03116292ad1
6
+ metadata.gz: 43d7e312be4e15e83a4dc0abfc421a7dda13ccd9becf341e90202a8545e53e62bcbd13a66b34f42e66e321ad905cb30d8fa0f78226f6202cfe43c3ec6a159c92
7
+ data.tar.gz: dfffe1ecfd90371cef2f76c080e61edaf8717fb6f2305bb8b20bb47fd414ac28ec1bebec8f576efe1a162894fa4f867071666e7b1c8af741369af58ec776a0e7
data/.rubocop.yml CHANGED
@@ -156,13 +156,6 @@ RSpec/ExampleWording:
156
156
  not: does not
157
157
  IgnoredWords: []
158
158
 
159
- # Checks the file and folder naming of the spec file.
160
- RSpec/FilePath:
161
- Enabled: true
162
- CustomTransform:
163
- RuboCop: rubocop
164
- RSpec: rspec
165
-
166
159
  RSpec/ImplicitExpect:
167
160
  EnforcedStyle: should
168
161
  Enabled: true
@@ -187,6 +180,12 @@ RSpec/NotToNot:
187
180
  EnforcedStyle: not_to
188
181
  Enabled: true
189
182
 
183
+ RSpec/SpecFilePathFormat:
184
+ Enabled: true
185
+
186
+ RSpec/SpecFilePathSuffix:
187
+ Enabled: true
188
+
190
189
  # Style #######################################################################
191
190
 
192
191
  Style/AccessorGrouping:
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pg_objects (1.2.1)
4
+ pg_objects (1.3.0)
5
5
  activerecord (>= 6.1.7.0, < 8)
6
6
  dry-auto_inject (~> 1)
7
7
  dry-configurable (~> 1)
@@ -58,7 +58,7 @@ GEM
58
58
  thor (~> 1.0)
59
59
  byebug (11.1.3)
60
60
  coderay (1.1.3)
61
- concurrent-ruby (1.3.1)
61
+ concurrent-ruby (1.3.3)
62
62
  connection_pool (2.4.1)
63
63
  crass (1.0.6)
64
64
  debug_inspector (1.2.0)
@@ -67,7 +67,7 @@ GEM
67
67
  dry-auto_inject (1.0.1)
68
68
  dry-core (~> 1.0)
69
69
  zeitwerk (~> 2.6)
70
- dry-configurable (1.1.0)
70
+ dry-configurable (1.2.0)
71
71
  dry-core (~> 1.0, < 2)
72
72
  zeitwerk (~> 2.6)
73
73
  dry-container (0.11.0)
@@ -102,7 +102,7 @@ GEM
102
102
  memery (1.5.0)
103
103
  ruby2_keywords (~> 0.0.2)
104
104
  method_source (1.0.0)
105
- minitest (5.23.1)
105
+ minitest (5.24.1)
106
106
  mutex_m (0.2.0)
107
107
  nokogiri (1.16.5-aarch64-linux)
108
108
  racc (~> 1.4)
@@ -116,8 +116,8 @@ GEM
116
116
  racc (~> 1.4)
117
117
  nokogiri (1.16.5-x86_64-linux)
118
118
  racc (~> 1.4)
119
- parallel (1.24.0)
120
- parser (3.3.2.0)
119
+ parallel (1.25.1)
120
+ parser (3.3.3.0)
121
121
  ast (~> 2.4.1)
122
122
  racc
123
123
  pg_query (5.1.0)
@@ -135,7 +135,7 @@ GEM
135
135
  psych (5.1.2)
136
136
  stringio
137
137
  racc (1.8.0)
138
- rack (3.0.11)
138
+ rack (3.1.6)
139
139
  rack-session (2.0.0)
140
140
  rack (>= 3.0.0)
141
141
  rack-test (2.1.0)
@@ -167,8 +167,8 @@ GEM
167
167
  regexp_parser (2.9.2)
168
168
  reline (0.5.7)
169
169
  io-console (~> 0.5)
170
- rexml (3.2.8)
171
- strscan (>= 3.0.9)
170
+ rexml (3.3.1)
171
+ strscan
172
172
  rspec (3.13.0)
173
173
  rspec-core (~> 3.13.0)
174
174
  rspec-expectations (~> 3.13.0)
@@ -206,24 +206,15 @@ GEM
206
206
  unicode-display_width (>= 2.4.0, < 3.0)
207
207
  rubocop-ast (1.31.3)
208
208
  parser (>= 3.3.1.0)
209
- rubocop-capybara (2.20.0)
210
- rubocop (~> 1.41)
211
- rubocop-factory_bot (2.25.1)
212
- rubocop (~> 1.41)
213
- rubocop-rails (2.25.0)
209
+ rubocop-rails (2.25.1)
214
210
  activesupport (>= 4.2.0)
215
211
  rack (>= 1.1)
216
212
  rubocop (>= 1.33.0, < 2.0)
217
213
  rubocop-ast (>= 1.31.1, < 2.0)
218
214
  rubocop-rake (0.6.0)
219
215
  rubocop (~> 1.0)
220
- rubocop-rspec (2.30.0)
221
- rubocop (~> 1.40)
222
- rubocop-capybara (~> 2.17)
223
- rubocop-factory_bot (~> 2.22)
224
- rubocop-rspec_rails (~> 2.28)
225
- rubocop-rspec_rails (2.28.3)
226
- rubocop (~> 1.40)
216
+ rubocop-rspec (3.0.2)
217
+ rubocop (~> 1.61)
227
218
  ruby-progressbar (1.13.0)
228
219
  ruby2_keywords (0.0.5)
229
220
  stringio (3.1.0)
@@ -237,7 +228,7 @@ GEM
237
228
  diff-lcs (~> 1.3)
238
229
  parser (>= 3.3.0)
239
230
  webrick (1.8.1)
240
- zeitwerk (2.6.14)
231
+ zeitwerk (2.6.16)
241
232
 
242
233
  PLATFORMS
243
234
  aarch64-linux
data/README.md CHANGED
@@ -17,11 +17,21 @@ gem 'pg_objects'
17
17
 
18
18
  And then execute:
19
19
 
20
- $ bundle
20
+ ```shell
21
+ bundle
22
+ ```
21
23
 
22
24
  Or install it yourself as:
23
25
 
24
- $ gem install pg_objects
26
+ ```shell
27
+ gem install pg_objects
28
+ ```
29
+
30
+ Run the installation procedure to initialize directories structure and configuration file:
31
+
32
+ ```shell
33
+ bundle exec rails generate pg_objects:install
34
+ ```
25
35
 
26
36
  ## Usage
27
37
 
@@ -39,19 +49,48 @@ The string after directive should be a name of file with dependency without exte
39
49
 
40
50
  ## Configuration
41
51
 
52
+ You can use either YAML or initializer file to configure the gem. The priority is:
53
+ 1. Ruby initializer
54
+ 1. YAML config
55
+ 1. Default values
56
+
57
+ ### YAML
58
+
59
+ Create `pg_objects.yml` in the application *config* directory:
60
+
61
+ ```yaml
62
+ # pg_objects.yml
63
+
64
+ # Specify the directories where the DB objects files are located
65
+ directories:
66
+ before: path/to/objects/before # executed before the migrations
67
+ after: path/to/objects/after # executed after the migrations
68
+
69
+ # Specify the file extensions of the DB objects files
70
+ extensions:
71
+ - sql
72
+ - txt
73
+
74
+ # Specify whether to suppress output to console
75
+ silent: false
76
+ ```
77
+
78
+ ### Initializer
79
+
42
80
  Create file in *config/initializers* with the following content:
43
81
 
44
82
  ```ruby
45
83
  PgObjects.configure do |config|
46
- config.directories = ['db/objects', 'another/path/to/files'] # default: 'db/objects'
84
+ config.before_path = 'path/to/objects/before' # default: 'db/objects/before'
85
+ config.after_path = 'path/to/objects/after' # default: 'db/objects/after'
47
86
  config.extensions = ['sql', 'txt'] # default: 'sql'
48
- config.silent = false # whether to suppress output to console
87
+ config.silent = true # whether to suppress output to console, default: false
49
88
  end
50
89
  ```
51
90
 
52
91
  Otherwise default values will be used.
53
92
 
54
- Remember, you take care the specified directories are exist.
93
+ Remember to ensure that the specified directories exist.
55
94
 
56
95
  ## Development
57
96
 
@@ -1,6 +1,7 @@
1
1
  ##
2
2
  # Creates default directories structure
3
3
  class PgObjects::InstallGenerator < Rails::Generators::Base
4
+ desc 'Creates directories structure in `db` directory of the Rails application and initializes configuration files'
4
5
  def create_directories
5
6
  empty_directory 'db/objects'
6
7
  empty_directory 'db/objects/before'
@@ -1,3 +1,5 @@
1
+ require_relative 'yaml_configurable'
2
+
1
3
  module PgObjects
2
4
  ##
3
5
  # Use to set custom configuration:
@@ -23,10 +25,13 @@ module PgObjects
23
25
 
24
26
  class Config
25
27
  extend Dry::Configurable
28
+ extend YamlConfigurable
26
29
 
27
30
  setting :before_path, default: 'db/objects/before'
28
31
  setting :after_path, default: 'db/objects/after'
29
32
  setting :extensions, default: ['sql']
30
33
  setting :silent, default: false
34
+
35
+ load_from_yaml 'config/pg_objects.yml'
31
36
  end
32
37
  end
@@ -12,9 +12,10 @@ class PgObjects::DbObject
12
12
  attr_accessor :status
13
13
  attr_reader :full_name, :object_name
14
14
 
15
- def initialize(path, status = :new)
15
+ def initialize(path, status = :new, parser:)
16
16
  @full_name = path
17
17
  @status = status
18
+ @parser = parser
18
19
  end
19
20
 
20
21
  def create
@@ -7,7 +7,7 @@ class PgObjects::DbObjectFactory
7
7
  include Import['parser']
8
8
 
9
9
  def create_instance(path, status: :new)
10
- db_object = PgObjects::DbObject.new(path, status)
10
+ db_object = PgObjects::DbObject.new(path, status, parser:)
11
11
  db_object.create
12
12
  end
13
13
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PgObjects
4
- VERSION = '1.2.1'
4
+ VERSION = '1.3.0'
5
5
  end
@@ -0,0 +1,22 @@
1
+ # A module that provides a method to load configuration settings from a YAML file.
2
+ module YamlConfigurable
3
+ # Loads configuration settings from a YAML file.
4
+ #
5
+ # @param file_path [String] The path to the YAML file.
6
+ def load_from_yaml(file_path)
7
+ return unless File.exist?(file_path)
8
+
9
+ config_hash = YAML.load_file(file_path)
10
+
11
+ set_if_present(config, :before_path, config_hash.dig('directories', 'before'))
12
+ set_if_present(config, :after_path, config_hash.dig('directories', 'after'))
13
+ set_if_present(config, :extensions, config_hash['extensions'])
14
+ set_if_present(config, :silent, config_hash['silent'])
15
+ end
16
+
17
+ private
18
+
19
+ def set_if_present(config, key, value)
20
+ config.public_send("#{key}=", value) if value.present?
21
+ end
22
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_objects
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Kiselyov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-10 00:00:00.000000000 Z
11
+ date: 2024-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -197,6 +197,7 @@ files:
197
197
  - lib/pg_objects/parser.rb
198
198
  - lib/pg_objects/railtie.rb
199
199
  - lib/pg_objects/version.rb
200
+ - lib/pg_objects/yaml_configurable.rb
200
201
  - lib/tasks/pg_objects_tasks.rake
201
202
  - pg_objects.gemspec
202
203
  homepage: https://github.com/marinazzio/pg_objects