ridgepole 0.8.13 → 0.9.0.beta

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +3 -1
  3. data/Appraisals +4 -5
  4. data/README.md +17 -19
  5. data/bin/ridgepole +13 -1
  6. data/gemfiles/{activerecord_5.0.gemfile → activerecord_6.1.gemfile} +1 -2
  7. data/lib/ridgepole/client.rb +8 -3
  8. data/lib/ridgepole/delta.rb +16 -1
  9. data/lib/ridgepole/diff.rb +43 -20
  10. data/lib/ridgepole/execute_expander.rb +10 -1
  11. data/lib/ridgepole/ext/abstract_adapter/disable_table_options.rb +9 -1
  12. data/lib/ridgepole/external_sql_executer.rb +12 -1
  13. data/lib/ridgepole/version.rb +1 -1
  14. data/ridgepole.gemspec +1 -1
  15. data/spec/erb_helper.rb +5 -1
  16. data/spec/mysql/_migrate/migrate_change_table_option_spec.rb +2 -2
  17. data/spec/mysql/cli/ridgepole_spec.rb +35 -1
  18. data/spec/mysql/collation/collation_spec.rb +7 -7
  19. data/spec/mysql/dump/dump_class_method_spec.rb +3 -3
  20. data/spec/mysql/dump/dump_spec.rb +3 -3
  21. data/spec/mysql/dump/dump_unknown_column_type_spec.rb +1 -1
  22. data/spec/mysql/dump/dump_without_table_options_spec.rb +2 -2
  23. data/spec/mysql/fk/migrate_create_fk_spec.rb +7 -7
  24. data/spec/mysql/migrate/migrate_add_column_with_alter_extra_spec.rb +88 -0
  25. data/spec/mysql/migrate/migrate_change_column8_spec.rb +38 -5
  26. data/spec/mysql/migrate/migrate_change_index_spec.rb +7 -1
  27. data/spec/mysql/migrate/migrate_check_relation_column_type_spec.rb +4 -4
  28. data/spec/mysql/migrate/migrate_primary_key_spec.rb +30 -5
  29. data/spec/mysql/migrate/migrate_same_spec.rb +3 -3
  30. data/spec/mysql/text_blob_types/text_blob_types_spec.rb +1 -1
  31. data/spec/postgresql/dump/dump_spec.rb +1 -1
  32. data/spec/postgresql/migrate/migrate_same_spec.rb +1 -1
  33. metadata +10 -15
  34. data/lib/ridgepole/ext/abstract_mysql_adapter/use_alter_index.rb +0 -31
  35. data/spec/mysql/migrate_/migrate_create_index_with_alter_spec.rb +0 -141
  36. data/spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb +0 -141
@@ -4,12 +4,12 @@ describe 'Ridgepole::Client#diff -> migrate' do
4
4
  context 'when database and definition are same' do
5
5
  let(:dsl) do
6
6
  erbh(<<-ERB)
7
- create_table "clubs", <%= i cond('>= 5.1',{id: :integer}) + {unsigned: true, force: :cascade} %> do |t|
7
+ create_table "clubs", <%= i cond({ '>= 5.1, < 6.1' => { id: :integer, unsigned: true }, ">= 6.1" => { id: { type: :integer, unsigned: true } } }, { unsigned: true }) %>, force: :cascade do |t|
8
8
  t.string "name", default: "", null: false
9
9
  t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
10
10
  end
11
11
 
12
- create_table "departments", primary_key: "dept_no", id: :string, limit: 4, force: :cascade do |t|
12
+ create_table "departments", primary_key: "dept_no", <%= i cond(">= 6.1", { id: { type: :string, limit: 4 } }, { id: :string, limit: 4 }) %>, force: :cascade do |t|
13
13
  t.string "dept_name", limit: 40, null: false
14
14
  t.index ["dept_name"], name: "dept_name", unique: true, <%= i cond(5.0, using: :btree) %>
15
15
  end
@@ -32,7 +32,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
32
32
  t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
33
33
  end
34
34
 
35
- create_table "employee_clubs", <%= i cond('>= 5.1',{id: :integer}) + {unsigned: true, force: :cascade} %> do |t|
35
+ create_table "employee_clubs", <%= i cond({ '>= 5.1, < 6.1' => { id: :integer, unsigned: true }, ">= 6.1" => { id: { type: :integer, unsigned: true } } }, { unsigned: true }) %>, force: :cascade do |t|
36
36
  t.integer "emp_no", null: false, unsigned: true
