ridgepole 0.7.3.beta → 0.7.3.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +38 -0
  3. data/Appraisals +2 -2
  4. data/README.md +3 -9
  5. data/Rakefile +7 -1
  6. data/bin/ridgepole +97 -108
  7. data/gemfiles/activerecord_5.2.gemfile +1 -1
  8. data/lib/ridgepole/cli/config.rb +43 -43
  9. data/lib/ridgepole/client.rb +65 -63
  10. data/lib/ridgepole/default_limit.rb +26 -24
  11. data/lib/ridgepole/delta.rb +367 -369
  12. data/lib/ridgepole/diff.rb +366 -377
  13. data/lib/ridgepole/dsl_parser.rb +22 -20
  14. data/lib/ridgepole/dsl_parser/context.rb +95 -93
  15. data/lib/ridgepole/dsl_parser/table_definition.rb +125 -123
  16. data/lib/ridgepole/dumper.rb +73 -71
  17. data/lib/ridgepole/execute_expander.rb +55 -55
  18. data/lib/ridgepole/ext/abstract_mysql_adapter/dump_auto_increment.rb +3 -3
  19. data/lib/ridgepole/ext/abstract_mysql_adapter/use_alter_index.rb +1 -1
  20. data/lib/ridgepole/ext/pp_sort_hash.rb +14 -14
  21. data/lib/ridgepole/ext/schema_dumper.rb +1 -1
  22. data/lib/ridgepole/external_sql_executer.rb +20 -20
  23. data/lib/ridgepole/logger.rb +17 -15
  24. data/lib/ridgepole/migration_ext.rb +6 -8
  25. data/lib/ridgepole/schema_statements_ext.rb +3 -3
  26. data/lib/ridgepole/version.rb +1 -1
  27. data/ridgepole.gemspec +11 -10
  28. data/spec/cli_helper.rb +2 -2
  29. data/spec/erb_helper.rb +6 -2
  30. data/spec/hide_pending_formatter.rb +5 -4
  31. data/spec/mysql/_migrate/migrate_change_table_option_spec.rb +8 -8
  32. data/spec/mysql/bigint_pk/bigint_pk_spec.rb +8 -8
  33. data/spec/mysql/bigint_pk/int_pk_spec.rb +13 -13
  34. data/spec/mysql/cli/config_spec.rb +52 -53
  35. data/spec/mysql/cli/ridgepole_spec.rb +111 -111
  36. data/spec/mysql/collation/collation_spec.rb +39 -39
  37. data/spec/mysql/comment/comment_spec.rb +36 -36
  38. data/spec/mysql/default_lambda/default_lambda_spec.rb +30 -30
  39. data/spec/mysql/diff/diff2_spec.rb +18 -18
  40. data/spec/mysql/diff/diff_spec.rb +11 -11
  41. data/spec/mysql/dump/dump_class_method_spec.rb +2 -2
  42. data/spec/mysql/dump/dump_some_tables_spec.rb +14 -14
  43. data/spec/mysql/dump/dump_spec.rb +2 -2
  44. data/spec/mysql/dump/dump_unknown_column_type_spec.rb +3 -3
  45. data/spec/mysql/dump/dump_without_table_options_spec.rb +8 -8
  46. data/spec/mysql/fk/migrate_change_fk_spec.rb +40 -40
  47. data/spec/mysql/fk/migrate_create_fk_spec.rb +40 -40
  48. data/spec/mysql/fk/migrate_drop_fk_spec.rb +60 -60
  49. data/spec/mysql/migrate/check_orphan_index_spec.rb +6 -6
  50. data/spec/mysql/migrate/migrate_add_column2_spec.rb +43 -43
  51. data/spec/mysql/migrate/migrate_add_column_order_spec.rb +50 -50
  52. data/spec/mysql/migrate/migrate_add_column_spec.rb +11 -11
  53. data/spec/mysql/migrate/migrate_add_column_with_alter_extra_spec.rb +8 -8
  54. data/spec/mysql/migrate/migrate_add_column_with_script_spec.rb +11 -11
  55. data/spec/mysql/migrate/migrate_change_column2_spec.rb +20 -20
  56. data/spec/mysql/migrate/migrate_change_column3_spec.rb +60 -60
  57. data/spec/mysql/migrate/migrate_change_column4_spec.rb +16 -16
  58. data/spec/mysql/migrate/migrate_change_column5_spec.rb +24 -24
  59. data/spec/mysql/migrate/migrate_change_column6_spec.rb +40 -40
  60. data/spec/mysql/migrate/migrate_change_column7_spec.rb +4 -4
  61. data/spec/mysql/migrate/migrate_change_column8_spec.rb +9 -9
  62. data/spec/mysql/migrate/migrate_change_column_default_spec.rb +48 -48
  63. data/spec/mysql/migrate/migrate_change_column_float_spec.rb +16 -16
  64. data/spec/mysql/migrate/migrate_change_column_spec.rb +11 -11
  65. data/spec/mysql/migrate/migrate_change_index2_spec.rb +20 -20
  66. data/spec/mysql/migrate/migrate_change_index3_spec.rb +43 -43
  67. data/spec/mysql/migrate/migrate_change_index4_spec.rb +24 -24
  68. data/spec/mysql/migrate/migrate_change_index5_spec.rb +16 -16
  69. data/spec/mysql/migrate/migrate_change_index6_spec.rb +12 -12
  70. data/spec/mysql/migrate/migrate_change_index7_spec.rb +20 -20
  71. data/spec/mysql/migrate/migrate_change_index8_spec.rb +20 -20
  72. data/spec/mysql/migrate/migrate_change_index_spec.rb +17 -17
  73. data/spec/mysql/migrate/migrate_change_table_comment_spec.rb +10 -10
  74. data/spec/mysql/migrate/migrate_change_table_option_spec.rb +18 -18
  75. data/spec/mysql/migrate/migrate_check_relation_column_type_spec.rb +37 -37
  76. data/spec/mysql/migrate/migrate_create_index2_spec.rb +12 -12
  77. data/spec/mysql/migrate/migrate_create_index_spec.rb +11 -11
  78. data/spec/mysql/migrate/migrate_create_table_spec.rb +8 -8
  79. data/spec/mysql/migrate/migrate_create_table_with_index_spec.rb +6 -6
  80. data/spec/mysql/migrate/migrate_create_table_with_options_spec.rb +12 -12
  81. data/spec/mysql/migrate/migrate_create_table_with_script_spec.rb +11 -11
  82. data/spec/mysql/migrate/migrate_drop_column_and_index2_spec.rb +9 -9
  83. data/spec/mysql/migrate/migrate_drop_column_and_index_spec.rb +12 -12
  84. data/spec/mysql/migrate/migrate_drop_column_and_unique_index_spec.rb +10 -10
  85. data/spec/mysql/migrate/migrate_drop_column_spec.rb +11 -11
  86. data/spec/mysql/migrate/migrate_drop_index_spec.rb +11 -11
  87. data/spec/mysql/migrate/migrate_drop_table_spec.rb +8 -8
  88. data/spec/mysql/migrate/migrate_duplicate_index_spec.rb +6 -6
  89. data/spec/mysql/migrate/migrate_duplicate_table_spec.rb +6 -6
  90. data/spec/mysql/migrate/migrate_empty_spec.rb +4 -4
  91. data/spec/mysql/migrate/migrate_execute_spec.rb +55 -55
  92. data/spec/mysql/migrate/migrate_log_file_spec.rb +9 -9
  93. data/spec/mysql/migrate/migrate_merge_mode_spec.rb +9 -9
  94. data/spec/mysql/migrate/migrate_noop_spec.rb +19 -19
  95. data/spec/mysql/migrate/migrate_primary_key_spec.rb +18 -18
  96. data/spec/mysql/migrate/migrate_rename_column_spec.rb +17 -17
  97. data/spec/mysql/migrate/migrate_rename_table_spec.rb +26 -26
  98. data/spec/mysql/migrate/migrate_same_default_null_spec.rb +16 -16
  99. data/spec/mysql/migrate/migrate_same_spec.rb +4 -4
  100. data/spec/mysql/migrate/migrate_script_error_spec.rb +8 -8
  101. data/spec/mysql/migrate/migrate_skip_column_comment_change_spec.rb +8 -8
  102. data/spec/mysql/migrate/migrate_skip_drop_table_spec.rb +9 -9
  103. data/spec/mysql/migrate/migrate_skip_rename_column_spec.rb +8 -8
  104. data/spec/mysql/migrate/migrate_skip_rename_table_spec.rb +9 -9
  105. data/spec/mysql/migrate/migrate_with_ignore_tables_spec.rb +64 -64
  106. data/spec/mysql/migrate/migrate_with_pre_post_query_spec.rb +12 -12
  107. data/spec/mysql/migrate/migrate_with_tables_spec.rb +29 -29
  108. data/spec/mysql/migrate/migrate_with_verbose_log_spec.rb +18 -18
  109. data/spec/mysql/migrate_/migrate_create_index_with_alter_spec.rb +8 -8
  110. data/spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb +8 -8
  111. data/spec/mysql/text_blob_types/text_blob_types_spec.rb +8 -8
  112. data/spec/mysql/~default_name_fk/migrate_change_fk_spec.rb +12 -12
  113. data/spec/mysql/~default_name_fk/migrate_create_fk_spec.rb +30 -30
  114. data/spec/mysql/~default_name_fk/migrate_drop_fk_spec.rb +22 -22
  115. data/spec/mysql/~dump_auto_increment/migrate_create_table_with_index_spec.rb +7 -7
  116. data/spec/mysql57/json/add_json_column_spec.rb +8 -8
  117. data/spec/mysql57/json/change_json_column_spec.rb +24 -24
  118. data/spec/mysql57/json/drop_json_column_spec.rb +8 -8
  119. data/spec/mysql57/virtual/add_virtual_column_spec.rb +9 -9
  120. data/spec/mysql57/virtual/change_virtual_column_spec.rb +9 -9
  121. data/spec/mysql57/virtual/drop_virtual_column_spec.rb +9 -9
  122. data/spec/postgresql/diff/diff_spec.rb +18 -18
  123. data/spec/postgresql/dump/dump_spec.rb +2 -2
  124. data/spec/postgresql/fk/migrate_change_fk_spec.rb +24 -24
  125. data/spec/postgresql/fk/migrate_create_fk_spec.rb +40 -40
  126. data/spec/postgresql/fk/migrate_drop_fk_spec.rb +44 -44
  127. data/spec/postgresql/migrate/migrate_add_column_spec.rb +21 -21
  128. data/spec/postgresql/migrate/migrate_add_expression_index_spec.rb +2 -2
  129. data/spec/postgresql/migrate/migrate_bigint_spec.rb +12 -12
  130. data/spec/postgresql/migrate/migrate_change_column_default_spec.rb +8 -8
  131. data/spec/postgresql/migrate/migrate_change_column_spec.rb +19 -19
  132. data/spec/postgresql/migrate/migrate_change_index_spec.rb +13 -13
  133. data/spec/postgresql/migrate/migrate_check_relation_column_type_spec.rb +19 -19
  134. data/spec/postgresql/migrate/migrate_create_table_spec.rb +8 -8
  135. data/spec/postgresql/migrate/migrate_create_table_with_default_proc_spec.rb +18 -18
  136. data/spec/postgresql/migrate/migrate_drop_column_spec.rb +11 -11
  137. data/spec/postgresql/migrate/migrate_drop_column_with_index_spec.rb +12 -12
  138. data/spec/postgresql/migrate/migrate_drop_expression_index_spec.rb +8 -8
  139. data/spec/postgresql/migrate/migrate_drop_index_spec.rb +11 -11
  140. data/spec/postgresql/migrate/migrate_drop_table_spec.rb +8 -8
  141. data/spec/postgresql/migrate/migrate_ext_cols_spec.rb +8 -8
  142. data/spec/postgresql/migrate/migrate_primary_key_spec.rb +97 -0
  143. data/spec/postgresql/migrate/migrate_references_spec.rb +24 -24
  144. data/spec/postgresql/migrate/migrate_rename_column_spec.rb +11 -11
  145. data/spec/postgresql/migrate/migrate_rename_table_spec.rb +16 -16
  146. data/spec/postgresql/migrate/migrate_same_spec.rb +4 -4
  147. data/spec/postgresql/~default_name_fk/migrate_change_fk_spec.rb +12 -12
  148. data/spec/postgresql/~default_name_fk/migrate_create_fk_spec.rb +30 -30
  149. data/spec/postgresql/~default_name_fk/migrate_drop_fk_spec.rb +22 -22
  150. data/spec/processing_for_travis.rb +1 -1
  151. data/spec/spec_condition.rb +2 -2
  152. data/spec/spec_const.rb +9 -9
  153. data/spec/spec_helper.rb +21 -23
  154. metadata +54 -37
