ridgepole 0.6.6 → 0.7.0.alpha

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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -7
  3. data/Appraisals +4 -5
  4. data/README.md +3 -0
  5. data/gemfiles/activerecord_5.0.gemfile +1 -1
  6. data/gemfiles/{activerecord_4.2.gemfile → activerecord_5.1.gemfile} +1 -2
  7. data/lib/ridgepole.rb +1 -0
  8. data/lib/ridgepole/client.rb +1 -3
  9. data/lib/ridgepole/connection_adapters.rb +11 -0
  10. data/lib/ridgepole/delta.rb +5 -0
  11. data/lib/ridgepole/diff.rb +5 -10
  12. data/lib/ridgepole/dsl_parser/context.rb +1 -4
  13. data/lib/ridgepole/dumper.rb +0 -11
  14. data/lib/ridgepole/schema_statements_ext.rb +1 -1
  15. data/lib/ridgepole/version.rb +1 -1
  16. data/ridgepole.gemspec +2 -2
  17. data/ridgepole.iml +9 -0
  18. data/spec/erb_helper.rb +25 -15
  19. data/spec/mysql/bigint_pk/bigint_pk_spec.rb +15 -15
  20. data/spec/mysql/bigint_pk/int_pk_spec.rb +45 -0
  21. data/spec/mysql/cli/config_spec.rb +7 -7
  22. data/spec/mysql/cli/ridgepole_spec.rb +20 -20
  23. data/spec/mysql/collation/collation_spec.rb +40 -41
  24. data/spec/mysql/comment/comment_spec.rb +19 -19
  25. data/spec/mysql/default_lambda/default_lambda_spec.rb +3 -3
  26. data/spec/mysql/diff/diff2_spec.rb +8 -5
  27. data/spec/mysql/diff/diff_spec.rb +8 -5
  28. data/spec/mysql/dump/dump_class_method_spec.rb +18 -68
  29. data/spec/mysql/dump/dump_some_tables_spec.rb +10 -30
  30. data/spec/mysql/dump/dump_spec.rb +21 -54
  31. data/spec/mysql/dump/dump_without_table_options_spec.rb +8 -35
  32. data/spec/mysql/fk/migrate_change_fk_spec.rb +8 -8
  33. data/spec/mysql/fk/migrate_create_fk_spec.rb +21 -35
  34. data/spec/mysql/fk/migrate_drop_fk_spec.rb +16 -30
  35. data/spec/mysql/migrate/migrate_add_column2_spec.rb +3 -5
  36. data/spec/mysql/migrate/migrate_add_column_order_spec.rb +21 -39
  37. data/spec/mysql/migrate/migrate_change_column5_spec.rb +8 -8
  38. data/spec/mysql/migrate/migrate_change_column6_spec.rb +18 -18
  39. data/spec/mysql/migrate/migrate_change_column_default_spec.rb +23 -16
  40. data/spec/mysql/migrate/migrate_change_column_spec.rb +34 -34
  41. data/spec/mysql/migrate/migrate_change_index3_spec.rb +19 -9
  42. data/spec/mysql/migrate/migrate_create_index_spec.rb +32 -32
  43. data/spec/mysql/migrate/migrate_create_table_spec.rb +0 -9
  44. data/spec/mysql/migrate/migrate_drop_index_spec.rb +32 -32
  45. data/spec/mysql/migrate/migrate_drop_table_spec.rb +30 -30
  46. data/spec/mysql/migrate/migrate_execute_spec.rb +68 -81
  47. data/spec/mysql/migrate/migrate_merge_mode_spec.rb +1 -3
  48. data/spec/mysql/migrate/migrate_noop_spec.rb +34 -61
  49. data/spec/mysql/migrate/migrate_rename_table_spec.rb +3 -24
  50. data/spec/mysql/migrate/migrate_same_spec.rb +12 -45
  51. data/spec/mysql/migrate/migrate_with_ignore_tables_spec.rb +6 -6
  52. data/spec/mysql/migrate/migrate_with_tables_spec.rb +2 -2
  53. data/spec/mysql/migrate/migrate_with_verbose_log_spec.rb +1 -6
  54. data/spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb +10 -10
  55. data/spec/mysql/text_blob_types/text_blob_types_spec.rb +3 -3
  56. data/spec/mysql/~default_name_fk/migrate_change_fk_spec.rb +6 -6
  57. data/spec/mysql/~default_name_fk/migrate_create_fk_spec.rb +10 -10
  58. data/spec/mysql/~default_name_fk/migrate_drop_fk_spec.rb +6 -6
  59. data/spec/postgresql/diff/diff_spec.rb +6 -0
  60. data/spec/postgresql/dump/dump_spec.rb +9 -33
  61. data/spec/postgresql/migrate/migrate_add_expression_index_spec.rb +3 -3
  62. data/spec/postgresql/migrate/migrate_bigint_spec.rb +10 -26
  63. data/spec/postgresql/migrate/migrate_create_table_spec.rb +0 -9
  64. data/spec/postgresql/migrate/migrate_create_table_with_default_proc_spec.rb +1 -1
  65. data/spec/postgresql/migrate/migrate_drop_column_with_index_spec.rb +2 -2
  66. data/spec/postgresql/migrate/migrate_drop_expression_index_spec.rb +7 -7
  67. data/spec/postgresql/migrate/migrate_drop_index_spec.rb +4 -4
  68. data/spec/postgresql/migrate/migrate_drop_table_spec.rb +3 -3
  69. data/spec/postgresql/migrate/migrate_ext_cols_spec.rb +0 -3
  70. data/spec/postgresql/migrate/migrate_same_spec.rb +9 -33
  71. data/spec/spec_condition.rb +15 -6
  72. data/spec/spec_helper.rb +2 -15
  73. metadata +14 -10