37
37
  t.integer "club_id", null: false, unsigned: true
38
38
  t.index ["emp_no", "club_id"], name: "idx_emp_no_club_id", <%= i cond(5.0, using: :btree) %>
@@ -26,7 +26,7 @@ describe 'Ridgepole::Client (with new text/blob types)' do
26
26
  delta.migrate
27
27
 
28
28
  expect(subject.dump).to match_ruby erbh(<<-ERB)
29
- create_table "foos", id: :integer, unsigned: true, force: :cascade do |t|
29
+ create_table "foos", <%= i cond(">= 6.1", { id: { type: :integer, unsigned: true } }, { id: :integer, unsigned: true }) %>, force: :cascade do |t|
30
30
  t.binary "blob", <%= i cond(5.0, limit: 65535) %>
31
31
  t.<%= cond('< 6.0.0.beta2', :blob, :binary) %> "tiny_blob", <%= i cond('< 6.0.0.beta2', {limit: 255}, {size: :tiny}) %>
32
32
  t.binary "medium_blob", <%= i cond('< 6.0.0.beta2', {limit: 16777215}, {size: :medium}) %>
@@ -12,7 +12,7 @@ describe 'Ridgepole::Client#dump' do
12
12
  t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
13
13
  end
14
14
 
15
- create_table "departments", primary_key: "dept_no", id: :string, limit: 4, force: :cascade do |t|
15
+ create_table "departments", primary_key: "dept_no", <%= i cond(">= 6.1", { id: { type: :string, limit: 4 } }, { id: :string, limit: 4 }) %>, force: :cascade do |t|
16
16
  t.string "dept_name", limit: 40, null: false
17
17
  t.index ["dept_name"], name: "idx_dept_name", unique: true, <%= i cond(5.0, using: :btree) %>
18
18
  end
@@ -9,7 +9,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
9
9
  t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
10
10
  end
11
11
 
12
- create_table "departments", primary_key: "dept_no", id: :string, limit: 4, force: :cascade do |t|
12
+ create_table "departments", primary_key: "dept_no", <%= i cond(">= 6.1", { id: { type: :string, limit: 4 } }, { id: :string, limit: 4 }) %>, force: :cascade do |t|
13
13
  t.string "dept_name", limit: 40, null: false
14
14
  t.index ["dept_name"], name: "idx_dept_name", unique: true, <%= i cond(5.0, using: :btree) %>
15
15
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridgepole
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.13
4
+ version: 0.9.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-28 00:00:00.000000000 Z
11
+ date: 2021-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.0.1
19
+ version: '5.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '6.1'
22
+ version: '6.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 5.0.1
29
+ version: '5.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '6.1'
32
+ version: '6.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: diffy
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -274,10 +274,10 @@ files:
274
274
  - Rakefile
275
275
  - bin/ridgepole
276
276
  - docker-compose.yml
277
- - gemfiles/activerecord_5.0.gemfile
278
277
  - gemfiles/activerecord_5.1.gemfile
279
278
  - gemfiles/activerecord_5.2.gemfile
280
279
  - gemfiles/activerecord_6.0.gemfile
280
+ - gemfiles/activerecord_6.1.gemfile
281
281
  - lib/ridgepole.rb
282
282
  - lib/ridgepole/cli/config.rb
283
283
  - lib/ridgepole/client.rb
@@ -292,7 +292,6 @@ files:
292
292
  - lib/ridgepole/execute_expander.rb
293
293
  - lib/ridgepole/ext/abstract_adapter/disable_table_options.rb
294
294
  - lib/ridgepole/ext/abstract_mysql_adapter/dump_auto_increment.rb
295
- - lib/ridgepole/ext/abstract_mysql_adapter/use_alter_index.rb
296
295
  - lib/ridgepole/ext/pp_sort_hash.rb
297
296
  - lib/ridgepole/ext/schema_dumper.rb
298
297
  - lib/ridgepole/external_sql_executer.rb
@@ -402,8 +401,6 @@ files:
402
401
  - spec/mysql/migrate/migrate_with_pre_post_query_spec.rb
403
402
  - spec/mysql/migrate/migrate_with_tables_spec.rb
404
403
  - spec/mysql/migrate/migrate_with_verbose_log_spec.rb
405
- - spec/mysql/migrate_/migrate_create_index_with_alter_spec.rb
406
- - spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb
407
404
  - spec/mysql/ridgepole_test_database.sql