@@ -2,15 +2,15 @@ describe 'Ridgepole::Client#diff -> migrate' do
2
2
  context 'when create table with default proc' do
3
3
  let(:dsl) { '' }
4
4
 
5
- let(:actual_dsl) {
6
- erbh(<<-EOS)
5
+ let(:actual_dsl) do
6
+ erbh(<<-ERB)
7
7
  create_table "users", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
8
8
  t.string "name"
9
9
  t.datetime "created_at", null: false
10
10
  t.datetime "updated_at", null: false
11
11
  end
12
- EOS
13
- }
12
+ ERB
13
+ end
14
14
 
15
15
  let(:expected_dsl) { dsl }
16
16
 
@@ -29,15 +29,15 @@ describe 'Ridgepole::Client#diff -> migrate' do
29
29
  end
30
30
 
31
31
  context 'when create table with default proc without change' do
32
- let(:dsl) {
33
- erbh(<<-EOS)
32
+ let(:dsl) do
33
+ erbh(<<-ERB)
34
34
  create_table "users", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
35
35
  t.string "name"
36
36
  t.datetime "created_at", null: false
37
37
  t.datetime "updated_at", null: false
38
38
  end
39
- EOS
40
- }
39
+ ERB
40
+ end
41
41
 
42
42
  before { subject.diff(dsl).migrate }
