ridgepole 0.2.2 → 0.2.3

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
  SHA1:
3
- metadata.gz: f5d54e938bc4e2bf95598645ed4a431726393ec0
4
- data.tar.gz: 4a51aeaa8a9f1b9786c77ec09607b7be67227c81
3
+ metadata.gz: 2356f9b779b9119757eb4ef1a164b64e7c300bb3
4
+ data.tar.gz: ba5282a5f09799f4c69ab8cf39d810f5731098c0
5
5
  SHA512:
6
- metadata.gz: 93a822f7d5188da00068bad5b309b76adac1e6ee8992550eeccff464672c54ac77f88fadd0817404f7b44115662bbaecb5fa782d6dceb41c03c15a522c1ee52a
7
- data.tar.gz: 8073144c850abfff1970664fc861d241f7676cfc98e9e26afb0e5d6be0d8aac2b6ce42517ac4827bcf8b6b2d6bebad8fb13f79b511deef5539e4e615974e78a6
6
+ metadata.gz: ca299b961a46df66acf0e446f3171efe6f41a8fdf0143f9e3261dac694333721aa7869e3bf4656a2134aad006001ba5d4ad88e0e3e41e9d57c418cd2fa136d14
7
+ data.tar.gz: 14fab8ed7d0962d4f3f67a5e2d5363035a2913faed67de36bc86d1592c82905d60e25d0ba47b313ca0b0f736b3faf17ea7dfd29d94293f78d3990ceea7d5e2d3
data/README.md CHANGED
@@ -22,6 +22,29 @@ Or install it yourself as:
22
22
 
23
23
  $ gem install ridgepole
24
24
 
25
+ ## Help
26
+ ```
27
+ Usage: ridgepole [options]
28
+ -c, --config CONF_OR_FILE
29
+ -a, --apply
30
+ -m, --merge
31
+ -f, --file FILE
32
+ --dry-run
33
+ -e, --export
34
+ --split
35
+ --split-with-dir
36
+ -d, --diff DSL1 DSL2
37
+ --reverse
38
+ --with-apply
39
+ -o, --output FILE
40
+ -t, --tables TABLES
41
+ --ignore-tables TABLES
42
+ --disable-mysql-unsigned
43
+ --log-file LOG_FILE
44
+ --verbose
45
+ --debug
46
+ ```
47
+
25
48
  ## Usage
26
49
 
27
50
  ```sh
@@ -94,6 +117,25 @@ $ ridgepole --diff config.yml file1.schema
94
117
  remove_column("articles", "author")
95
118
  ```
96
119
 
120
+ ### Rename
121
+ ```sh
122
+ create_table "articles", force: true do |t|
123
+ t.string "title"
124
+ t.text "desc", rename_from: "text"
125
+ t.text "author"
126
+ t.datetime "created_at"
127
+ t.datetime "updated_at"
128
+ end
129
+
130
+ create_table "user_comments", force: true, rename_from: "comments" do |t|
131
+ t.string "commenter"
132
+ t.text "body"
133
+ t.integer "article_id"
134
+ t.datetime "created_at"
135
+ t.datetime "updated_at"
136
+ end
137
+ ```
138
+
97
139
  ### Reverse diff
98
140
  ```sh
99
141
  $ cat file1.schema
@@ -12,39 +12,9 @@ class Ridgepole::Diff
12
12
  end
13
13
 
14
14
  delta = {}
15
-
16
- to.dup.each do |table_name, to_attrs|
17
- next unless target?(table_name)
18
-
19
- if (from_table_name = (to_attrs[:options] || {}).delete(:rename_from))
20
- unless from.has_key?(from_table_name)
21
- raise "Table `#{from_table_name}` not found"
22
- end
23
-
24
- delta[:rename] ||= {}
25
- delta[:rename][table_name] = from_table_name
26
- from.delete(from_table_name)
27
- to.delete(table_name)
28
- end
29
- end
30
-
31
-
15
+ scan_table_rename(from, to, delta)
32
16
  # for reverse option
33
- from.dup.each do |table_name, from_attrs|
34
- if (to_table_name = (from_attrs[:options] || {}).delete(:rename_from))
35
- unless to.has_key?(to_table_name)
36
- raise "Table `#{from_table_name}` not found"
37
- end
38
-
39
- # XXX: Correct?
40
- next unless target?(to_table_name)
41
-
42
- delta[:rename] ||= {}
43
- delta[:rename][to_table_name] = table_name
44
- from.delete(table_name)
45
- to.delete(to_table_name)
46
- end
47
- end
17
+ scan_table_rename(to, from, delta)
48
18
 