408
405
  - spec/mysql/ridgepole_test_tables.sql
409
406
  - spec/mysql/ridgepole_test_tables_unknown_column_type.sql
@@ -468,11 +465,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
468
465
  version: 2.2.7
469
466
  required_rubygems_version: !ruby/object:Gem::Requirement
470
467
  requirements:
471
- - - ">="
468
+ - - ">"
472
469
  - !ruby/object:Gem::Version
473
- version: '0'
470
+ version: 1.3.1
474
471
  requirements: []
475
- rubygems_version: 3.1.2
472
+ rubygems_version: 3.0.3
476
473
  signing_key:
477
474
  specification_version: 4
478
475
  summary: Ridgepole is a tool to manage DB schema.
@@ -566,8 +563,6 @@ test_files:
566
563
  - spec/mysql/migrate/migrate_with_pre_post_query_spec.rb
567
564
  - spec/mysql/migrate/migrate_with_tables_spec.rb
568
565
  - spec/mysql/migrate/migrate_with_verbose_log_spec.rb
569
- - spec/mysql/migrate_/migrate_create_index_with_alter_spec.rb
570
- - spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb
571
566
  - spec/mysql/ridgepole_test_database.sql
572
567
  - spec/mysql/ridgepole_test_tables.sql
573
568
  - spec/mysql/ridgepole_test_tables_unknown_column_type.sql
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_record/connection_adapters/abstract_mysql_adapter'
4
-
5
- module Ridgepole
6
- module Ext
7
- module AbstractMysqlAdapter
8
- module UseAlterIndex
9
- def add_index(table_name, column_name, options = {})
10
- index_name, index_type, index_columns, index_options, _index_algorithm, index_using = add_index_options(table_name, column_name, **options)
11
-
12
- # cannot specify index_algorithm
13
- execute "ALTER TABLE #{quote_table_name(table_name)} ADD #{index_type} INDEX #{quote_column_name(index_name)} #{index_using} (#{index_columns})#{index_options}"
14
- end
15
-
16
- def remove_index(table_name, options)
17
- index_name = index_name_for_remove(table_name, options)
18
- execute "ALTER TABLE #{quote_table_name(table_name)} DROP INDEX #{quote_column_name(index_name)}"
19
- end
20
- end
21
- end
22
- end
23
- end
24
-
25
- module ActiveRecord
26
- module ConnectionAdapters
27
- class AbstractMysqlAdapter
28
- prepend Ridgepole::Ext::AbstractMysqlAdapter::UseAlterIndex
29
- end
30
- end
31
- end
@@ -1,141 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe 'Ridgepole::Client#diff -> migrate' do
4
- context 'when create index' do
5
- let(:dsl) do
6
- erbh(<<-ERB)
7
- create_table "clubs", force: :cascade do |t|
8
- t.string "name", default: "", null: false
9
- t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
10
- end
11
-
12
- create_table "departments", primary_key: "dept_no", force: :cascade do |t|
13
- t.string "dept_name", limit: 40, null: false
14
- t.index ["dept_name"], name: "dept_name", unique: true, <%= i cond(5.0, using: :btree) %>
15
- end
16
-
17
- create_table "dept_emp", id: false, force: :cascade do |t|
18
- t.integer "emp_no", null: false
19
- t.string "dept_no", null: false
20
- t.date "from_date", null: false
21
- t.date "to_date", null: false
22
- t.index ["dept_no"], name: "dept_no", <%= i cond(5.0, using: :btree) %>
23
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
24
- end
25
-
26
- create_table "dept_manager", id: false, force: :cascade do |t|
27
- t.string "dept_no", null: false
28
- t.integer "emp_no", null: false
29
- t.date "from_date", null: false
30
- t.date "to_date", null: false
31
- t.index ["dept_no"], name: "dept_no", <%= i cond(5.0, using: :btree) %>
32
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
33
- end
34
-
35
- create_table "employee_clubs", force: :cascade do |t|
36
- t.integer "emp_no", null: false
37
- t.integer "club_id", null: false
38
- t.index ["emp_no", "club_id"], name: "idx_emp_no_club_id", <%= i cond(5.0, using: :btree) %>
39
- end
40
-
41
- create_table "employees", primary_key: "emp_no", force: :cascade do |t|
42
- t.date "birth_date", null: false
43
- t.string "first_name", limit: 14, null: false
44
- t.string "last_name", limit: 16, null: false
45
- t.string "gender", limit: 1, null: false
46
- t.date "hire_date", null: false
47
- end
48
-
49
- create_table "salaries", id: false, force: :cascade do |t|
50
- t.integer "emp_no", null: false
51
- t.integer "salary", null: false
52
- t.date "from_date", null: false
53
- t.date "to_date", null: false
54
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
55
- end
56
-
57
- create_table "titles", id: false, force: :cascade do |t|
58
- t.integer "emp_no", null: false
59
- t.string "title", limit: 50, null: false
60
- t.date "from_date", null: false
61
- t.date "to_date"
62
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
63
- end
64
- ERB
65
- end
66
-
67
- let(:actual_dsl) do
68
- erbh(<<-ERB)
69
- create_table "clubs", force: :cascade do |t|
70
- t.string "name", default: "", null: false
71
- end
72
-
73
- create_table "departments", primary_key: "dept_no", force: :cascade do |t|
74
- t.string "dept_name", limit: 40, null: false
75
- t.index ["dept_name"], name: "dept_name", unique: true, <%= i cond(5.0, using: :btree) %>
76
- end
77
-
78
- create_table "dept_emp", id: false, force: :cascade do |t|
79
- t.integer "emp_no", null: false
80
- t.string "dept_no", null: false
81
- t.date "from_date", null: false
82
- t.date "to_date", null: false
83
- t.index ["dept_no"], name: "dept_no", <%= i cond(5.0, using: :btree) %>
84
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
85
- end
86
-
87
- create_table "dept_manager", id: false, force: :cascade do |t|
88
- t.string "dept_no", null: false
89
- t.integer "emp_no", null: false
90
- t.date "from_date", null: false
91
- t.date "to_date", null: false
92
- t.index ["dept_no"], name: "dept_no", <%= i cond(5.0, using: :btree) %>
93
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
94
- end
95
-
96
- create_table "employee_clubs", force: :cascade do |t|
97
- t.integer "emp_no", null: false
98
- t.integer "club_id", null: false
99
- end
100
-
101
- create_table "employees", primary_key: "emp_no", force: :cascade do |t|
102
- t.date "birth_date", null: false
103
- t.string "first_name", limit: 14, null: false
104
- t.string "last_name", limit: 16, null: false
105
- t.string "gender", limit: 1, null: false
106
- t.date "hire_date", null: false
107
- end
108
-
109
- create_table "salaries", id: false, force: :cascade do |t|
110
- t.integer "emp_no", null: false
111
- t.integer "salary", null: false
112
- t.date "from_date", null: false
113
- t.date "to_date", null: false
114
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
115
- end
116
-
117
- create_table "titles", id: false, force: :cascade do |t|
118
- t.integer "emp_no", null: false
119
- t.string "title", limit: 50, null: false
120
- t.date "from_date", null: false
121
- t.date "to_date"
122
- end
123
- ERB
124
- end
125
-
126
- let(:expected_dsl) { dsl }
127
-
128
- before { subject.diff(actual_dsl).migrate }
129
- subject { client(mysql_use_alter: true) }
130
-
131
- it {
132
- delta = subject.diff(expected_dsl)
133
- expect(delta.differ?).to be_truthy
134
- expect(subject.dump).to match_ruby actual_dsl
135
- _migrated, sql = delta.migrate(noop: true)
136
- expect(sql).to match(/ALTER/)
137
- delta.migrate
138
- expect(subject.dump).to match_ruby expected_dsl
139
- }
140
- end
141
- end
@@ -1,141 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe 'Ridgepole::Client#diff -> migrate' do
4
- context 'when drop index' do
5
- let(:dsl) do
6
- erbh(<<-ERB)
7
- create_table "clubs", force: :cascade do |t|
8
- t.string "name", default: "", null: false
9
- t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
10
- end
11
-
12
- create_table "departments", primary_key: "dept_no", force: :cascade do |t|
13
- t.string "dept_name", limit: 40, null: false
14
- t.index ["dept_name"], name: "dept_name", unique: true, <%= i cond(5.0, using: :btree) %>
15
- end
16
-
17
- create_table "dept_emp", id: false, force: :cascade do |t|
18
- t.integer "emp_no", null: false
19
- t.string "dept_no", null: false
20
- t.date "from_date", null: false
21
- t.date "to_date", null: false
22
- t.index ["dept_no"], name: "dept_no", <%= i cond(5.0, using: :btree) %>
23
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
24
- end
25
-
26
- create_table "dept_manager", id: false, force: :cascade do |t|
27
- t.string "dept_no", null: false
28
- t.integer "emp_no", null: false
29
- t.date "from_date", null: false
30
- t.date "to_date", null: false
31
- t.index ["dept_no"], name: "dept_no", <%= i cond(5.0, using: :btree) %>
32
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
33
- end
34
-
35
- create_table "employee_clubs", force: :cascade do |t|
36
- t.integer "emp_no", null: false
37
- t.integer "club_id", null: false
38
- t.index ["emp_no", "club_id"], name: "idx_emp_no_club_id", <%= i cond(5.0, using: :btree) %>
39
- end
40
-
41
- create_table "employees", primary_key: "emp_no", force: :cascade do |t|
42
- t.date "birth_date", null: false
43
- t.string "first_name", limit: 14, null: false
44
- t.string "last_name", limit: 16, null: false
45
- t.string "gender", limit: 1, null: false
46
- t.date "hire_date", null: false
47
- end
48
-
49
- create_table "salaries", id: false, force: :cascade do |t|
50
- t.integer "emp_no", null: false
51
- t.integer "salary", null: false
52
- t.date "from_date", null: false
53
- t.date "to_date", null: false
54
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
55
- end
56
-
57
- create_table "titles", id: false, force: :cascade do |t|
58
- t.integer "emp_no", null: false
59
- t.string "title", limit: 50, null: false
60
- t.date "from_date", null: false
61
- t.date "to_date"
62
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
63
- end
64
- ERB
65
- end
66
-
67
- let(:actual_dsl) { dsl }
68
-
69
- let(:expected_dsl) do
70
- erbh(<<-ERB)
71
- create_table "clubs", force: :cascade do |t|
72
- t.string "name", default: "", null: false
73
- end
74
-
75
- create_table "departments", primary_key: "dept_no", force: :cascade do |t|
76
- t.string "dept_name", limit: 40, null: false
77
- t.index ["dept_name"], name: "dept_name", unique: true, <%= i cond(5.0, using: :btree) %>
78
- end
79
-
80
- create_table "dept_emp", id: false, force: :cascade do |t|
81
- t.integer "emp_no", null: false
82
- t.string "dept_no", null: false
83
- t.date "from_date", null: false
84
- t.date "to_date", null: false
85
- t.index ["dept_no"], name: "dept_no", <%= i cond(5.0, using: :btree) %>
86
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
87
- end
88
-
89
- create_table "dept_manager", id: false, force: :cascade do |t|
90
- t.string "dept_no", null: false
91
- t.integer "emp_no", null: false
92
- t.date "from_date", null: false
93
- t.date "to_date", null: false
94
- t.index ["dept_no"], name: "dept_no", <%= i cond(5.0, using: :btree) %>
95
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
96
- end
97
-
98
- create_table "employee_clubs", force: :cascade do |t|
99
- t.integer "emp_no", null: false
100
- t.integer "club_id", null: false
101
- end
102
-
103
- create_table "employees", primary_key: "emp_no", force: :cascade do |t|
104
- t.date "birth_date", null: false
105
- t.string "first_name", limit: 14, null: false
106
- t.string "last_name", limit: 16, null: false
107
- t.string "gender", limit: 1, null: false
108
- t.date "hire_date", null: false
109
- end
110
-
111
- create_table "salaries", id: false, force: :cascade do |t|
112
- t.integer "emp_no", null: false
113
- t.integer "salary", null: false
114
- t.date "from_date", null: false
115
- t.date "to_date", null: false
116
- t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
117
- end
118
-
119
- create_table "titles", id: false, force: :cascade do |t|
120
- t.integer "emp_no", null: false
121
- t.string "title", limit: 50, null: false
122
- t.date "from_date", null: false
123
- t.date "to_date"
124
- end
125
- ERB
126
- end
127
-
128
- before { subject.diff(actual_dsl).migrate }
129
- subject { client(mysql_use_alter: true) }
130
-
131
- it {
132
- delta = subject.diff(expected_dsl)
133
- expect(delta.differ?).to be_truthy
134
- expect(subject.dump).to match_ruby actual_dsl
135
- _migrated, sql = delta.migrate(noop: true)
136
- expect(sql).to match(/ALTER/)
137
- delta.migrate
138
- expect(subject.dump).to match_ruby expected_dsl
139
- }
140
- end
141
- end