ridgepole 3.0.1 → 3.0.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/.rubocop.yml +2 -0
- data/CHANGELOG.md +4 -0
- data/lib/ridgepole/delta.rb +1 -1
- data/lib/ridgepole/diff.rb +15 -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: 443c4cdeceedc5ddc1e9f3fc7cfbede2d2454cf3bc8fedd1b747ad5f0656db2e
|
4
|
+
data.tar.gz: 4d392f5b8328132651bf8e6b47505a20457756699f749380eefe9060f0ef86a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4fbf8b89d03a6477ef56867faeddd2f9bc6f51f359d04426ef8752bdc5ea58f970d27df156e0c2f874a9bd6676a2520fbf413b9a17457c48d05a1870f518f4c
|
7
|
+
data.tar.gz: 87696482e889b7e753b6c17c58f8085814f9c0f5bce7e4a2cc151efd64aba12fad8068bf0f107c5f63667d2fd760ea422eb4787df16a9573a4c5f0072ea0b2c5
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
|
3
3
|
## 3.0
|
4
4
|
|
5
|
+
### 3.0.2 (2025/06/22)
|
6
|
+
|
7
|
+
- Faster table definition comparisons [pull#549](https://github.com/ridgepole/ridgepole/pull/549)
|
8
|
+
|
5
9
|
### 3.0.1 (2025/01/12)
|
6
10
|
|
7
11
|
- Normalize `check_constraint` [pull#512](https://github.com/ridgepole/ridgepole/pull/512)
|
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
|
@@ -732,5 +733,16 @@ module Ridgepole
|
|
732
733
|
@logger.warn "[WARNING] '#{table_name}' definition is not found" unless definition.key?(table_name)
|
733
734
|
end
|
734
735
|
end
|
736
|
+
|
737
|
+
def hash_deep_equal?(hash1, hash2)
|
738
|
+
return false unless hash1.is_a?(Hash) && hash2.is_a?(Hash)
|
739
|
+
return false if hash1.keys.to_set != hash2.keys.to_set
|
740
|
+
|
741
|
+
hash1.each do |k, v|
|
742
|
+
return false unless hash2.key?(k) && v == hash2[k]
|
743
|
+
end
|
744
|
+
|
745
|
+
true
|
746
|
+
end
|
735
747
|
end
|
736
748
|
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.76.1'
|
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genki Sugawara
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-06-22 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.76.1
|
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.76.1
|
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.1
|
380
380
|
specification_version: 4
|
381
381
|
summary: Ridgepole is a tool to manage DB schema.
|
382
382
|
test_files: []
|