49
19
  to.each do |table_name, to_attrs|
50
20
  next unless target?(table_name)
@@ -71,6 +41,32 @@ class Ridgepole::Diff
71
41
 
72
42
  private
73
43
 
44
+ def scan_table_rename(from, to, delta, options = {})
45
+ to.dup.each do |table_name, to_attrs|
46
+ next unless target?(table_name)
47
+
48
+ if (from_table_name = (to_attrs[:options] || {}).delete(:rename_from))
49
+ # Already renamed
50
+ next if from[table_name]
51
+
52
+ unless from.has_key?(from_table_name)
53
+ raise "Table `#{from_table_name}` not found"
54
+ end
55
+
56
+ delta[:rename] ||= {}
57
+
58
+ if @options[:reverse]
59
+ delta[:rename][from_table_name] = table_name
60
+ else
61
+ delta[:rename][table_name] = from_table_name
62
+ end
63
+
64
+ from.delete(from_table_name)
65
+ to.delete(table_name)
66
+ end
67
+ end
68
+ end
69
+
74
70
  def scan_change(table_name, from, to, delta)
75
71
  from = (from || {}).dup
76
72
  to = (to || {}).dup
@@ -97,32 +93,9 @@ class Ridgepole::Diff
97
93
  to = (to || {}).dup
98
94
  definition_delta = {}
99
95
 
100
- to.dup.each do |column_name, to_attrs|
101
- if (from_column_name = (to_attrs[:options] || {}).delete(:rename_from))
102
- unless from.has_key?(from_column_name)
103
- raise "Column `#{from_column_name}` not found"
104
- end
105
-
106
- definition_delta[:rename] ||= {}
107
- definition_delta[:rename][column_name] = from_column_name
108
- from.delete(from_column_name)
109
- to.delete(column_name)
110
- end
111
- end
112
-
96
+ scan_column_rename(from, to, definition_delta)
113
97
  # for reverse option
114
- from.dup.each do |column_name, from_attrs|
115
- if (to_column_name = (from_attrs[:options] || {}).delete(:rename_from))
116
- unless to.has_key?(to_column_name)
117
- raise "Column `#{to_column_name}` not found"
118
- end
119
-
120
- definition_delta[:rename] ||= {}
121
- definition_delta[:rename][to_column_name] = column_name
122
- from.delete(column_name)
123
- to.delete(to_column_name)
124
- end
125
- end
98
+ scan_column_rename(to, from, definition_delta)
126
99
 
127
100
  priv_column_name = nil
128
101
 
@@ -165,6 +138,30 @@ class Ridgepole::Diff
165
138
  end
166
139
  end
167
140
 
141
+ def scan_column_rename(from, to, definition_delta)
142
+ to.dup.each do |column_name, to_attrs|
143
+ if (from_column_name = (to_attrs[:options] || {}).delete(:rename_from))
144
+ # Already renamed
145
+ next if from[column_name]
146
+
147
+ unless from.has_key?(from_column_name)
148
+ raise "Column `#{from_column_name}` not found"
149
+ end
150
+
151
+ definition_delta[:rename] ||= {}
152
+
153
+ if @options[:reverse]
154
+ definition_delta[:rename][from_column_name] = column_name
155
+ else
156
+ definition_delta[:rename][column_name] = from_column_name
157
+ end
158
+
159
+ from.delete(from_column_name)
160
+ to.delete(column_name)
161
+ end
162
+ end
163
+ end
164
+
168
165
  def scan_indices_change(from, to, table_delta)
169
166
  from = (from || {}).dup
170
167
  to = (to || {}).dup
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
data/ridgepole.gemspec CHANGED
@@ -22,6 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'activerecord-mysql-unsigned', '>= 0.1.3'
23
23
  spec.add_development_dependency 'bundler'
24
24
  spec.add_development_dependency 'rake'
25
- spec.add_development_dependency 'rspec', '~> 2.14.1'
25
+ spec.add_development_dependency 'rspec', '>= 3.0.0'
26
26
  spec.add_development_dependency 'mysql2'
27
27
  end
@@ -142,7 +142,7 @@ describe 'Ridgepole::Client.diff' do
142
142
 