43
43
  subject { client }
@@ -54,25 +54,25 @@ describe 'Ridgepole::Client#diff -> migrate' do
54
54
  end
55
55
 
56
56
  context 'when migrate table with default proc change' do
57
- let(:actual_dsl) {
58
- erbh(<<-EOS)
57
+ let(:actual_dsl) do
58
+ erbh(<<-ERB)
59
59
  create_table "users", id: :uuid, default: -> { "uuid_generate_v1()" }, force: :cascade do |t|
60
60
  t.string "name"
61
61
  t.datetime "created_at", null: false
62
62
  t.datetime "updated_at", null: false
63
63
  end
64
- EOS
65
- }
64
+ ERB
65
+ end
66
66
 
67
- let(:expected_dsl) {
68
- erbh(<<-EOS)
67
+ let(:expected_dsl) do
68
+ erbh(<<-ERB)
69
69
  create_table "users", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
70
70
  t.string "name"
71
71
  t.datetime "created_at", null: false
72
72
  t.datetime "updated_at", null: false
73
73
  end
74
- EOS
75
- }
74
+ ERB
75
+ end
76
76
 
77
77
  before { subject.diff(actual_dsl).migrate }
78
78
  subject { client(allow_pk_change: allow_pk_change) }
@@ -81,11 +81,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
81
81
  let(:allow_pk_change) { false }