@@ -171,6 +171,9 @@ describe 'Ridgepole::Client.diff' do
171
171
  end
172
172
  EOS
173
173
 
174
+ # XXX:
175
+ before { client }
176
+
174
177
  it "doesn't warn anything" do
175
178
  expect(Ridgepole::Logger.instance).to_not receive(:warn)
176
179
  delta = subject.diff(actual_dsl, expected_dsl)
@@ -195,6 +198,9 @@ describe 'Ridgepole::Client.diff' do
195
198
  end
196
199
  EOS
197
200
 
201
+ # XXX:
202
+ before { client }
203
+
198
204
  it 'warns position' do
199
205
  expect(Ridgepole::Logger.instance).to receive(:warn).with(/PostgreSQL doesn't support adding a new column .* users\.name/)
200
206
  expect(Ridgepole::Logger.instance).to receive(:warn).with(/PostgreSQL doesn't support adding a new column .* users\.age/)
@@ -1,47 +1,23 @@
1
1
  describe 'Ridgepole::Client#dump' do
2
- let(:template_variables) {
3
- opts = {
4
- departments_ext: {id: :string, limit: 4},
5
- employees_ext: {id: :integer},
6
- dept_manager_pk: {primary_key: ["emp_no", "dept_no"]},
7
- dept_emp_pk: {primary_key: ["emp_no", "dept_no"]},
8
- salaries_pk: {primary_key: ["emp_no", "from_date"]},
9
- titles_pk: {primary_key: ["emp_no", "title", "from_date"]},
10
- }
11
-
12
- if condition(:activerecord_4)
13
- opts.merge!(
14
- departments_ext: {},
15
- employees_ext: {},
16
- dept_manager_pk: {id: false},
17
- dept_emp_pk: {id: false},
18
- salaries_pk: {id: false},
19
- titles_pk: {id: false}
20
- )
21
- end
22
-
23
- opts
24
- }
25
-
26
2
  context 'when there is a tables' do
27
3
  before { restore_tables }
28
4
  subject { client }
29
5
 
30
6
  it {
31
- expect(subject.dump).to match_fuzzy erbh(<<-EOS, template_variables)
32
- create_table "clubs", force: :cascade do |t|
7
+ expect(subject.dump).to match_fuzzy erbh(<<-EOS)
8
+ create_table "clubs", <%= i cond(5.1, id: :serial) + {force: :cascade} %> do |t|
33
9
  t.string "name", limit: 255, default: "", null: false
34
10
  end
35
11
 
36
12
  <%= add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree %>
37
13
 
38
- create_table "departments", primary_key: "dept_no", <%= i @departments_ext %>, force: :cascade do |t|
14
+ create_table "departments", primary_key: "dept_no", id: :string, limit: 4, force: :cascade do |t|
39
15
  t.string "dept_name", limit: 40, null: false
40
16
  end
41
17
 
42
18
  <%= add_index "departments", ["dept_name"], name: "idx_dept_name", unique: true, using: :btree %>
43
19
 
44
- create_table "dept_emp", <%= i @dept_emp_pk %>, force: :cascade do |t|
20
+ create_table "dept_emp", primary_key: ["emp_no", "dept_no"], force: :cascade do |t|
45
21
  t.integer "emp_no", null: false
46
22
  t.string "dept_no", limit: 4, null: false
47
23
  t.date "from_date", null: false
@@ -51,7 +27,7 @@ describe 'Ridgepole::Client#dump' do
51
27
  <%= add_index "dept_emp", ["dept_no"], name: "idx_dept_emp_dept_no", using: :btree %>
52
28
  <%= add_index "dept_emp", ["emp_no"], name: "idx_dept_emp_emp_no", using: :btree %>
53
29
 
54
- create_table "dept_manager", <%= i @dept_manager_pk %>, force: :cascade do |t|
30
+ create_table "dept_manager", primary_key: ["emp_no", "dept_no"], force: :cascade do |t|
55
31
  t.string "dept_no", limit: 4, null: false
56
32
  t.integer "emp_no", null: false
57
33
  t.date "from_date", null: false
@@ -61,21 +37,21 @@ describe 'Ridgepole::Client#dump' do
61
37
  <%= add_index "dept_manager", ["dept_no"], name: "idx_dept_manager_dept_no", using: :btree %>
62
38
  <%= add_index "dept_manager", ["emp_no"], name: "idx_dept_manager_emp_no", using: :btree %>
63
39
 
64
- create_table "employee_clubs", force: :cascade do |t|
40
+ create_table "employee_clubs", <%= i cond(5.1, id: :serial) + {force: :cascade} %> do |t|
65
41
  t.integer "emp_no", null: false
66
42
  t.integer "club_id", null: false
67
43
  end
68
44
 
69
45
  <%= add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_employee_clubs_emp_no_club_id", using: :btree %>
70
46
 
71
- create_table "employees", primary_key: "emp_no", <%= i @employees_ext %>, force: :cascade do |t|
47
+ create_table "employees", primary_key: "emp_no", id: :integer, <%= i cond(5.1, default: nil) %>, force: :cascade do |t|
72
48
  t.date "birth_date", null: false
73
49
  t.string "first_name", limit: 14, null: false
74
50
  t.string "last_name", limit: 16, null: false
75
51
  t.date "hire_date", null: false
76
52
  end
77
53
 
78
- create_table "salaries", <%= i @salaries_pk %>, force: :cascade do |t|
54
+ create_table "salaries", primary_key: ["emp_no", "from_date"], force: :cascade do |t|
79
55
  t.integer "emp_no", null: false
80
56
  t.integer "salary", null: false
81
57
  t.date "from_date", null: false
@@ -84,7 +60,7 @@ describe 'Ridgepole::Client#dump' do
84
60
 
85
61
  <%= add_index "salaries", ["emp_no"], name: "idx_salaries_emp_no", using: :btree %>
86
62
 
87
- create_table "titles", <%= i @titles_pk %>, force: :cascade do |t|
63
+ create_table "titles", primary_key: ["emp_no", "title", "from_date"], force: :cascade do |t|
88
64
  t.integer "emp_no", null: false
89
65
  t.string "title", limit: 50, null: false
90
66
  t.date "from_date", null: false
@@ -1,14 +1,14 @@
1
- describe 'Ridgepole::Client#diff -> migrate', condition: [:activerecord_5] do
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
2
  subject { client }
3
3
 
4
4
  context 'when add_index contains expression' do
5
5
  let(:actual_dsl) { '' }
6
- let(:expected_dsl) { <<-EOS }
6
+ let(:expected_dsl) { erbh(<<-EOS) }
7
7
  create_table "users", force: :cascade do |t|
8
8
  t.string "name", null: false
9
9
  t.datetime "created_at", null: false
10
10
  t.datetime "updated_at", null: false
11
- t.index "lower((name)::text)", name: "index_users_on_lower_name", using: :btree
11
+ t.index "lower((name)::text)", <%= i({name: "index_users_on_lower_name"} + cond(5.0, using: :btree)) %>
12
12
  end
13
13
  EOS
14
14
 
@@ -3,19 +3,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
3
3
  let(:actual_dsl) { '' }
4
4
 
5
5
  let(:expected_dsl) {
6
- if condition(:activerecord_5)
7
- erbh(<<-EOS)
8
- create_table "bigint_test", id: false, force: :cascade do |t|
9
- t.bigint "b"
10
- end
11
- EOS
12
- else
13
- erbh(<<-EOS)
14
- create_table "bigint_test", id: false, force: :cascade do |t|
15
- t.integer "b", limit: 8
16
- end
17
- EOS
18
- end
6
+ erbh(<<-EOS)
7
+ create_table "bigint_test", id: false, force: :cascade do |t|
8
+ t.bigint "b"
9
+ end
10
+ EOS
19
11
  }
20
12
 
21
13
  before { subject.diff(actual_dsl).migrate }
@@ -39,19 +31,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
39
31
  }
40
32
 
41
33
  let(:expected_dsl) {
42
- if condition(:activerecord_5)
43
- erbh(<<-EOS)
44
- create_table "bigint_test", id: false, force: :cascade do |t|
45
- t.bigint "b"
46
- end
47
- EOS
48
- else
49
- erbh(<<-EOS)
50
- create_table "bigint_test", id: false, force: :cascade do |t|
51
- t.integer "b", limit: 8
52
- end
53
- EOS
54
- end
34
+ erbh(<<-EOS)
35
+ create_table "bigint_test", id: false, force: :cascade do |t|
36
+ t.bigint "b"
37
+ end
38
+ EOS
55
39
  }
56
40
 
57
41
  before { subject.diff(dsl).migrate }
@@ -7,15 +7,6 @@ describe 'Ridgepole::Client#diff -> migrate' do
7
7
  titles_pk: {primary_key: ["emp_no", "title", "from_date"]},
8
8
  }
9
9
 
10
- if condition(:activerecord_4)
11
- opts.merge!(
12
- dept_manager_pk: {id: false},
13
- dept_emp_pk: {id: false},
14
- salaries_pk: {id: false},
15
- titles_pk: {id: false}
16
- )
17
- end
18
-
19
10
  opts
20
11
  }