143
143
  it {
144
144
  delta = subject.diff(actual_dsl, expected_dsl)
145
- expect(delta.differ?).to be_true
145
+ expect(delta.differ?).to be_truthy
146
146
  expect(delta.script).to eq (<<-RUBY).undent.strip
147
147
  change_column("employee_clubs", "club_id", :integer, {:unsigned=>false, :null=>true})
148
148
 
@@ -146,7 +146,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
146
146
 
147
147
  it {
148
148
  delta = subject.diff(expected_dsl)
149
- expect(delta.differ?).to be_true
149
+ expect(delta.differ?).to be_truthy
150
150
  expect(subject.dump).to eq actual_dsl.undent.strip
151
151
  delta.migrate
152
152
  expect(subject.dump).to eq expected_dsl.undent.strip
@@ -154,7 +154,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
154
154
 
155
155
  it {
156
156
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
157
- expect(delta.differ?).to be_true
157
+ expect(delta.differ?).to be_truthy
158
158
  expect(delta.script).to eq (<<-RUBY).undent.strip
159
159
  remove_column("employee_clubs", "any_col")
160
160
 
@@ -143,7 +143,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
143
143
 
144
144
  it {
145
145
  delta = subject.diff(expected_dsl)
146
- expect(delta.differ?).to be_true
146
+ expect(delta.differ?).to be_truthy
147
147
  expect(subject.dump).to eq actual_dsl.undent.strip
148
148
  delta.migrate
149
149
  expect(subject.dump).to eq expected_dsl.undent.strip.gsub(/(\s*,\s*unsigned: false)?\s*,\s*null: true/, '')
@@ -151,7 +151,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
151
151
 
152
152
  it {
153
153
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
154
- expect(delta.differ?).to be_true
154
+ expect(delta.differ?).to be_truthy
155
155
  expect(delta.script).to eq (<<-RUBY).undent.strip
156
156
  change_column("employee_clubs", "club_id", :integer, {:unsigned=>true, :null=>false})
157
157
 
@@ -31,7 +31,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
31
31
  it {
32
32
  expect(Ridgepole::Logger.instance).to receive(:warn).with('[WARNING] Table `employees` options cannot be changed')
33
33
  delta = subject.diff(expected_dsl)
34
- expect(delta.differ?).to be_false
34
+ expect(delta.differ?).to be_falsey
35
35
  expect(subject.dump).to eq actual_dsl.undent.strip
36
36
  delta.migrate
37
37
  expect(subject.dump).to eq actual_dsl.undent.strip
@@ -40,7 +40,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
40
40
  it {
41
41
  expect(Ridgepole::Logger.instance).to receive(:warn).with('[WARNING] Table `employees` options cannot be changed')
42
42
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
43
- expect(delta.differ?).to be_false
43
+ expect(delta.differ?).to be_falsey
44
44
  }
45
45
  end
46
46
  end
@@ -82,7 +82,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
82
82
 
83
83
  it {
84
84
  delta = subject.diff(expected_dsl)
85
- expect(delta.differ?).to be_true
85
+ expect(delta.differ?).to be_truthy
86
86
  expect(subject.dump.delete_empty_lines).to eq actual_dsl.undent.strip.delete_empty_lines
87
87
  delta.migrate
88
88
  expect(subject.dump.delete_empty_lines).to eq expected_dsl.undent.strip.delete_empty_lines
@@ -90,7 +90,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
90
90
 
91
91
  it {
92
92
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
93
- expect(delta.differ?).to be_true
93
+ expect(delta.differ?).to be_truthy
94
94
  expect(delta.script).to eq (<<-RUBY).undent.strip
95
95
  remove_index("clubs", {:name=>"idx_name"})
96
96
 
@@ -82,7 +82,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
82
82
 
83
83
  it {
84
84
  delta = subject.diff(expected_dsl)
85
- expect(delta.differ?).to be_true
85
+ expect(delta.differ?).to be_truthy
86
86
  expect(subject.dump.delete_empty_lines).to eq actual_dsl.undent.strip.delete_empty_lines
87
87
  delta.migrate
88
88
  expect(subject.dump.delete_empty_lines).to eq expected_dsl.undent.strip.delete_empty_lines
@@ -90,7 +90,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
90
90
 
91
91
  it {
92
92
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
93
- expect(delta.differ?).to be_true
93
+ expect(delta.differ?).to be_truthy
94
94
  expect(delta.script).to eq (<<-RUBY).undent.strip
95
95
  drop_table("clubs")
96
96
 
@@ -136,7 +136,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
136
136
 
137
137
  it {
138
138
  delta = subject.diff(expected_dsl)
139
- expect(delta.differ?).to be_true
139
+ expect(delta.differ?).to be_truthy
140
140
  expect(subject.dump).to eq actual_dsl.undent.strip
141
141
  delta.migrate
142
142
  expect(subject.dump).to eq expected_dsl.undent.strip
@@ -144,7 +144,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
144
144
 
145
145
  it {
146
146
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
147
- expect(delta.differ?).to be_true
147
+ expect(delta.differ?).to be_truthy
148
148
  expect(delta.script).to eq (<<-RUBY).undent.strip
149
149
  add_column("dept_emp", "from_date", :date, {:null=>false, :after=>"dept_no"})
150
150
  add_column("dept_emp", "to_date", :date, {:null=>false, :after=>"from_date"})
@@ -82,7 +82,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
82
82
 
83
83
  it {
84
84
  delta = subject.diff(expected_dsl)
85
- expect(delta.differ?).to be_true
85
+ expect(delta.differ?).to be_truthy
86
86
  expect(subject.dump).to eq actual_dsl.undent.strip
87
87
  delta.migrate
88
88
  expect(subject.dump.each_line.select {|i| i !~ /\A\Z/ }.join).to eq expected_dsl.undent.strip.each_line.select {|i| i !~ /\A\Z/ }.join
@@ -90,7 +90,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
90
90
 
91
91
  it {
92
92
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
93
- expect(delta.differ?).to be_true
93
+ expect(delta.differ?).to be_truthy
94
94
  expect(delta.script).to eq (<<-RUBY).undent.strip
95
95
  add_index("clubs", ["name"], {:name=>"idx_name", :unique=>true, :using=>:btree})
96
96
 
@@ -82,7 +82,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
82
82
 
83
83
  it {
84
84
  delta = subject.diff(expected_dsl)
85
- expect(delta.differ?).to be_true
85
+ expect(delta.differ?).to be_truthy
86
86
  expect(subject.dump).to eq actual_dsl.undent.strip
87
87
  delta.migrate
88
88
  expect(subject.dump.each_line.select {|i| i !~ /\A\Z/ }.join).to eq expected_dsl.undent.strip.each_line.select {|i| i !~ /\A\Z/ }.join
@@ -90,7 +90,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
90
90
 
91
91
  it {
92
92
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
93
- expect(delta.differ?).to be_true
93
+ expect(delta.differ?).to be_truthy
94
94
  expect(delta.script).to eq (<<-RUBY).undent.strip
95
95
  create_table("clubs", {}) do |t|
96
96
  t.string("name", {:default=>"", :null=>false})
@@ -74,7 +74,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
74
74
 
75
75
  it {
76
76
  delta = subject.diff(expected_dsl)
77
- expect(delta.differ?).to be_true
77
+ expect(delta.differ?).to be_truthy
78
78
  expect(subject.dump).to eq actual_dsl.undent.strip
79
79
  delta.migrate
80
80
  expect(subject.dump).to eq expected_dsl.undent.strip
@@ -82,7 +82,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
82
82
 
83
83
  it {
84
84
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
85
- expect(delta.differ?).to be_true
85
+ expect(delta.differ?).to be_truthy
86
86
  expect(delta.script).to eq (<<-RUBY).undent.strip
87
87
  drop_table("clubs")
88
88
 
@@ -147,7 +147,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
147
147
 
148
148
  it {
149
149
  delta = subject.diff(expected_dsl.delete_create_table('clubs'))
150
- expect(delta.differ?).to be_true
150
+ expect(delta.differ?).to be_truthy
151
151
  expect(subject.dump).to eq actual_dsl.undent.strip
152
152
  delta.migrate
153
153
  # `clubs` table is not deleted
@@ -156,7 +156,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
156
156
 
157
157
  it {
158
158
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, merge: true, reverse: true)
159
- expect(delta.differ?).to be_false
159
+ expect(delta.differ?).to be_falsey
160
160
  }
161
161
  end
162
162
  end
@@ -143,7 +143,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
143
143
 
144
144
  it {
145
145
  delta = subject.diff(expected_dsl)
146
- expect(delta.differ?).to be_true
146
+ expect(delta.differ?).to be_truthy
147
147
  expect(subject.dump).to eq actual_dsl.undent.strip
148
148
  delta.migrate
149
149
  expect(subject.dump).to eq expected_dsl.undent.strip.gsub(/\s*,\s*rename_from:.*$/, '')
@@ -151,7 +151,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
151
151
 
152
152
  it {
153
153
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
154
- expect(delta.differ?).to be_true
154
+ expect(delta.differ?).to be_truthy
155
155
  expect(delta.script).to eq (<<-RUBY).undent.strip
156
156
  rename_column("dept_emp", "from_date2", "from_date")
157
157
 
@@ -172,7 +172,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
172
172
  t.date "birth_date", null: false
173
173
  t.string "first_name", limit: 14, null: false
174
174
  t.string "last_name", limit: 16, null: false
175
- t.string "gender", limit: 1, null: false, rename_from: 'age'
175
+ t.string "gender2", limit: 1, null: false, rename_from: 'age'
176
176
  t.date "hire_date", null: false
177
177
  end
178
178
  RUBY
@@ -143,7 +143,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
143
143
 
144
144
  it {
145
145
  delta = subject.diff(expected_dsl)
146
- expect(delta.differ?).to be_true
146
+ expect(delta.differ?).to be_truthy
147
147
  expect(subject.dump).to eq actual_dsl.undent.strip
148
148
  delta.migrate
149
149
  expect(subject.dump).to eq expected_dsl.undent.strip.gsub(/, rename_from: 'employees'/, '')
@@ -151,7 +151,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
151
151
 
152
152
  it {
153
153
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
154
- expect(delta.differ?).to be_true
154
+ expect(delta.differ?).to be_truthy
155
155
  expect(delta.script).to eq (<<-RUBY).undent.strip
156
156
  rename_table("employees2", "employees")
157
157
  RUBY
@@ -164,7 +164,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
164
164
 
165
165
  let(:dsl) {
166
166
  <<-RUBY
167
- create_table "employees", primary_key: "emp_no", force: true, rename_from: 'not_employees' do |t|
167
+ create_table "employees2", primary_key: "emp_no", force: true, rename_from: 'not_employees' do |t|
168
168
  t.date "birth_date", null: false
169
169
  t.string "first_name", limit: 14, null: false
170
170
  t.string "last_name", limit: 16, null: false
@@ -29,7 +29,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
29
29
 
30
30
  it {
31
31
  delta = subject.diff(expected_dsl)
32
- expect(delta.differ?).to be_false
32
+ expect(delta.differ?).to be_falsey
33
33
  expect(subject.dump).to eq actual_dsl.undent.strip
34
34
  delta.migrate
35
35
  expect(subject.dump).to eq expected_dsl.undent.strip.gsub(/\s*,\s*null: true/, '')
@@ -66,7 +66,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
66
66
 
67
67
  it {
68
68
  delta = subject.diff(expected_dsl)
69
- expect(delta.differ?).to be_false
69
+ expect(delta.differ?).to be_falsey
70
70
  expect(subject.dump).to eq actual_dsl.undent.strip.gsub(/\s*,\s*null: true/, '')
71
71
  delta.migrate
72
72
  expect(subject.dump).to eq expected_dsl.undent.strip
@@ -23,7 +23,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
23
23
 
24
24
  it {
25
25
  delta = subject.diff(expected_dsl)
26
- expect(delta.differ?).to be_false
26
+ expect(delta.differ?).to be_falsey
27
27
  expect(subject.dump).to eq actual_dsl.undent.strip
28
28
  delta.migrate
29
29
  expect(subject.dump).to eq expected_dsl.undent.strip.gsub('unsigned: false,', ' ')
@@ -54,7 +54,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
54
54
 
55
55
  it {
56
56
  delta = subject.diff(expected_dsl)
57
- expect(delta.differ?).to be_false
57
+ expect(delta.differ?).to be_falsey
58
58
  expect(subject.dump).to eq actual_dsl.undent.strip.gsub('unsigned: false,', ' ')
59
59
  delta.migrate
60
60
  expect(subject.dump).to eq expected_dsl.undent.strip
@@ -74,7 +74,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
74
74
 
75
75
  it {
76
76
  delta = subject.diff(dsl)
77
- expect(delta.differ?).to be_false
77
+ expect(delta.differ?).to be_falsey
78
78
  expect(subject.dump).to eq dsl.undent.strip
79
79
  delta.migrate
80
80
  expect(subject.dump).to eq dsl.undent.strip
@@ -0,0 +1,157 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when rename column' do
3
+ let(:actual_dsl) {
4
+ <<-RUBY
5
+ create_table "clubs", force: true do |t|
6
+ t.string "name", default: "", null: false
7
+ end
8
+
9
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
10
+
11
+ create_table "departments", primary_key: "dept_no", force: true do |t|
12
+ t.string "dept_name", limit: 40, null: false
13
+ end
14
+
15
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
16
+
17
+ create_table "dept_emp", id: false, force: true do |t|
18
+ t.integer "emp_no", null: false
19
+ t.string "dept_no", limit: 4, null: false
20
+ t.date "from_date2", null: false
21
+ t.date "to_date", null: false
22
+ end
23
+
24
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
25
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
26
+
27
+ create_table "dept_manager", id: false, force: true do |t|
28
+ t.string "dept_no", limit: 4, null: false
29
+ t.integer "emp_no", null: false
30
+ t.date "from_date", null: false
31
+ t.date "to_date2", null: false
32
+ end
33
+
34
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
35
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
36
+
37
+ create_table "employee_clubs", force: true do |t|
38
+ t.integer "emp_no", unsigned: true, null: false
39
+ t.integer "club_id", unsigned: true, null: false
40
+ end
41
+
42
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
43
+
44
+ create_table "employees", primary_key: "emp_no", force: true do |t|
45
+ t.date "birth_date", null: false
46
+ t.string "first_name", limit: 14, null: false
47
+ t.string "last_name", limit: 16, null: false
48
+ t.string "gender2", limit: 1, null: false
49
+ t.date "hire_date", null: false
50
+ end
51
+
52
+ create_table "salaries", id: false, force: true do |t|
53
+ t.integer "emp_no", null: false
54
+ t.integer "salary", null: false
55
+ t.date "from_date", null: false
56
+ t.date "to_date", null: false
57
+ end
58
+
59
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
60
+
61
+ create_table "titles", id: false, force: true do |t|
62
+ t.integer "emp_no", null: false
63
+ t.string "title", limit: 50, null: false
64
+ t.date "from_date", null: false
65
+ t.date "to_date"
66
+ end
67
+
68
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
69
+ RUBY
70
+ }
71
+
72
+ let(:expected_dsl) {
73
+ <<-RUBY
74
+ create_table "clubs", force: true do |t|
75
+ t.string "name", default: "", null: false
76
+ end
77
+
78
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
79
+
80
+ create_table "departments", primary_key: "dept_no", force: true do |t|
81
+ t.string "dept_name", limit: 40, null: false
82
+ end
83
+
84
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
85
+
86
+ create_table "dept_emp", id: false, force: true do |t|
87
+ t.integer "emp_no", null: false
88
+ t.string "dept_no", limit: 4, null: false
89
+ t.date "from_date2", null: false, rename_from: 'from_date'
90
+ t.date "to_date", null: false
91
+ end
92
+
93
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
94
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
95
+
96
+ create_table "dept_manager", id: false, force: true do |t|
97
+ t.string "dept_no", limit: 4, null: false
98
+ t.integer "emp_no", null: false
99
+ t.date "from_date", null: false
100
+ t.date "to_date2", null: false, rename_from: 'to_date'
101
+ end
102
+
103
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
104
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
105
+
106
+ create_table "employee_clubs", force: true do |t|
107
+ t.integer "emp_no", unsigned: true, null: false
108
+ t.integer "club_id", unsigned: true, null: false
109
+ end
110
+
111
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
112
+
113
+ create_table "employees", primary_key: "emp_no", force: true do |t|
114
+ t.date "birth_date", null: false
115
+ t.string "first_name", limit: 14, null: false
116
+ t.string "last_name", limit: 16, null: false
117
+ t.string "gender2", limit: 1, null: false, rename_from: 'gender'
118
+ t.date "hire_date", null: false
119
+ end
120
+
121
+ create_table "salaries", id: false, force: true do |t|
122
+ t.integer "emp_no", null: false
123
+ t.integer "salary", null: false
124
+ t.date "from_date", null: false
125
+ t.date "to_date", null: false
126
+ end
127
+
128
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
129
+
130
+ create_table "titles", id: false, force: true do |t|
131
+ t.integer "emp_no", null: false
132
+ t.string "title", limit: 50, null: false
133
+ t.date "from_date", null: false
134
+ t.date "to_date"
135
+ end
136
+
137
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
138
+ RUBY
139
+ }
140
+
141
+ before { subject.diff(actual_dsl).migrate }
142
+ subject { client }
143
+
144
+ it {
145
+ delta = subject.diff(expected_dsl)
146
+ expect(delta.differ?).to be_falsey
147
+ expect(subject.dump).to eq actual_dsl.undent.strip
148
+ delta.migrate
149
+ expect(subject.dump).to eq expected_dsl.undent.strip.gsub(/\s*,\s*rename_from:.*$/, '')
150
+ }
151
+
152
+ it {
153
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
154
+ expect(delta.differ?).to be_falsey
155
+ }
156
+ end
157
+ end
@@ -0,0 +1,157 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when rename table' do
3
+ let(:actual_dsl) {
4
+ <<-RUBY
5
+ create_table "clubs", force: true do |t|
6
+ t.string "name", default: "", null: false
7
+ end
8
+
9
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
10
+
11
+ create_table "departments", primary_key: "dept_no", force: true do |t|
12
+ t.string "dept_name", limit: 40, null: false
13
+ end
14
+
15
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
16
+
17
+ create_table "dept_emp", id: false, force: true do |t|
18
+ t.integer "emp_no", null: false
19
+ t.string "dept_no", limit: 4, null: false
20
+ t.date "from_date", null: false
21
+ t.date "to_date", null: false
22
+ end
23
+
24
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
25
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
26
+
27
+ create_table "dept_manager", id: false, force: true do |t|
28
+ t.string "dept_no", limit: 4, null: false
29
+ t.integer "emp_no", null: false
30
+ t.date "from_date", null: false
31
+ t.date "to_date", null: false
32
+ end
33
+
34
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
35
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
36
+
37
+ create_table "employee_clubs", force: true do |t|
38
+ t.integer "emp_no", unsigned: true, null: false
39
+ t.integer "club_id", unsigned: true, null: false
40
+ end
41
+
42
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
43
+
44
+ create_table "employees2", primary_key: "emp_no", force: true do |t|
45
+ t.date "birth_date", null: false
46
+ t.string "first_name", limit: 14, null: false
47
+ t.string "last_name", limit: 16, null: false
48
+ t.string "gender", limit: 1, null: false
49
+ t.date "hire_date", null: false
50
+ end
51
+
52
+ create_table "salaries", id: false, force: true do |t|
53
+ t.integer "emp_no", null: false
54
+ t.integer "salary", null: false
55
+ t.date "from_date", null: false
56
+ t.date "to_date", null: false
57
+ end
58
+
59
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
60
+
61
+ create_table "titles", id: false, force: true do |t|
62
+ t.integer "emp_no", null: false
63
+ t.string "title", limit: 50, null: false
64
+ t.date "from_date", null: false
65
+ t.date "to_date"
66
+ end
67
+
68
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
69
+ RUBY
70
+ }
71
+
72
+ let(:expected_dsl) {
73
+ <<-RUBY
74
+ create_table "clubs", force: true do |t|
75
+ t.string "name", default: "", null: false
76
+ end
77
+
78
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
79
+
80
+ create_table "departments", primary_key: "dept_no", force: true do |t|
81
+ t.string "dept_name", limit: 40, null: false
82
+ end
83
+
84
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
85
+
86
+ create_table "dept_emp", id: false, force: true do |t|
87
+ t.integer "emp_no", null: false
88
+ t.string "dept_no", limit: 4, null: false
89
+ t.date "from_date", null: false
90
+ t.date "to_date", null: false
91
+ end
92
+
93
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
94
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
95
+
96
+ create_table "dept_manager", id: false, force: true do |t|
97
+ t.string "dept_no", limit: 4, null: false
98
+ t.integer "emp_no", null: false
99
+ t.date "from_date", null: false
100
+ t.date "to_date", null: false
101
+ end
102
+
103
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
104
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
105
+
106
+ create_table "employee_clubs", force: true do |t|
107
+ t.integer "emp_no", unsigned: true, null: false
108
+ t.integer "club_id", unsigned: true, null: false
109
+ end
110
+
111
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
112
+
113
+ create_table "employees2", primary_key: "emp_no", force: true, rename_from: 'employees' do |t|
114
+ t.date "birth_date", null: false
115
+ t.string "first_name", limit: 14, null: false
116
+ t.string "last_name", limit: 16, null: false
117
+ t.string "gender", limit: 1, null: false
118
+ t.date "hire_date", null: false
119
+ end
120
+
121
+ create_table "salaries", id: false, force: true do |t|
122
+ t.integer "emp_no", null: false
123
+ t.integer "salary", null: false
124
+ t.date "from_date", null: false
125
+ t.date "to_date", null: false
126
+ end
127
+
128
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
129
+
130
+ create_table "titles", id: false, force: true do |t|
131
+ t.integer "emp_no", null: false
132
+ t.string "title", limit: 50, null: false
133
+ t.date "from_date", null: false
134
+ t.date "to_date"
135
+ end
136
+
137
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
138
+ RUBY
139
+ }
140
+
141
+ before { subject.diff(actual_dsl).migrate }
142
+ subject { client }
143
+
144
+ it {
145
+ delta = subject.diff(expected_dsl)
146
+ expect(delta.differ?).to be_falsey
147
+ expect(subject.dump).to eq actual_dsl.undent.strip
148
+ delta.migrate
149
+ expect(subject.dump).to eq expected_dsl.undent.strip.gsub(/, rename_from: 'employees'/, '')
150
+ }
151
+
152
+ it {
153
+ delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
154
+ expect(delta.differ?).to be_falsey
155
+ }
156
+ end
157
+ end
@@ -59,7 +59,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
59
59
 
60
60
  it {
61
61
  delta = subject.diff(dsl)
62
- expect(delta.differ?).to be_false
62
+ expect(delta.differ?).to be_falsey
63
63
  expect(subject.dump).to eq expected_dsl.undent.strip
64
64
  delta.migrate
65
65
  expect(subject.dump).to eq expected_dsl.undent.strip
@@ -138,7 +138,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
138
138
 
139
139
  it {
140
140
  delta = subject.diff(dsl)
141
- expect(delta.differ?).to be_true
141
+ expect(delta.differ?).to be_truthy
142
142
  expect(subject.dump).to eq before_dsl.undent.strip
143
143
  delta.migrate
144
144
  expect(subject.dump).to eq after_dsl.undent.strip
@@ -146,7 +146,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
146
146
 
147
147
  it {
148
148
  delta = Ridgepole::Client.diff(current_schema, dsl, ignore_tables: [/^salaries$/], reverse: true)
149
- expect(delta.differ?).to be_true
149
+ expect(delta.differ?).to be_truthy
150
150
  expect(delta.script).to eq (<<-RUBY).undent.strip
151
151
  change_column("employees", "first_name", :string, {:limit=>14, :null=>false, :unsigned=>false})
152
152
  RUBY
@@ -59,7 +59,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
59
59
 
60
60
  it {
61
61
  delta = subject.diff(dsl)
62
- expect(delta.differ?).to be_false
62
+ expect(delta.differ?).to be_falsey
63
63
  expect(subject.dump).to eq expected_dsl.undent.strip
64
64
  delta.migrate
65
65
  expect(subject.dump).to eq expected_dsl.undent.strip
@@ -138,7 +138,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
138
138
 
139
139
  it {
140
140
  delta = subject.diff(dsl)
141
- expect(delta.differ?).to be_true
141
+ expect(delta.differ?).to be_truthy
142
142
  expect(subject.dump).to eq before_dsl.undent.strip
143
143
  delta.migrate
144
144
  expect(subject.dump).to eq after_dsl.undent.strip
@@ -146,7 +146,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
146
146
 
147
147
  it {
148
148
  delta = Ridgepole::Client.diff(current_schema, dsl, tables: ['employees'], reverse: true)
149
- expect(delta.differ?).to be_true
149
+ expect(delta.differ?).to be_truthy
150
150
  expect(delta.script).to eq (<<-RUBY).undent.strip
151
151
  change_column("employees", "first_name", :string, {:limit=>14, :null=>false, :unsigned=>false})
152
152
  RUBY
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.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-02 00:00:00.000000000 Z
11
+ date: 2014-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -70,16 +70,16 @@ dependencies:
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
- version: 2.14.1
75
+ version: 3.0.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
- version: 2.14.1
82
+ version: 3.0.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: mysql2
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -144,6 +144,8 @@ files:
144
144
  - spec/migrate/migrate_same_default_null_spec.rb
145
145
  - spec/migrate/migrate_same_default_unsigned_spec.rb
146
146
  - spec/migrate/migrate_same_spec.rb
147
+ - spec/migrate/migrate_skip_rename_column_spec.rb
148
+ - spec/migrate/migrate_skip_rename_table_spec.rb
147
149
  - spec/migrate/migrate_with_ignore_tables_spec.rb
148
150
  - spec/migrate/migrate_with_tables_spec.rb
149
151
  - spec/ridgepole_test_database.sql
@@ -197,6 +199,8 @@ test_files:
197
199
  - spec/migrate/migrate_same_default_null_spec.rb
198
200
  - spec/migrate/migrate_same_default_unsigned_spec.rb
199
201
  - spec/migrate/migrate_same_spec.rb
202
+ - spec/migrate/migrate_skip_rename_column_spec.rb
203
+ - spec/migrate/migrate_skip_rename_table_spec.rb
200
204
  - spec/migrate/migrate_with_ignore_tables_spec.rb
201
205
  - spec/migrate/migrate_with_tables_spec.rb
202
206
  - spec/ridgepole_test_database.sql