ridgepole 3.1.0 → 3.1.1
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/CHANGELOG.md +4 -0
- data/README.md +8 -0
- data/bin/ridgepole +1 -0
- data/lib/ridgepole/client.rb +1 -0
- data/lib/ridgepole/ext/schema_dumper/disable_sort_columns.rb +28 -0
- data/lib/ridgepole/ext/schema_dumper/foreign_keys.rb +68 -0
- data/lib/ridgepole/version.rb +1 -1
- data/lib/ridgepole.rb +1 -1
- metadata +3 -2
- data/lib/ridgepole/ext/schema_dumper.rb +0 -66
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 90db85660b9c1b91946bec50b7af82e03d3b686a3270ba4c12f7253dd31ecd40
|
|
4
|
+
data.tar.gz: '09660a78f0e35155b58423d737391b531405aa895edab86bcc8f6f4213461fef'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4e86c295eaafec04bcd2235932312e74d327abb7db2f5be519da092c87a585ade3c9ce7887720426b76ad532ec7e467e4cebd1f570e9a8cb6b0ff3dbcba7f13e
|
|
7
|
+
data.tar.gz: 55dc8d759ec3d788fc07f24ca15c48ca323166bf838f6ebe8ae13383192c5c15577da07d2f431f30c5c8571dfed24fa90dd62aa72cd20afff7abc40af0bca4ba
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -9,7 +9,14 @@ It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.
|
|
|
9
9
|
[](https://github.com/ridgepole/ridgepole/actions/workflows/test.yml)
|
|
10
10
|
[](https://coveralls.io/github/ridgepole/ridgepole?branch=3.0)
|
|
11
11
|
|
|
12
|
+
> [!warning]
|
|
13
|
+
> The order of columns when exporting has changed in Rails 8.1. https://github.com/rails/rails/pull/53281
|
|
14
|
+
>
|
|
15
|
+
> If you do not want to sort the columns, use `--disable-sort-columns` option.
|
|
16
|
+
|
|
12
17
|
> [!note]
|
|
18
|
+
> * ridgepole v3.1.0
|
|
19
|
+
> * Support Rails 8.1 (cf. https://github.com/ridgepole/ridgepole/pull/589)
|
|
13
20
|
> * ridgepole v3.0.0
|
|
14
21
|
> * Support Rails 8.0 (cf. https://github.com/ridgepole/ridgepole/pull/504)
|
|
15
22
|
> * ridgepole v2.0.0
|
|
@@ -92,6 +99,7 @@ Usage: ridgepole [options]
|
|
|
92
99
|
--skip-column-comment-change
|
|
93
100
|
--allow-pk-change
|
|
94
101
|
--create-table-with-index
|
|
102
|
+
--disable-sort-columns
|
|
95
103
|
--mysql-dump-auto-increment
|
|
96
104
|
-r, --require LIBS
|
|
97
105
|
--log-file LOG_FILE
|
data/bin/ridgepole
CHANGED
|
@@ -145,6 +145,7 @@ ARGV.options do |opt|
|
|
|
145
145
|
opt.on('', '--skip-column-comment-change') { options[:skip_column_comment_change] = true }
|
|
146
146
|
opt.on('', '--allow-pk-change') { options[:allow_pk_change] = true }
|
|
147
147
|
opt.on('', '--create-table-with-index') { options[:create_table_with_index] = true }
|
|
148
|
+
opt.on('', '--disable-sort-columns') { options[:disable_sort_columns] = true }
|
|
148
149
|
|
|
149
150
|
opt.on('', '--mysql-dump-auto-increment') do
|
|
150
151
|
options[:mysql_dump_auto_increment] = true
|
data/lib/ridgepole/client.rb
CHANGED
|
@@ -16,6 +16,7 @@ module Ridgepole
|
|
|
16
16
|
@diff = Ridgepole::Diff.new(@options)
|
|
17
17
|
|
|
18
18
|
require 'ridgepole/ext/abstract_mysql_adapter/dump_auto_increment' if @options[:mysql_dump_auto_increment]
|
|
19
|
+
require 'ridgepole/ext/schema_dumper/disable_sort_columns' if @options[:disable_sort_columns]
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
def dump(&block)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'active_record/schema_dumper'
|
|
4
|
+
|
|
5
|
+
module Ridgepole
|
|
6
|
+
module Ext
|
|
7
|
+
module SchemaDumper
|
|
8
|
+
module DisableSortColumns
|
|
9
|
+
def table(table, stream)
|
|
10
|
+
def @connection.columns(*_args)
|
|
11
|
+
cols = super
|
|
12
|
+
def cols.sort_by(*_args, &_block)
|
|
13
|
+
self
|
|
14
|
+
end
|
|
15
|
+
cols
|
|
16
|
+
end
|
|
17
|
+
super
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
module ActiveRecord
|
|
25
|
+
class SchemaDumper
|
|
26
|
+
prepend Ridgepole::Ext::SchemaDumper::DisableSortColumns
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'active_record/schema_dumper'
|
|
4
|
+
|
|
5
|
+
module Ridgepole
|
|
6
|
+
module Ext
|
|
7
|
+
module SchemaDumper
|
|
8
|
+
module ForeignKeys
|
|
9
|
+
def self.prepended(klass)
|
|
10
|
+
klass.extend ClassMethods
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
module ClassMethods
|
|
14
|
+
attr_reader :__with_default_fk_name
|
|
15
|
+
|
|
16
|
+
def with_default_fk_name(value)
|
|
17
|
+
@__with_default_fk_name = value
|
|
18
|
+
yield
|
|
19
|
+
ensure
|
|
20
|
+
remove_instance_variable(:@__with_default_fk_name)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def foreign_keys(table, stream)
|
|
25
|
+
return super unless ActiveRecord::SchemaDumper.__with_default_fk_name
|
|
26
|
+
|
|
27
|
+
if (foreign_keys = @connection.foreign_keys(table)).any?
|
|
28
|
+
add_foreign_key_statements = foreign_keys.map do |foreign_key|
|
|
29
|
+
parts = [
|
|
30
|
+
"add_foreign_key #{remove_prefix_and_suffix(foreign_key.from_table).inspect}",
|
|
31
|
+
remove_prefix_and_suffix(foreign_key.to_table).inspect
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
parts << "column: #{foreign_key.column.inspect}" if foreign_key.column != foreign_key_column_for(foreign_key)
|
|
35
|
+
|
|
36
|
+
parts << "primary_key: #{foreign_key.primary_key.inspect}" if foreign_key.custom_primary_key?
|
|
37
|
+
|
|
38
|
+
parts << "name: #{foreign_key.name.inspect}"
|
|
39
|
+
|
|
40
|
+
parts << "on_update: #{foreign_key.on_update.inspect}" if foreign_key.on_update
|
|
41
|
+
parts << "on_delete: #{foreign_key.on_delete.inspect}" if foreign_key.on_delete
|
|
42
|
+
|
|
43
|
+
" #{parts.join(', ')}"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
stream.puts add_foreign_key_statements.sort.join("\n")
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
def foreign_key_column_for(foreign_key)
|
|
53
|
+
if ActiveRecord.gem_version < Gem::Version.new('7.1.0')
|
|
54
|
+
@connection.foreign_key_column_for(foreign_key.to_table)
|
|
55
|
+
else
|
|
56
|
+
@connection.foreign_key_column_for(foreign_key.to_table, 'id')
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
module ActiveRecord
|
|
65
|
+
class SchemaDumper
|
|
66
|
+
prepend Ridgepole::Ext::SchemaDumper::ForeignKeys
|
|
67
|
+
end
|
|
68
|
+
end
|
data/lib/ridgepole/version.rb
CHANGED
data/lib/ridgepole.rb
CHANGED
|
@@ -17,7 +17,7 @@ module Ridgepole; end
|
|
|
17
17
|
|
|
18
18
|
require 'ridgepole/ext/abstract_adapter/disable_table_options'
|
|
19
19
|
require 'ridgepole/ext/pp_sort_hash'
|
|
20
|
-
require 'ridgepole/ext/schema_dumper'
|
|
20
|
+
require 'ridgepole/ext/schema_dumper/foreign_keys'
|
|
21
21
|
require 'ridgepole/client'
|
|
22
22
|
require 'ridgepole/connection_adapters'
|
|
23
23
|
require 'ridgepole/default_limit'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ridgepole
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.1.
|
|
4
|
+
version: 3.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Genki Sugawara
|
|
@@ -337,7 +337,8 @@ files:
|
|
|
337
337
|
- lib/ridgepole/ext/abstract_adapter/disable_table_options.rb
|
|
338
338
|
- lib/ridgepole/ext/abstract_mysql_adapter/dump_auto_increment.rb
|
|
339
339
|
- lib/ridgepole/ext/pp_sort_hash.rb
|
|
340
|
-
- lib/ridgepole/ext/schema_dumper.rb
|
|
340
|
+
- lib/ridgepole/ext/schema_dumper/disable_sort_columns.rb
|
|
341
|
+
- lib/ridgepole/ext/schema_dumper/foreign_keys.rb
|
|
341
342
|
- lib/ridgepole/external_sql_executer.rb
|
|
342
343
|
- lib/ridgepole/logger.rb
|
|
343
344
|
- lib/ridgepole/migration_ext.rb
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'active_record/schema_dumper'
|
|
4
|
-
|
|
5
|
-
module Ridgepole
|
|
6
|
-
module Ext
|
|
7
|
-
module SchemaDumper
|
|
8
|
-
def self.prepended(klass)
|
|
9
|
-
klass.extend ClassMethods
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
module ClassMethods
|
|
13
|
-
attr_reader :__with_default_fk_name
|
|
14
|
-
|
|
15
|
-
def with_default_fk_name(value)
|
|
16
|
-
@__with_default_fk_name = value
|
|
17
|
-
yield
|
|
18
|
-
ensure
|
|
19
|
-
remove_instance_variable(:@__with_default_fk_name)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def foreign_keys(table, stream)
|
|
24
|
-
return super unless ActiveRecord::SchemaDumper.__with_default_fk_name
|
|
25
|
-
|
|
26
|
-
if (foreign_keys = @connection.foreign_keys(table)).any?
|
|
27
|
-
add_foreign_key_statements = foreign_keys.map do |foreign_key|
|
|
28
|
-
parts = [
|
|
29
|
-
"add_foreign_key #{remove_prefix_and_suffix(foreign_key.from_table).inspect}",
|
|
30
|
-
remove_prefix_and_suffix(foreign_key.to_table).inspect
|
|
31
|
-
]
|
|
32
|
-
|
|
33
|
-
parts << "column: #{foreign_key.column.inspect}" if foreign_key.column != foreign_key_column_for(foreign_key)
|
|
34
|
-
|
|
35
|
-
parts << "primary_key: #{foreign_key.primary_key.inspect}" if foreign_key.custom_primary_key?
|
|
36
|
-
|
|
37
|
-
parts << "name: #{foreign_key.name.inspect}"
|
|
38
|
-
|
|
39
|
-
parts << "on_update: #{foreign_key.on_update.inspect}" if foreign_key.on_update
|
|
40
|
-
parts << "on_delete: #{foreign_key.on_delete.inspect}" if foreign_key.on_delete
|
|
41
|
-
|
|
42
|
-
" #{parts.join(', ')}"
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
stream.puts add_foreign_key_statements.sort.join("\n")
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
private
|
|
50
|
-
|
|
51
|
-
def foreign_key_column_for(foreign_key)
|
|
52
|
-
if ActiveRecord.gem_version < Gem::Version.new('7.1.0')
|
|
53
|
-
@connection.foreign_key_column_for(foreign_key.to_table)
|
|
54
|
-
else
|
|
55
|
-
@connection.foreign_key_column_for(foreign_key.to_table, 'id')
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
module ActiveRecord
|
|
63
|
-
class SchemaDumper
|
|
64
|
-
prepend Ridgepole::Ext::SchemaDumper
|
|
65
|
-
end
|
|
66
|
-
end
|