82
82
 
83
83
  it {
84
- expect(Ridgepole::Logger.instance).to receive(:warn).with(<<-EOS)
84
+ expect(Ridgepole::Logger.instance).to receive(:warn).with(<<-MSG)
85
85
  [WARNING] Primary key definition of `users` differ but `allow_pk_change` option is false
86
86
  from: {:id=>:uuid, :default=>"uuid_generate_v1()"}
87
87
  to: {:id=>:uuid, :default=>"uuid_generate_v4()"}
88
- EOS
88
+ MSG
89
89
 
90
90
  delta = subject.diff(expected_dsl)
91
91
  expect(delta.differ?).to be_falsey
@@ -1,7 +1,7 @@
1
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
2
  context 'when drop column' do
3
- let(:actual_dsl) {
4
- erbh(<<-EOS)
3
+ let(:actual_dsl) do
4
+ erbh(<<-ERB)
5
5
  create_table "clubs", force: :cascade do |t|
6
6
  t.string "name", limit: 255, default: "", null: false
7
7
  t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
@@ -58,11 +58,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
58
58
  t.date "to_date"
59
59
  t.index ["emp_no"], name: "idx_titles_emp_no", <%= i cond(5.0, using: :btree) %>
60
60
  end
61
- EOS
62
- }
61
+ ERB
62
+ end
63
63
 
64
- let(:expected_dsl) {
65
- erbh(<<-EOS)
64
+ let(:expected_dsl) do
65
+ erbh(<<-ERB)
66
66
  create_table "clubs", force: :cascade do |t|
67
67
  t.string "name", limit: 255, default: "", null: false
68
68
  t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
@@ -113,8 +113,8 @@ describe 'Ridgepole::Client#diff -> migrate' do
113
113
  t.date "to_date"
114
114
  t.index ["emp_no"], name: "idx_titles_emp_no", <%= i cond(5.0, using: :btree) %>
115
115
  end
116
- EOS
117
- }
116
+ ERB
117
+ end
118
118
 
119
119
  before { subject.diff(actual_dsl).migrate }
120
120
  subject { client }
@@ -128,10 +128,10 @@ describe 'Ridgepole::Client#diff -> migrate' do
128
128
  }