21
12
 
@@ -1,4 +1,4 @@
1
- describe 'Ridgepole::Client#diff -> migrate', condition: [:activerecord_5] do
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
2
  context 'when create table with default proc' do
3
3
  let(:dsl) { '' }
4
4
 
@@ -148,7 +148,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
148
148
  delta = client(:bulk_change => true).diff(expected_dsl)
149
149
  expect(delta.differ?).to be_truthy
150
150
  expect(subject.dump).to match_fuzzy actual_dsl
151
- expect(delta.script).to match_fuzzy <<-EOS
151
+ expect(delta.script).to match_fuzzy erbh(<<-EOS)
152
152
  change_table("dept_emp", {:bulk => true}) do |t|
153
153
  t.remove("emp_no")
154
154
  t.remove("from_date")
@@ -163,7 +163,7 @@ end
163
163
 
164
164
  change_table("employee_clubs", {:bulk => true}) do |t|
165
165
  t.remove("club_id")
166
- t.index(["emp_no"], {:name=>"idx_employee_clubs_emp_no", :using=>:btree})
166
+ t.index(["emp_no"], <%= {:name=>"idx_employee_clubs_emp_no"} + cond(5.0, using: :btree) %>)
167
167
  end
168
168
 
169
169
  change_table("employees", {:bulk => true}) do |t|
