ridgepole 0.7.5 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea23dd30570f2a2ffdf62e4f8ed6f6ed8c67e304928da70741efd9472a81c9f2
4
- data.tar.gz: 26fd4bac4550c955931f7aacf4574fecba444950104aacd12300ce81df7cac42
3
+ metadata.gz: 2271671a770bf65b2503ba193108875f5892f697e37853097a0eb105024276c4
4
+ data.tar.gz: fb6b7f6eb304dabff71858c5029cfe92ce565c7e28612be4319b53bca669c706
5
5
  SHA512:
6
- metadata.gz: af208c1fc27a0dda85a5ba67bc884726cdca4db42dc67a2a477446af9d1881311935908e207cabf0c9672021e4518fb54e1b8edc177d0cc9da8d05cc5f5394a9
7
- data.tar.gz: 8d350aa7af72210307606aed1092294855df1a4cd03a64dc2be59d898ecf5fc6b2e13e6b0784e4373f89182fa9d4b30690eb7a523ba2d229845193b856739117
6
+ metadata.gz: 1f46efedeb45729023425090ee220c2c18ffd447ef34450d17b7f70b5c374cdaf830a9996034d1104be0f5cb8ac14aaf943edc8e0d1a936c8e9ac62fb28222b8
7
+ data.tar.gz: d4c338561c39f60407db3e82984f021aefe40b728bd168de046e4cd56020dfa95a97ef0a2a9d3949c2fc6cb6d2af03e10dd41b97e291b9c6e1dc397e10db9051
data/.travis.yml CHANGED
@@ -6,13 +6,10 @@ cache:
6
6
  - bundler
7
7
  - apt
8
8
  rvm:
9
- - 2.3.6
9
+ - 2.3.8
10
10
  - 2.4.5
11
11
  - 2.5.3
12
- - 2.6.0-preview2
13
- matrix:
14
- allow_failures:
15
- - rvm: 2.6.0-preview2
12
+ - 2.6.0
16
13
  before_script:
17
14
  - sudo service mysql stop
18
15
  - sudo service postgresql stop