129
129
 
130
130
  it {
131
- delta = client(:bulk_change => true).diff(expected_dsl)
131
+ delta = client(bulk_change: true).diff(expected_dsl)
132
132
  expect(delta.differ?).to be_truthy
133
133
  expect(subject.dump).to match_ruby actual_dsl
134
- expect(delta.script).to match_fuzzy <<-EOS
134
+ expect(delta.script).to match_fuzzy <<-RUBY
135
135
  change_table("dept_emp", {:bulk => true}) do |t|
136
136
  t.remove("from_date")
137
137
  t.remove("to_date")
@@ -146,7 +146,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
146
146
  t.remove("last_name")
147
147
  t.remove("hire_date")
148
148
  end
149
- EOS
149
+ RUBY
150
150
  delta.migrate
151
151
  expect(subject.dump).to match_ruby expected_dsl
152
152
  }
@@ -1,7 +1,7 @@
1
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
2
  context 'when drop column and index' do
3
- let(:actual_dsl) {
4
- erbh(<<-EOS)
3
+ let(:actual_dsl) do
4
+ erbh(<<-ERB)
5
5
  create_table "clubs", force: :cascade do |t|
6
6
  t.string "name", limit: 255, default: "", null: false
7
7
  t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
@@ -58,11 +58,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
58
58
  t.date "to_date"
59
59
  t.index ["emp_no"], name: "idx_titles_emp_no", <%= i cond(5.0, using: :btree) %>
60
60
  end
61
- EOS
62
- }
61
+ ERB
62
+ end
63
63
 
64
- let(:expected_dsl) {
65
- erbh(<<-EOS)
64
+ let(:expected_dsl) do
65
+ erbh(<<-ERB)
66
66
  create_table "clubs", force: :cascade do |t|
67
67
  t.string "name", limit: 255, default: "", null: false
68
68
  t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
@@ -108,8 +108,8 @@ describe 'Ridgepole::Client#diff -> migrate' do
108
108
  t.date "to_date"
109
109
  t.index ["emp_no"], name: "idx_titles_emp_no", <%= i cond(5.0, using: :btree) %>
110
110
  end
111
- EOS
112
- }
111
+ ERB
112
+ end
113
113
 
114
114
  before { subject.diff(actual_dsl).migrate }
115
115
  subject { client }