@@ -1,4 +1,4 @@
1
- describe 'Ridgepole::Client#diff -> migrate', condition: [:activerecord_5] do
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
2
  subject { client }
3
3
 
4
4
  before do
@@ -6,18 +6,18 @@ describe 'Ridgepole::Client#diff -> migrate', condition: [:activerecord_5] do
6
6
  end
7
7
 
8
8
  context 'when drop column from table containing an expression index' do
9
- let(:actual_dsl) { <<-EOS }
9
+ let(:actual_dsl) { erbh(<<-EOS) }
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
- t.index "lower((name)::text)", name: "index_users_on_lower_name", using: :btree
13
+ t.index "lower((name)::text)", <%= i({name: "index_users_on_lower_name"} + cond(5.0, using: :btree)) %>
14
14
  end
15
15
  EOS
16
16
 
17
- let(:expected_dsl) { <<-EOS }
17
+ let(:expected_dsl) { erbh(<<-EOS) }
18
18
  create_table "users", force: :cascade do |t|
19
19
  t.string "name", null: false
20
- t.index "lower((name)::text)", name: "index_users_on_lower_name", using: :btree
20
+ t.index "lower((name)::text)", <%= i({name: "index_users_on_lower_name"} + cond(5.0, using: :btree)) %>
21
21
  end
