ridgepole 0.2.2 → 0.2.3

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.
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