@@ -126,15 +126,15 @@ describe 'Ridgepole::Client#diff -> migrate' do
126
126
  delta = subject.diff(expected_dsl)
127
127
  expect(delta.differ?).to be_truthy
128
128
  expect(subject.dump).to match_ruby actual_dsl
129
- delta.migrate(:noop => true)
129
+ delta.migrate(noop: true)
130
130
  expect(subject.dump).to match_ruby actual_dsl
131
131
  }
132
132
 
133
133
  it {
134
- delta = client(:bulk_change => true).diff(expected_dsl)
134
+ delta = client(bulk_change: true).diff(expected_dsl)
135
135
  expect(delta.differ?).to be_truthy
136
136
  expect(subject.dump).to match_ruby actual_dsl
137
- expect(delta.script).to match_fuzzy erbh(<<-EOS)
137
+ expect(delta.script).to match_fuzzy erbh(<<-ERB)
138
138
  change_table("dept_emp", {:bulk => true}) do |t|
139
139
  t.remove("emp_no")
140
140
  t.remove("from_date")
@@ -156,7 +156,7 @@ change_table("employees", {:bulk => true}) do |t|
156
156
  t.remove("last_name")
157
157
  t.remove("hire_date")
158
158
  end
159
- EOS
159
+ ERB
160
160
  delta.migrate
161
161
  expect(subject.dump).to match_ruby expected_dsl
162
162
  }
@@ -6,20 +6,20 @@ describe 'Ridgepole::Client#diff -> migrate' do
6
6
  end
7
7
 
8
8
  context 'when drop column from table containing an expression index' do
9
- let(:actual_dsl) { erbh(<<-EOS) }
9
+ let(:actual_dsl) { erbh(<<-ERB) }
10
10
  create_table "users", force: :cascade do |t|
11
11
  t.string "name", null: false
12
12
  t.datetime "created_at", null: false
13
13
  t.index "lower((name)::text)", name: "index_users_on_lower_name", <%= i cond(5.0, using: :btree) %>
14
14
  end
15
- EOS
15
+ ERB
16
16
 
17
- let(:expected_dsl) { erbh(<<-EOS) }
17
+ let(:expected_dsl) { erbh(<<-ERB) }
18
18
  create_table "users", force: :cascade do |t|
19
19
  t.string "name", null: false
20
20
  t.index "lower((name)::text)", name: "index_users_on_lower_name", <%= i cond(5.0, using: :btree) %>
21
21
  end
22
- EOS
22
+ ERB
23
23
 
24
24
  specify do
25
25
  delta = subject.diff(expected_dsl)
@@ -32,18 +32,18 @@ describe 'Ridgepole::Client#diff -> migrate' do
32
32
  end
33
33
 
34
34
  context 'when drop expression index' do
35
- let(:actual_dsl) { erbh(<<-EOS) }
35
+ let(:actual_dsl) { erbh(<<-ERB) }
36
36
  create_table "users", force: :cascade do |t|
37
37
  t.string "name", null: false
38
38
  t.index "lower((name)::text)", name: "index_users_on_lower_name", <%= i cond(5.0, using: :btree) %>
39
39
  end
40
- EOS
40
+ ERB
41
41
 
42
- let(:expected_dsl) { <<-EOS }
42
+ let(:expected_dsl) { <<-RUBY }
43
43
  create_table "users", force: :cascade do |t|
44
44
  t.string "name", null: false
45
45
  end
46
- EOS
46
+ RUBY
47
47
 
48
48
  specify do
49
49
  delta = subject.diff(expected_dsl)
@@ -1,7 +1,7 @@
1
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
2
  context 'when drop index' do
3
- let(:dsl) {
4
- erbh(<<-EOS)
3
+ let(:dsl) do
4
+ erbh(<<-ERB)
5
5
  create_table "clubs", force: :cascade do |t|
6
6
  t.string "name", limit: 255, default: "", null: false
7
7
  t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
@@ -58,13 +58,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
58
58
  t.date "to_date"
59
59
  t.index ["emp_no"], name: "idx_titles_emp_no", <%= i cond(5.0, using: :btree) %>
60
60
  end
61
- EOS
62
- }
61
+ ERB
62
+ end
63
63
 
