ridgepole 3.0.1 → 3.0.3
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/.rubocop.yml +2 -0
- data/CHANGELOG.md +8 -0
- data/Gemfile +2 -0
- data/lib/ridgepole/delta.rb +1 -1
- data/lib/ridgepole/diff.rb +18 -3
- data/lib/ridgepole/dsl_parser.rb +2 -2
- data/lib/ridgepole/dumper.rb +1 -1
- data/lib/ridgepole/version.rb +1 -1
- data/lib/ridgepole.rb +1 -1
- data/ridgepole.gemspec +2 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d9ad7e2017aa2af02dd9f0fb5c45cdc7fd1a4f3925778e966246589e352d5ea
|
4
|
+
data.tar.gz: b07a08f0001ed86483597794962e0293be0dc609b7c0a5fdc4425c28c10b8b49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5747b6d95e0fb69c35c40508935d5474f1ed3750d09354218cfdda6a35de7b5ecbe2a45307bcdca718f2d15a1af12e9c7d95271837c1ae46e0903def31568e09
|
7
|
+
data.tar.gz: 1ca608fb67b6fcfb6b21fd2c2d4a6fd354a1f7e93333c7e183b5af01a7fbf711693ba4910a43019145d342cb311523c6b54395c5afceb5624b36fddb7a0d361d
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
|
3
3
|
## 3.0
|
4
4
|
|
5
|
+
### 3.0.3 (2025/07/23)
|
6
|
+
|
7
|
+
- Fix for index `algorithm` option [pull#555](https://github.com/ridgepole/ridgepole/pull/555)
|
8
|
+
|
9
|
+
### 3.0.2 (2025/06/22)
|
10
|
+
|
11
|
+
- Faster table definition comparisons [pull#549](https://github.com/ridgepole/ridgepole/pull/549)
|
12
|
+
|
5
13
|
### 3.0.1 (2025/01/12)
|
6
14
|
|
7
15
|
- Normalize `check_constraint` [pull#512](https://github.com/ridgepole/ridgepole/pull/512)
|
data/Gemfile
CHANGED
data/lib/ridgepole/delta.rb
CHANGED
@@ -271,7 +271,7 @@ create_table(#{table_name.inspect}, #{inspect_options_include_default_proc(optio
|
|
271
271
|
end
|
272
272
|
RUBY
|
273
273
|
|
274
|
-
if
|
274
|
+
if !@options[:create_table_with_index] && !indices.empty?
|
275
275
|
append_change_table(table_name, buf) do
|
276
276
|
indices.each do |index_name, index_attrs|
|
277
277
|
append_add_index(table_name, index_name, index_attrs, buf)
|
data/lib/ridgepole/diff.rb
CHANGED
@@ -30,8 +30,9 @@ module Ridgepole
|
|
30
30
|
@logger.verbose_info("# #{table_name}")
|
31
31
|
|
32
32
|
unless @options[:drop_table_only]
|
33
|
-
unless (
|
34
|
-
|
33
|
+
unless hash_deep_equal?(from_attrs, to_attrs)
|
34
|
+
attrs_delta = diff_inspect(from_attrs, to_attrs)
|
35
|
+
@logger.verbose_info(attrs_delta) unless attrs_delta.empty?
|
35
36
|
end
|
36
37
|
|
37
38
|
scan_change(table_name, from_attrs, to_attrs, delta)
|
@@ -414,7 +415,7 @@ module Ridgepole
|
|
414
415
|
end
|
415
416
|
end
|
416
417
|
|
417
|
-
if opts[:size] &&
|
418
|
+
if opts[:size] && %i[text blob binary].include?(attrs[:type])
|
418
419
|
case opts.delete(:size)
|
419
420
|
when :tiny
|
420
421
|
attrs[:type] = :blob if attrs[:type] == :binary
|
@@ -432,6 +433,9 @@ module Ridgepole
|
|
432
433
|
# XXX: MySQL only?
|
433
434
|
opts[:using] = :btree unless opts.key?(:using)
|
434
435
|
opts[:unique] = false unless opts.key?(:unique)
|
436
|
+
|
437
|
+
# 'algorithm: concurrently' is required for index creation but not stored in PostgreSQL DB metadata, so remove 'algorithm' to prevent diff
|
438
|
+
opts.delete(:algorithm)
|
435
439
|
end
|
436
440
|
|
437
441
|
def columns_all_include?(expected_columns, actual_columns, table_options)
|
@@ -732,5 +736,16 @@ module Ridgepole
|
|
732
736
|
@logger.warn "[WARNING] '#{table_name}' definition is not found" unless definition.key?(table_name)
|
733
737
|
end
|
734
738
|
end
|
739
|
+
|
740
|
+
def hash_deep_equal?(hash1, hash2)
|
741
|
+
return false unless hash1.is_a?(Hash) && hash2.is_a?(Hash)
|
742
|
+
return false if hash1.keys.to_set != hash2.keys.to_set
|
743
|
+
|
744
|
+
hash1.each do |k, v|
|
745
|
+
return false unless hash2.key?(k) && v == hash2[k]
|
746
|
+
end
|
747
|
+
|
748
|
+
true
|
749
|
+
end
|
735
750
|
end
|
736
751
|
end
|
data/lib/ridgepole/dsl_parser.rb
CHANGED
@@ -23,11 +23,11 @@ module Ridgepole
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def check_orphan_index(table_name, attrs)
|
26
|
-
raise "Table `#{table_name}` to create the index is not defined: #{attrs[:indices].keys.join(',')}" if attrs[:indices] && !
|
26
|
+
raise "Table `#{table_name}` to create the index is not defined: #{attrs[:indices].keys.join(',')}" if attrs[:indices] && !attrs[:definition]
|
27
27
|
end
|
28
28
|
|
29
29
|
def check_orphan_foreign_key(table_name, attrs)
|
30
|
-
raise "Table `#{table_name}` to create the foreign key is not defined: #{attrs[:foreign_keys].keys.join(',')}" if attrs[:foreign_keys] && !
|
30
|
+
raise "Table `#{table_name}` to create the foreign key is not defined: #{attrs[:foreign_keys].keys.join(',')}" if attrs[:foreign_keys] && !attrs[:definition]
|
31
31
|
end
|
32
32
|
|
33
33
|
def check_foreign_key_without_index(table_name, attrs)
|
data/lib/ridgepole/dumper.rb
CHANGED
data/lib/ridgepole/version.rb
CHANGED
data/lib/ridgepole.rb
CHANGED
data/ridgepole.gemspec
CHANGED
@@ -13,6 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.description = 'Ridgepole is a tool to manage DB schema. It defines DB schema using Rails DSL, and updates DB schema according to DSL.'
|
14
14
|
spec.homepage = 'https://github.com/ridgepole/ridgepole'
|
15
15
|
spec.license = 'MIT'
|
16
|
+
spec.platform = Gem::Platform::RUBY
|
16
17
|
|
17
18
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
18
19
|
`git ls-files -z`.split("\x0").reject do |f|
|
@@ -40,7 +41,7 @@ Gem::Specification.new do |spec|
|
|
40
41
|
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
41
42
|
spec.add_development_dependency 'rspec-match_fuzzy', '>= 0.2.0'
|
42
43
|
spec.add_development_dependency 'rspec-match_ruby', '>= 0.1.3'
|
43
|
-
spec.add_development_dependency 'rubocop', '1.
|
44
|
+
spec.add_development_dependency 'rubocop', '1.78.0'
|
44
45
|
spec.add_development_dependency 'rubocop-rake', '>= 0.5.1'
|
45
46
|
spec.add_development_dependency 'rubocop-rspec', '>= 2.1.0'
|
46
47
|
spec.add_development_dependency 'simplecov'
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ridgepole
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genki Sugawara
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: activerecord
|
@@ -231,14 +231,14 @@ dependencies:
|
|
231
231
|
requirements:
|
232
232
|
- - '='
|
233
233
|
- !ruby/object:Gem::Version
|
234
|
-
version: 1.
|
234
|
+
version: 1.78.0
|
235
235
|
type: :development
|
236
236
|
prerelease: false
|
237
237
|
version_requirements: !ruby/object:Gem::Requirement
|
238
238
|
requirements:
|
239
239
|
- - '='
|
240
240
|
- !ruby/object:Gem::Version
|
241
|
-
version: 1.
|
241
|
+
version: 1.78.0
|
242
242
|
- !ruby/object:Gem::Dependency
|
243
243
|
name: rubocop-rake
|
244
244
|
requirement: !ruby/object:Gem::Requirement
|
@@ -376,7 +376,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
376
376
|
- !ruby/object:Gem::Version
|
377
377
|
version: '0'
|
378
378
|
requirements: []
|
379
|
-
rubygems_version: 3.6.
|
379
|
+
rubygems_version: 3.6.7
|
380
380
|
specification_version: 4
|
381
381
|
summary: Ridgepole is a tool to manage DB schema.
|
382
382
|
test_files: []
|