22
22
  EOS
23
23
 
@@ -32,10 +32,10 @@ describe 'Ridgepole::Client#diff -> migrate', condition: [:activerecord_5] do
32
32
  end
33
33
 
34
34
  context 'when drop expression index' do
35
- let(:actual_dsl) { <<-EOS }
35
+ let(:actual_dsl) { erbh(<<-EOS) }
36
36
  create_table "users", force: :cascade do |t|
37
37
  t.string "name", null: false
38
- t.index "lower((name)::text)", name: "index_users_on_lower_name", using: :btree
38
+ t.index "lower((name)::text)", <%= i({name: "index_users_on_lower_name"} + cond(5.0, using: :btree)) %>
39
39
  end
40
40
  EOS
41
41
 
@@ -146,12 +146,12 @@ describe 'Ridgepole::Client#diff -> migrate' do
146
146
  it {
147
147
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
148
148
  expect(delta.differ?).to be_truthy
149
- expect(delta.script).to match_fuzzy <<-EOS
150
- add_index("clubs", ["name"], {:name=>"idx_name", :unique=>true, :using=>:btree})
149
+ expect(delta.script).to match_fuzzy erbh(<<-EOS)
150
+ add_index("clubs", ["name"], <%= {:name=>"idx_name", :unique=>true} + cond(5.0, using: :btree) %>)
151
151
 
152
- add_index("employee_clubs", ["emp_no", "club_id"], {:name=>"idx_employee_clubs_emp_no_club_id", :using=>:btree})
152
+ add_index("employee_clubs", ["emp_no", "club_id"], <%= {:name=>"idx_employee_clubs_emp_no_club_id"} + cond(5.0, using: :btree) %>)
153
153
 
154
- add_index("titles", ["emp_no"], {:name=>"idx_titles_emp_no", :using=>:btree})
154
+ add_index("titles", ["emp_no"], <%= {:name=>"idx_titles_emp_no"} + cond(5.0, using: :btree) %>)
155
155
  EOS
156
156
  }
157
157
 
@@ -132,17 +132,17 @@ describe 'Ridgepole::Client#diff -> migrate' do
132
132
  it {
133
133
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
134
134
  expect(delta.differ?).to be_truthy
135
- expect(delta.script).to match_fuzzy <<-EOS
135
+ expect(delta.script).to match_fuzzy erbh(<<-EOS)
136
136
  create_table("clubs", {}) do |t|
137
137
  t.column("name", :"string", {:limit=>255, :default=>"", :null=>false})
138
138
  end
139
- add_index("clubs", ["name"], {:name=>"idx_name", :unique=>true, :using=>:btree})
139
+ add_index("clubs", ["name"], <%= {:name=>"idx_name", :unique=>true} + cond(5.0, using: :btree) %>)
140
140
 
141
141
  create_table("employee_clubs", {}) do |t|
142
142
  t.column("emp_no", :"integer", {:null=>false})
143
143
  t.column("club_id", :"integer", {:null=>false})
144
144
  end
145
- add_index("employee_clubs", ["emp_no", "club_id"], {:name=>"idx_employee_clubs_emp_no_club_id", :using=>:btree})
145
+ add_index("employee_clubs", ["emp_no", "club_id"], <%= {:name=>"idx_employee_clubs_emp_no_club_id"} + cond(5.0, using: :btree) %>)
146
146
 
147
147
  create_table("employees", {:primary_key=>"emp_no"}) do |t|
148
148
  t.column("birth_date", :"date", {:null=>false})
@@ -56,9 +56,6 @@ describe 'Ridgepole::Client#diff -> migrate' do
56
56
  expect(delta.differ?).to be_truthy
57
57
  expect(subject.dump).to match_fuzzy actual_dsl
58
58
  delta.migrate
59
- if condition(:activerecord_4)
60
- expected_dsl.sub!('t.bigint "bigint"', 't.integer "bigint", limit: 8')
61
- end
62
59
  expect(subject.dump).to match_fuzzy expected_dsl
63
60
  }