64
64
  let(:actual_dsl) { dsl }
65
65
 
66
- let(:expected_dsl) {
67
- erbh(<<-EOS)
66
+ let(:expected_dsl) do
67
+ erbh(<<-ERB)
68
68
  create_table "clubs", force: :cascade do |t|
69
69
  t.string "name", limit: 255, default: "", null: false
70
70
  end
@@ -118,8 +118,8 @@ describe 'Ridgepole::Client#diff -> migrate' do
118
118
  t.date "from_date", null: false
119
119
  t.date "to_date"
120
120
  end
121
- EOS
122
- }
121
+ ERB
122
+ end
123
123
 
124
124
  before { subject.diff(actual_dsl).migrate }
125
125
  subject { client }
@@ -133,10 +133,10 @@ describe 'Ridgepole::Client#diff -> migrate' do
133
133
  }
134
134
 
135
135
  it {
136
- delta = client(:bulk_change => true).diff(expected_dsl)
136
+ delta = client(bulk_change: true).diff(expected_dsl)
137
137
  expect(delta.differ?).to be_truthy
138
138
  expect(subject.dump).to match_ruby actual_dsl
139
- expect(delta.script).to match_fuzzy <<-EOS
139
+ expect(delta.script).to match_fuzzy <<-RUBY
140
140
  change_table("clubs", {:bulk => true}) do |t|
141
141
  t.remove_index({:name=>"idx_name"})
142
142
  end
@@ -148,7 +148,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
148
148
  change_table("titles", {:bulk => true}) do |t|
149
149
  t.remove_index({:name=>"idx_titles_emp_no"})
150
150
  end
151
- EOS
151
+ RUBY
152
152
  delta.migrate
153
153
  expect(subject.dump).to match_ruby expected_dsl
154
154
  }
@@ -1,7 +1,7 @@
1
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
2
  context 'when drop table' do
3
- let(:dsl) {
4
- erbh(<<-EOS)
3
+ let(:dsl) do
4
+ erbh(<<-ERB)
5
5
  create_table "clubs", force: :cascade do |t|
6
6
  t.string "name", limit: 255, default: "", null: false
7
7
  t.index ["name"], name: "idx_name", unique: true, <%= i cond(5.0, using: :btree) %>
@@ -58,13 +58,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
58
58
  t.date "to_date"
59
59
  t.index ["emp_no"], name: "idx_titles_emp_no", <%= i cond(5.0, using: :btree) %>
60
60
  end
61
- EOS
62
- }
61
+ ERB
62
+ end
63
63
 
64
64
  let(:actual_dsl) { dsl }
65
65
 
66
- let(:expected_dsl) {
67
- erbh(<<-EOS)
66
+ let(:expected_dsl) do
67
+ erbh(<<-ERB)
68
68
  create_table "departments", primary_key: "dept_no", force: :cascade do |t|
69
69
  t.string "dept_name", limit: 40, null: false
70
70
  t.index ["dept_name"], name: "idx_dept_name", unique: true, <%= i cond(5.0, using: :btree) %>
@@ -103,8 +103,8 @@ describe 'Ridgepole::Client#diff -> migrate' do
103
103
  t.date "to_date"
104
104
  t.index ["emp_no"], name: "idx_titles_emp_no", <%= i cond(5.0, using: :btree) %>
105
105
  end
106
- EOS
107
- }
106
+ ERB
107
+ end
108
108
 
109
109
  before { subject.diff(actual_dsl).migrate }
110
110
  subject { client }
@@ -1,7 +1,7 @@
1
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
2
  context 'when add column (ext cols)' do
3
- let(:actual_dsl) {
4
- <<-EOS
3
+ let(:actual_dsl) do
4
+ <<-RUBY
5
5
  create_table "items", force: :cascade do |t|
6
6
  t.string "name"
7
7
  t.integer "price"
@@ -9,11 +9,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
9
9
  t.datetime "created_at", null: false
10
10
  t.datetime "updated_at", null: false
11
11
  end
12
- EOS
13
- }
12
+ RUBY
13
+ end
14
14
 