data/README.md CHANGED
@@ -94,6 +94,9 @@ It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.
94
94
  * Fix polymorphic options ([pull#263](https://github.com/winebarrel/ridgepole/pull/263))
95
95
  * Fix `--mysql-use-alter` option ([pull#246](https://github.com/winebarrel/ridgepole/pull/264))
96
96
  * Fix Database URI parsing ([pull#265](https://github.com/winebarrel/ridgepole/pull/265))
97
+ * `>= 0.7.6`
98
+ * Fix database url check ([pull#266](https://github.com/winebarrel/ridgepole/pull/266))
99
+ * Add ignore option ([pull#267](https://github.com/winebarrel/ridgepole/pull/267))
97
100
  </details>
98
101
 
99
102
  ## Installation
@@ -274,6 +277,18 @@ add_index "child", ["parent_id"], name: "par_ind", using: :btree
274
277
  add_foreign_key "child", "parent", name: "child_ibfk_1"
275
278
  ```
276
279
 
280
+ ## Ignore Column/Index/FK
281
+
282
+ ```ruby
283
+ create_table "articles", force: :cascade do |t|
284
+ t.string "title", ignore: true # All changes are ignored
285
+ t.text "desc", renamed_from: "text"
286
+ t.text "author"
287
+ t.datetime "created_at"
288
+ t.datetime "updated_at"
289
+ end
290
+ ```
291
+
277
292
  ## Collation/Charset
278
293
  You can use the column collation by passing `--enable-mysql-awesome` ([activerecord-mysql-awesome](https://github.com/kamipo/activerecord-mysql-awesome) is required)
279
294
 
@@ -397,7 +412,7 @@ Apply `Schemafile`
397
412
  ...
398
413
  ```
399
414
 
400
- ## Running tests
415
+ ## Run tests
401
416
 
402
417
  ```sh
403
418
  docker-compose up -d
@@ -51,12 +51,19 @@ module Ridgepole
51
51
  def parse_database_url(config)
52
52
  uri = URI.parse(config)
53
53
 
54
- raise "Invalid config: #{config.inspect}" if [uri.scheme, uri.user, uri.host, uri.path].any? { |i| i.nil? || i.empty? }
54
+ %w[scheme user host path].each do |key|
55
+ value = uri.send(key)
56
+
57
+ if value.nil? || value.empty?
58
+ key = 'database' if key == 'path'
59
+ raise "Invalid config: '#{key}' is empty: #{config.inspect}"
60
+ end
61
+ end
55
62
 
56
63
  {
57
64
  'adapter' => uri.scheme,
58
65
  'username' => CGI.unescape(uri.user),
59
- 'password' => CGI.unescape(uri.password),
66
+ 'password' => uri.password ? CGI.unescape(uri.password) : nil,
60
67
  'host' => uri.host,
61
68
  'port' => uri.port,
62
69
  'database' => CGI.unescape(uri.path.sub(%r{\A/}, '')),
@@ -227,6 +227,9 @@ create_table(#{table_name.inspect}, #{inspect_options_include_default_proc(optio
227
227
  definition.each do |column_name, column_attrs|
228
228
  column_type = column_attrs.fetch(:type)
229
229
  column_options = column_attrs[:options] || {}
230
+ ignore_column = column_options[:ignore]
231
+ next if ignore_column
232
+
230
233
  normalize_limit(column_type, column_options)
231
234
 
232
235
  buf.puts(<<-RUBY)
@@ -419,6 +422,8 @@ remove_column(#{table_name.inspect}, #{column_name.inspect})
419
422
  def append_add_index(table_name, _index_name, attrs, buf, force_bulk_change = false)
420
423
  column_name = attrs.fetch(:column_name)
421
424
  options = attrs[:options] || {}
425
+ ignore_index = options[:ignore]
426
+ return if ignore_index
422
427
 
423
428
  if force_bulk_change || @options[:bulk_change]
424
429
  buf.puts(<<-RUBY)
@@ -210,7 +210,11 @@ module Ridgepole
210
210
  end
211
211
 
212
212
  to.each do |column_name, to_attrs|
213
- if (from_attrs = from.delete(column_name))
213
+ ignore_column = to_attrs.fetch(:options, {}).delete(:ignore)
214
+ from_attrs = from.delete(column_name)
215
+ next if ignore_column
216
+
217
+ if from_attrs
214
218
  to_attrs = build_attrs_if_changed(to_attrs, from_attrs, table_name)
215
219
  if to_attrs
216
220
  definition_delta[:change] ||= {}
@@ -296,6 +300,8 @@ module Ridgepole
296
300
  indices_delta = {}
297
301
 
298
302
  to.each do |index_name, to_attrs|
303
+ ignore_index = to_attrs.fetch(:options, {}).delete(:ignore)
304
+
299
305
  if index_name.is_a?(Array)
300
306
  from_index_name, from_attrs = from.find { |_name, attrs| attrs[:column_name] == index_name }
301
307
 
@@ -307,6 +313,8 @@ module Ridgepole
307
313
  from_attrs = from.delete(index_name)
308
314
  end
309
315
 
316
+ next if ignore_index
317
+
310
318
  if from_attrs
311
319
  normalize_index_options!(from_attrs[:options])
312
320
  normalize_index_options!(to_attrs[:options])
@@ -391,7 +399,9 @@ module Ridgepole
391
399
  foreign_keys_delta = {}
392
400
 
393
401
  to.each do |foreign_key_name_or_tables, to_attrs|
402
+ ignore_fk = to_attrs.fetch(:options, {}).delete(:ignore)
394
403
  from_attrs = from.delete(foreign_key_name_or_tables)
404
+ next if ignore_fk
395
405
 
396
406
  if from_attrs
397
407
  if from_attrs != to_attrs
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.7.5'.freeze
2
+ VERSION = '0.7.6'.freeze
3
3
  end
@@ -24,7 +24,7 @@ namespace :docker do
24
24
  end
25
25
 
26
26
  namespace :omnibus do
27
- task build: ['build:ubuntu', 'build:centos']
27
+ task build: ['docker:image:build', 'build:ubuntu', 'build:centos']
28
28
 
29
29
  namespace :build do
30
30
  task :ubuntu do
@@ -104,7 +104,7 @@ describe Ridgepole::Config do
104
104
  specify do
105
105
  expect do
106
106
  subject
107
- end.to raise_error 'Invalid config: "database.yml"'
107
+ end.to raise_error %(Invalid config: 'scheme' is empty: "database.yml")
108
108
  end
109
109
  end
110
110
 
@@ -0,0 +1,68 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when create fk with ignore:true' do
3
+ let(:actual_dsl) do
4
+ erbh(<<-ERB)
5
+ create_table "child", force: :cascade do |t|
6
+ t.integer "parent_id"
7
+ t.index ["parent_id"], name: "par_id", <%= i cond(5.0, using: :btree) %>
8
+ end
9
+
10
+ create_table "parent", <%= i cond('>= 5.1',id: :integer) %>, force: :cascade do |t|
11
+ end
12
+ ERB
13
+ end
14
+
15
+ let(:expected_dsl) do
16
+ erbh(actual_dsl + <<-ERB)
17
+ add_foreign_key "child", "parent", name: "child_ibfk_1", ignore: true
18
+ ERB
19
+ end
20
+
21
+ before { subject.diff(actual_dsl).migrate }
22
+ subject { client }
23
+
24
+ it {
25
+ delta = subject.diff(expected_dsl)
26
+ expect(delta.differ?).to be_falsey
27
+ }
28
+ end
29
+
30
+ context 'when change fk with ignore:true' do
31
+ let(:actual_dsl) do
32
+ erbh(<<-ERB)
33
+ create_table "parent", <%= i cond('>= 5.1',id: :integer) %>, force: :cascade do |t|
34
+ end
35
+
36
+ create_table "child", force: :cascade do |t|
37
+ t.integer "parent_id"
38
+ t.index ["parent_id"], name: "par_id", <%= i cond(5.0, using: :btree) %>
39
+ end
40
+
41
+ add_foreign_key "child", "parent", name: "child_ibfk_1", on_delete: :cascade
42
+ ERB
43
+ end
44
+
45
+ let(:expected_dsl) do
46
+ erbh(<<-ERB)
47
+ create_table "child", force: :cascade do |t|
48
+ t.integer "parent_id"
49
+ t.index ["parent_id"], name: "par_id", <%= i cond(5.0, using: :btree) %>
50
+ end
51
+
52
+ create_table "parent", <%= i cond('>= 5.1',id: :integer) %>, force: :cascade do |t|
53
+ end
54
+
55
+ add_foreign_key "child", "parent", name: "child_ibfk_1", ignore: true
56
+ ERB
57
+ end
58
+
59
+ before { subject.diff(actual_dsl).migrate }
60
+
61
+ subject { client }
62
+
63
+ it {
64
+ delta = subject.diff(expected_dsl)
65
+ expect(delta.differ?).to be_falsey
66
+ }
67
+ end
68
+ end
@@ -0,0 +1,43 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when create table with ignore:true' do
3
+ let(:dsl) do
4
+ erbh(<<-ERB)
5
+ create_table "departments", primary_key: "dept_no", force: :cascade do |t|
6
+ t.string "dept_name", limit: 40, null: false
7
+ t.index ["dept_name"], name: "dept_name", unique: true, <%= i cond(5.0, using: :btree) %>
8
+ end
9
+
10
+ create_table "dept_emp", primary_key: ["emp_no", "dept_no"], force: :cascade do |t|
11
+ t.integer "emp_no", null: false
12
+ t.string "dept_no", null: false
13
+ t.date "from_date", null: false, ignore: true
14
+ t.date "to_date", null: false
15
+ t.index ["dept_no"], name: "dept_no", <%= i cond(5.0, using: :btree) %>, ignore: true
16
+ t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
17
+ end
18
+ ERB
19
+ end
20
+
21
+ let(:actual_dsl) do
22
+ erbh(<<-ERB)
23
+ create_table "departments", primary_key: "dept_no", force: :cascade do |t|
24
+ t.string "dept_name", limit: 40, null: false
25
+ t.index ["dept_name"], name: "dept_name", unique: true, <%= i cond(5.0, using: :btree) %>
26
+ end
27
+ ERB
28
+ end
29
+
30
+ let(:expected_dsl) { dsl.each_line.reject { |l| l =~ /ignore/ }.join }
31
+
32
+ before { subject.diff(actual_dsl).migrate }
33
+ subject { client }
34
+
35
+ it {
36
+ delta = subject.diff(expected_dsl)
37
+ expect(delta.differ?).to be_truthy
38
+ expect(subject.dump).to match_ruby actual_dsl
39
+ delta.migrate
40
+ expect(subject.dump).to match_ruby expected_dsl
41
+ }
42
+ end
43
+ end
@@ -0,0 +1,96 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when add column with ignore:true' do
3
+ let(:actual_dsl) do
4
+ erbh(<<-ERB)
5
+ create_table "employee_clubs", force: :cascade do |t|
6
+ t.integer "emp_no", null: false
7
+ t.integer "club_id", null: false
8
+ t.index ["emp_no", "club_id"], name: "idx_emp_no_club_id", <%= i cond(5.0, using: :btree) %>
9
+ end
10
+
11
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
12
+ t.date "birth_date", null: false
13
+ t.string "first_name", limit: 14, null: false
14
+ t.string "last_name", limit: 16, null: false
15
+ t.string "gender", limit: 1, null: false
16
+ t.date "hire_date", null: false
17
+ end
18
+ ERB
19
+ end
20
+
21
+ let(:expected_dsl) do
22
+ erbh(<<-ERB)
23
+ create_table "employee_clubs", force: :cascade do |t|
24
+ t.integer "emp_no", null: false
25
+ t.integer "club_id", null: false
26
+ t.string "any_col", null: false, ignore: true
27
+ t.index ["emp_no", "club_id"], name: "idx_emp_no_club_id", <%= i cond(5.0, using: :btree) %>
28
+ end
29
+
30
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
31
+ t.date "birth_date", null: false
32
+ t.string "first_name", limit: 14, null: false
33
+ t.string "last_name", limit: 16, null: false
34
+ t.string "gender", limit: 1, null: false
35
+ t.date "hire_date", null: false
36
+ t.integer "age", null: false, ignore: true
37
+ t.date "updated_at", ignore: true
38
+ end
39
+ ERB
40
+ end
41
+
42
+ before { subject.diff(actual_dsl).migrate }
43
+ subject { client }
44
+
45
+ it {
46
+ delta = subject.diff(expected_dsl)
47
+ expect(delta.differ?).to be_falsey
48
+ }
49
+ end
50
+
51
+ context 'when change column with ignore:true' do
52
+ let(:actual_dsl) do
53
+ erbh(<<-ERB)
54
+ create_table "employee_clubs", force: :cascade do |t|
55
+ t.integer "emp_no", null: false
56
+ t.integer "club_id", null: false
57
+ t.index ["emp_no", "club_id"], name: "idx_emp_no_club_id", <%= i cond(5.0, using: :btree) %>
58
+ end
59
+
60
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
61
+ t.date "birth_date", null: false
62
+ t.string "first_name", limit: 14, null: false
63
+ t.string "last_name", limit: 16, null: false
64
+ t.string "gender", limit: 1, null: false
65
+ t.date "hire_date", null: false
66
+ end
67
+ ERB
68
+ end
69
+
70
+ let(:expected_dsl) do
71
+ erbh(<<-ERB)
72
+ create_table "employee_clubs", force: :cascade do |t|
73
+ t.integer "emp_no", null: false
74
+ t.integer "club_id", ignore: true
75
+ t.index ["emp_no", "club_id"], name: "idx_emp_no_club_id", <%= i cond(5.0, using: :btree) %>
76
+ end
77
+
78
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
79
+ t.date "birth_date", null: false
80
+ t.string "first_name", limit: 14, null: false
81
+ t.string "last_name", limit: 20, default: "XXX", null: false, ignore: true
82
+ t.string "gender", limit: 2, null: false, ignore: true
83
+ t.date "hire_date", null: false
84
+ end
85
+ ERB
86
+ end
87
+
88
+ before { subject.diff(actual_dsl).migrate }
89
+ subject { client }
90
+
91
+ it {
92
+ delta = subject.diff(expected_dsl)
93
+ expect(delta.differ?).to be_falsey
94
+ }
95
+ end
96
+ end
@@ -0,0 +1,90 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when create index with ignore:true' do
3
+ let(:dsl) do
4
+ erbh(<<-ERB)
5
+ create_table "clubs", force: :cascade do |t|
6
+ t.string "name", default: "", null: false
7
+ t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>, ignore: true
8
+ end
9
+
10
+ create_table "employee_clubs", force: :cascade do |t|
11
+ t.integer "emp_no", null: false
12
+ t.integer "club_id", null: false
13
+ t.index ["emp_no", "club_id"], name: "idx_emp_no_club_id", <%= i cond(5.0, using: :btree) %>, ignore: true
14
+ end
15
+
16
+ create_table "titles", id: false, force: :cascade do |t|
17
+ t.integer "emp_no", null: false
18
+ t.string "title", limit: 50, null: false
19
+ t.date "from_date", null: false
20
+ t.date "to_date"
21
+ t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>, ignore: true
22
+ end
23
+ ERB
24
+ end
25
+
26
+ let(:actual_dsl) do
27
+ erbh(<<-ERB)
28
+ create_table "clubs", force: :cascade do |t|
29
+ t.string "name", default: "", null: false
30
+ end
31
+
32
+ create_table "employee_clubs", force: :cascade do |t|
33
+ t.integer "emp_no", null: false
34
+ t.integer "club_id", null: false
35
+ end
36
+
37
+ create_table "titles", id: false, force: :cascade do |t|
38
+ t.integer "emp_no", null: false
39
+ t.string "title", limit: 50, null: false
40
+ t.date "from_date", null: false
41
+ t.date "to_date"
42
+ end
43
+ ERB
44
+ end
45
+
46
+ let(:expected_dsl) { dsl }
47
+
48
+ before { subject.diff(actual_dsl).migrate }
49
+ subject { client }
50
+
51
+ it {
52
+ delta = subject.diff(expected_dsl)
53
+ expect(delta.differ?).to be_falsey
54
+ }
55
+ end
56
+
57
+ context 'when change index with ignore:true' do
58
+ let(:actual_dsl) do
59
+ erbh(<<-ERB)
60
+ create_table "salaries", id: false, force: :cascade do |t|
61
+ t.integer "emp_no", null: false
62
+ t.integer "salary", null: false
63
+ t.date "from_date", null: false
64
+ t.date "to_date", null: false
65
+ t.index ["emp_no"], name: "emp_no", <%= i cond(5.0, using: :btree) %>
66
+ end
67
+ ERB
68
+ end
69
+
70
+ let(:expected_dsl) do
71
+ erbh(<<-ERB)
72
+ create_table "salaries", id: false, force: :cascade do |t|
73
+ t.integer "emp_no", null: false
74
+ t.integer "salary", null: false
75
+ t.date "from_date", null: false
76
+ t.date "to_date", null: false
77
+ t.index ["from_date"], name: "emp_no", <%= i cond(5.0, using: :btree) %>, ignore: true
78
+ end
79
+ ERB
80
+ end
81
+
82
+ before { subject.diff(actual_dsl).migrate }
83
+ subject { client }
84
+
85
+ it {
86
+ delta = subject.diff(expected_dsl)
87
+ expect(delta.differ?).to be_falsey
88
+ }
89
+ end
90
+ 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.7.5
4
+ version: 0.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-05 00:00:00.000000000 Z
11
+ date: 2019-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -306,6 +306,7 @@ files:
306
306
  - spec/mysql/fk/migrate_change_fk_spec.rb
307
307
  - spec/mysql/fk/migrate_create_fk_spec.rb
308
308
  - spec/mysql/fk/migrate_drop_fk_spec.rb
309
+ - spec/mysql/fk/migrate_ignore_fk_spec.rb
309
310
  - spec/mysql/migrate/check_orphan_index_spec.rb
310
311
  - spec/mysql/migrate/migrate_add_column2_spec.rb
311
312
  - spec/mysql/migrate/migrate_add_column_order_spec.rb
@@ -336,6 +337,7 @@ files:
336
337
  - spec/mysql/migrate/migrate_create_index2_spec.rb
337
338
  - spec/mysql/migrate/migrate_create_index_spec.rb
338
339
  - spec/mysql/migrate/migrate_create_table_spec.rb
340
+ - spec/mysql/migrate/migrate_create_table_with_ignore_spec.rb
339
341
  - spec/mysql/migrate/migrate_create_table_with_index_spec.rb
340
342
  - spec/mysql/migrate/migrate_create_table_with_options_spec.rb
341
343
  - spec/mysql/migrate/migrate_create_table_with_script_spec.rb
@@ -349,6 +351,8 @@ files:
349
351
  - spec/mysql/migrate/migrate_duplicate_table_spec.rb
350
352
  - spec/mysql/migrate/migrate_empty_spec.rb
351
353
  - spec/mysql/migrate/migrate_execute_spec.rb
354
+ - spec/mysql/migrate/migrate_ignore_column_spec.rb
355
+ - spec/mysql/migrate/migrate_ignore_index_spec.rb
352
356
  - spec/mysql/migrate/migrate_log_file_spec.rb
353
357
  - spec/mysql/migrate/migrate_merge_mode_spec.rb
354
358
  - spec/mysql/migrate/migrate_noop_spec.rb
@@ -464,6 +468,7 @@ test_files:
464
468
  - spec/mysql/fk/migrate_change_fk_spec.rb
465
469
  - spec/mysql/fk/migrate_create_fk_spec.rb
466
470
  - spec/mysql/fk/migrate_drop_fk_spec.rb
471
+ - spec/mysql/fk/migrate_ignore_fk_spec.rb
467
472
  - spec/mysql/migrate/check_orphan_index_spec.rb
468
473
  - spec/mysql/migrate/migrate_add_column2_spec.rb
469
474
  - spec/mysql/migrate/migrate_add_column_order_spec.rb
@@ -494,6 +499,7 @@ test_files:
494
499
  - spec/mysql/migrate/migrate_create_index2_spec.rb
495
500
  - spec/mysql/migrate/migrate_create_index_spec.rb
496
501
  - spec/mysql/migrate/migrate_create_table_spec.rb
502
+ - spec/mysql/migrate/migrate_create_table_with_ignore_spec.rb
497
503
  - spec/mysql/migrate/migrate_create_table_with_index_spec.rb
498
504
  - spec/mysql/migrate/migrate_create_table_with_options_spec.rb
499
505
  - spec/mysql/migrate/migrate_create_table_with_script_spec.rb
@@ -507,6 +513,8 @@ test_files:
507
513
  - spec/mysql/migrate/migrate_duplicate_table_spec.rb
508
514
  - spec/mysql/migrate/migrate_empty_spec.rb
509
515
  - spec/mysql/migrate/migrate_execute_spec.rb
516
+ - spec/mysql/migrate/migrate_ignore_column_spec.rb
517
+ - spec/mysql/migrate/migrate_ignore_index_spec.rb
510
518
  - spec/mysql/migrate/migrate_log_file_spec.rb
511
519
  - spec/mysql/migrate/migrate_merge_mode_spec.rb
512
520
  - spec/mysql/migrate/migrate_noop_spec.rb