64
61
  end
@@ -1,44 +1,20 @@
1
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
- let(:template_variables) {
3
- opts = {
4
- departments_ext: {id: :string, limit: 4},
5
- employees_ext: {id: :integer},
6
- dept_manager_pk: {primary_key: ["emp_no", "dept_no"]},
7
- dept_emp_pk: {primary_key: ["emp_no", "dept_no"]},
8
- salaries_pk: {primary_key: ["emp_no", "from_date"]},
9
- titles_pk: {primary_key: ["emp_no", "title", "from_date"]},
10
- }
11
-
12
- if condition(:activerecord_4)
13
- opts.merge!(
14
- departments_ext: {},
15
- employees_ext: {},
16
- dept_manager_pk: {id: false},
17
- dept_emp_pk: {id: false},
18
- salaries_pk: {id: false},
19
- titles_pk: {id: false}
20
- )
21
- end
22
-
23
- opts
24
- }
25
-
26
2
  context 'when database and definition are same' do
27
3
  let(:dsl) {
28
- erbh(<<-EOS, template_variables)
29
- create_table "clubs", force: :cascade do |t|
4
+ erbh(<<-EOS)
5
+ create_table "clubs", <%= i cond(5.1, id: :serial) + {force: :cascade} %> do |t|
30
6
  t.string "name", limit: 255, default: "", null: false
31
7
  end
32
8
 
33
9
  <%= add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree %>
34
10
 
35
- create_table "departments", primary_key: "dept_no", <%= i @departments_ext %>, force: :cascade do |t|
11
+ create_table "departments", primary_key: "dept_no", id: :string, limit: 4, force: :cascade do |t|
36
12
  t.string "dept_name", limit: 40, null: false
37
13
  end
38
14
 
39
15
  <%= add_index "departments", ["dept_name"], name: "idx_dept_name", unique: true, using: :btree %>
40
16
 
41
- create_table "dept_emp", <%= i @dept_emp_pk %>, force: :cascade do |t|
17
+ create_table "dept_emp", primary_key: ["emp_no", "dept_no"], force: :cascade do |t|
42
18
  t.integer "emp_no", null: false
43
19
  t.string "dept_no", limit: 4, null: false
44
20
  t.date "from_date", null: false
@@ -48,7 +24,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
48
24
  <%= add_index "dept_emp", ["dept_no"], name: "idx_dept_emp_dept_no", using: :btree %>
49
25
  <%= add_index "dept_emp", ["emp_no"], name: "idx_dept_emp_emp_no", using: :btree %>
50
26
 
51
- create_table "dept_manager", <%= i @dept_manager_pk %>, force: :cascade do |t|
27
+ create_table "dept_manager", primary_key: ["emp_no", "dept_no"], force: :cascade do |t|
52
28
  t.string "dept_no", limit: 4, null: false
53
29
  t.integer "emp_no", null: false
54
30
  t.date "from_date", null: false
@@ -58,21 +34,21 @@ describe 'Ridgepole::Client#diff -> migrate' do
58
34
  <%= add_index "dept_manager", ["dept_no"], name: "idx_dept_manager_dept_no", using: :btree %>
59
35
  <%= add_index "dept_manager", ["emp_no"], name: "idx_dept_manager_emp_no", using: :btree %>
60
36
 
61
- create_table "employee_clubs", force: :cascade do |t|
37
+ create_table "employee_clubs", <%= i cond(5.1, id: :serial) + {force: :cascade} %> do |t|
62
38
  t.integer "emp_no", null: false
63
39
  t.integer "club_id", null: false
64
40
  end
65
41
 
66
42
  <%= add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_employee_clubs_emp_no_club_id", using: :btree %>
67
43
 
68
- create_table "employees", primary_key: "emp_no", <%= i @employees_ext %>, force: :cascade do |t|
44
+ create_table "employees", primary_key: "emp_no", <%= i({id: :integer} + cond(5.1, default: nil) + {force: :cascade}) %> do |t|
69
45
  t.date "birth_date", null: false
70
46
  t.string "first_name", limit: 14, null: false
71
47
  t.string "last_name", limit: 16, null: false
72
48
  t.date "hire_date", null: false
73
49
  end
74
50
 
75
- create_table "salaries", <%= i @salaries_pk %>, force: :cascade do |t|
51
+ create_table "salaries", primary_key: ["emp_no", "from_date"], force: :cascade do |t|
76
52
  t.integer "emp_no", null: false
77
53
  t.integer "salary", null: false
78
54
  t.date "from_date", null: false
@@ -81,7 +57,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
81
57
 
82
58
  <%= add_index "salaries", ["emp_no"], name: "idx_salaries_emp_no", using: :btree %>
83
59
 
84
- create_table "titles", <%= i @titles_pk %>, force: :cascade do |t|
60
+ create_table "titles", primary_key: ["emp_no", "title", "from_date"], force: :cascade do |t|
85
61
  t.integer "emp_no", null: false
86
62
  t.string "title", limit: 50, null: false
87
63
  t.date "from_date", null: false
@@ -10,10 +10,6 @@ module SpecCondition
10
10
  ENV['ENABLE_MYSQL_AWESOME'] == '1'
11
11
  end
12
12
 
13
- def activerecord_4?
14
- ActiveRecord::VERSION::MAJOR >= 4 and ActiveRecord::VERSION::MAJOR < 5
15
- end
16
-
17
13
  def activerecord_5?
18
14
  ActiveRecord::VERSION::MAJOR >= 5 and ActiveRecord::VERSION::MAJOR < 6
19
15
  end
@@ -23,12 +19,25 @@ module SpecCondition
23
19
  end
24
20
  end
25
21
 
22
+ def check_version_or_cond(version_or_cond)
23
+ case version_or_cond
24
+ when Regexp
25
+ ActiveRecord::VERSION::STRING =~ version_or_cond
26
+ when Float
27
+ ActiveRecord::VERSION::STRING.start_with?(version_or_cond.to_s)
28
+ when String
29
+ ActiveRecord::VERSION::STRING.start_with?(version_or_cond)
30
+ else
31
+ SpecCondition.send("#{version_or_cond}?")
32
+ end
33
+ end
34
+
26
35
  def condition(*conds)
27
36
  conds.any? do |c|
28
37
  if c.is_a? Array
29
- c.all? {|i| SpecCondition.send("#{i}?") }
38
+ c.all? {|i| check_version_or_cond(i) }
30
39
  else
31
- SpecCondition.send("#{c}?")
40
+ check_version_or_cond(c)
32
41
  end
33
42
  end
34
43
  end
@@ -6,11 +6,6 @@ require 'cli_helper'
6
6
 
7
7
  require 'processing_for_travis'
8
8
 
9
- if condition [:mysql_awesome_enabled, :activerecord_5]
10
- warn 'warning: Cannot use activerecord-mysql-awesome on ActiveRecord 5.0'
11
- exit 0
12
- end
13
-
14
9
  require 'ridgepole'
15
10
  require 'ridgepole/cli/config'
16
11
  require 'active_support/core_ext'
@@ -40,7 +35,7 @@ RSpec.configure do |config|
40
35
 
41
36
  config.before(:each) do |example|
42
37
  if conds = example.metadata[:condition]
43
- skip unless conds.any? {|c| condition(*c) }
38
+ skip unless Array(conds).any? {|c| condition(*c) }
44
39
  end
45
40
 
46
41
  case example.metadata[:file_path]
@@ -101,15 +96,7 @@ module SpecHelper
101
96
  def client(options = {}, config = {})
102
97
  config = conn_spec(config)
103
98
  default_options = {debug: condition(:debug)}
104
-
105
- if condition(:mysql_awesome_enabled)
106
- default_options[:enable_mysql_awesome] = true
107
- default_options[:dump_without_table_options] = true
108
- end
109
-
110
- if condition(:activerecord_5)
111
- default_options[:dump_without_table_options] = true
112
- end
99
+ default_options[:dump_without_table_options] = true
113
100
 
114
101
  options = default_options.merge(options)
115
102