15
- let(:expected_dsl) {
16
- <<-EOS
15
+ let(:expected_dsl) do
16
+ <<-RUBY
17
17
  create_table "items", force: :cascade do |t|
18
18
  t.string "name"
19
19
  t.integer "price"
@@ -45,8 +45,8 @@ describe 'Ridgepole::Client#diff -> migrate' do
45
45
  t.bit_varying "bit varying"
46
46
  t.money "money", scale: 2
47
47
  end
48
- EOS
49
- }
48
+ RUBY
49
+ end
50
50
 
51
51
  before { subject.diff(actual_dsl).migrate }
52
52
  subject { client }
@@ -0,0 +1,97 @@
1
+ describe 'Ridgepole::Client#diff -> migrate', condition: '>= 5.1.0' do
2
+ let(:actual_dsl) do
3
+ erbh(<<-ERB)
4
+ create_table "employees", id: :serial, force: :cascade do |t|
5
+ end
6
+ ERB
7
+ end
8
+
9
+ before do
10
+ subject.diff('').migrate
11
+ subject.diff(actual_dsl).migrate
12
+ end
13
+ subject { client(allow_pk_change: allow_pk_change) }
14
+
15
+ context 'when allow_pk_change option is false' do
16
+ let(:allow_pk_change) { false }
17
+
18
+ context 'with difference' do
19
+ let(:expected_dsl) do
20
+ erbh(<<-ERB)
21
+ create_table "employees", id: :bigint, force: :cascade do |t|
22
+ end
23
+ ERB
24
+ end
25
+
26
+ it {
27
+ expect(Ridgepole::Logger.instance).to receive(:warn).with(<<-MSG)
28
+ [WARNING] Primary key definition of `employees` differ but `allow_pk_change` option is false
29
+ from: {:id=>:serial}
30
+ to: {:id=>:bigint}
31
+ MSG
32
+
33
+ delta = subject.diff(expected_dsl)
34
+ expect(delta.differ?).to be_falsey
35
+ delta.migrate
36
+ expect(subject.dump).to match_ruby actual_dsl
37
+ }
38
+ end
39
+
40
+ context 'with no difference' do
41
+ let(:actual_dsl) do
42
+ erbh(<<-ERB)
43
+ create_table "employees", id: :serial, force: :cascade do |t|
44
+ end
45
+ ERB
46
+ end
47
+ let(:expected_dsl) { actual_dsl }
48
+
49
+ it {
50
+ expect(Ridgepole::Logger.instance).to_not receive(:warn)
51
+
52
+ delta = subject.diff(expected_dsl)
53
+ expect(delta.differ?).to be_falsey
54
+ }
55
+ end
56
+ end
57
+
58
+ context 'when allow_pk_change option is true' do
59
+ let(:allow_pk_change) { true }
60
+ let(:actual_dsl) do
61
+ erbh(<<-ERB)
62
+ create_table "employees", id: :serial, force: :cascade do |t|
63
+ end
64
+ ERB
65
+ end
66
+ let(:expected_dsl) do
67
+ erbh(<<-ERB)
68
+ create_table "employees", force: :cascade do |t|
69
+ end
70
+ ERB
71
+ end
72
+
73
+ it {
74
+ delta = subject.diff(expected_dsl)
75
+ expect(delta.differ?).to be_truthy
76
+ delta.migrate
77
+ expect(subject.dump).to match_ruby expected_dsl
78
+ }
79
+ end
80
+
81
+ context 'when allow_pk_change option is true and :id is false' do
82
+ let(:allow_pk_change) { true }
83
+ let(:expected_dsl) do
84
+ erbh(<<-ERB)
85
+ create_table "employees", id: false, force: :cascade do |t|
86
+ end
87
+ ERB
88
+ end
89
+
90
+ it {
91
+ delta = subject.diff(expected_dsl)
92
+ expect(delta).to be_differ
93
+ delta.migrate
94
+ expect(subject.dump).to match_ruby expected_dsl
95
+ }
96
+ end
97
+ end