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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cccf60348e4baf7ac0988edb6e68bc14b0cbb945a167e4a2e6d9ef71d5e35c8a
4
- data.tar.gz: 9ff98ff1c8a823fe988129816db0bcc4dac1c9f1a5c565faa47ef8aa3852507b
3
+ metadata.gz: 443c4cdeceedc5ddc1e9f3fc7cfbede2d2454cf3bc8fedd1b747ad5f0656db2e
4
+ data.tar.gz: 4d392f5b8328132651bf8e6b47505a20457756699f749380eefe9060f0ef86a0
5
5
  SHA512:
6
- metadata.gz: f0dc88f6715d8500bb4edfa106140ea7ca6cd1c207edd51cf65d12a76453ed2eb3d575ee8b73d7d96a0e386c4dec3e34ff985bf81bcc7a8026529946c3b40f74
7
- data.tar.gz: 750a855f189b49cafbc35db15d227b2b2cbf8f2a545075b46a390697f768b3b9c606d9c6403c74c3491fdc76a408944aba2a3a2f7781dd475d096b82ec6f330a
6
+ metadata.gz: d4fbf8b89d03a6477ef56867faeddd2f9bc6f51f359d04426ef8752bdc5ea58f970d27df156e0c2f874a9bd6676a2520fbf413b9a17457c48d05a1870f518f4c
7
+ data.tar.gz: 87696482e889b7e753b6c17c58f8085814f9c0f5bce7e4a2cc151efd64aba12fad8068bf0f107c5f63667d2fd760ea422eb4787df16a9573a4c5f0072ea0b2c5
data/.rubocop.yml CHANGED
@@ -60,3 +60,5 @@ Gemspec/DevelopmentDependencies:
60
60
  Enabled: false
61
61
  Lint/LiteralInInterpolation:
62
62
  Enabled: false
63
+ Naming/PredicateMethod:
64
+ Enabled: false
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)
@@ -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 !(@options[:create_table_with_index]) && !indices.empty?
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)
@@ -30,8 +30,9 @@ module Ridgepole
30
30
  @logger.verbose_info("# #{table_name}")
31
31
 
32
32
  unless @options[:drop_table_only]
33
- unless (attrs_delta = diff_inspect(from_attrs, to_attrs)).empty?
34
- @logger.verbose_info(attrs_delta)
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] && (attrs[:type] == :text || attrs[:type] == :blob || attrs[:type] == :binary)
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
@@ -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] && !(attrs[:definition])
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] && !(attrs[:definition])
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)
@@ -85,7 +85,7 @@ module Ridgepole
85
85
  end
86
86
 
87
87
  def target?(table_name)
88
- !(@options[:tables]) || @options[:tables].include?(table_name)
88
+ !@options[:tables] || @options[:tables].include?(table_name)
89
89
  end
90
90
 
91
91
  def dump_from(conn)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ridgepole
4
- VERSION = '3.0.1'
4
+ VERSION = '3.0.2'
5
5
  end
data/lib/ridgepole.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'logger'
4
4
  require 'open3'
5
- require 'pp' # rubocop:disable Lint/RedundantRequireStatement
5
+ require 'pp'
6
6
  require 'shellwords'
7
7
  require 'singleton'
8
8
  require 'stringio'
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.69.2'
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.1
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-01-12 00:00:00.000000000 Z
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.69.2
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.69.2
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.2
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: []