ridgepole 0.4.4 → 0.4.5

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: c176eaae904de1588223d175a7ba36e49e04a2db
4
- data.tar.gz: 2aeecdcaf4989e90ab383e8d8df9b0bfd13e98cc
3
+ metadata.gz: 56ee14dd171b5e6888ea56c015bbc37c65105ec6
4
+ data.tar.gz: 39425456d6e6a931918122ef2791f55f17e03154
5
5
  SHA512:
6
- metadata.gz: c6f5adb0cae77d47f9ebea477a9219c87c58ca2dfd65774533ede9058a0aa86a6cd2032f67481f79c6b00746987108847682c416a3e615078d369ebae78fd841
7
- data.tar.gz: bf5a941c4e33fea0010d7ea7caab81aa10f239d3658aa8fe55f11d5f1c27563a725a44f2b8e0db9fd74d1d6f6c439b755c54aba48acad4e87649ad5642a5d42f
6
+ metadata.gz: be023093493f6c5ab36f58e13f7a7c4ea1482c7f9b3955d83a0727627297921cc5cf380e4f7252a16a34cb7ca409468665421cc13383c3bf55abaf5f2a1182fc
7
+ data.tar.gz: ac0a15b7d6e76bccdcb07df562cb9e7f8e16d835761d80c3783c4def499da72e35b57f2d5d5b9dc449cd9b8203a309b63e1203b3f43a61839bc870d2be45fd6d
@@ -75,7 +75,7 @@ class Ridgepole::Diff
75
75
 
76
76
  scan_options_change(table_name, from[:options], to[:options], table_delta)
77
77
  scan_definition_change(from[:definition], to[:definition], from[:indices], table_delta)
78
- scan_indices_change(from[:indices], to[:indices], to[:definition], table_delta)
78
+ scan_indices_change(from[:indices], to[:indices], to[:definition], table_delta, from[:options], to[:options])
79
79
 
80
80
  unless table_delta.empty?
81
81
  delta[:change] ||= {}
@@ -171,7 +171,7 @@ class Ridgepole::Diff
171
171
  end
172
172
  end
173
173
 
174
- def scan_indices_change(from, to, to_columns, table_delta)
174
+ def scan_indices_change(from, to, to_columns, table_delta, from_table_options, to_table_options)
175
175
  from = (from || {}).dup
176
176
  to = (to || {}).dup
177
177
  indices_delta = {}
@@ -197,7 +197,7 @@ class Ridgepole::Diff
197
197
  indices_delta[:add][index_name] = to_attrs
198
198
 
199
199
  unless @options[:merge]
200
- if from_attrs[:column_name].all? {|i| to_columns[i] }
200
+ if columns_all_include?(from_attrs[:column_name], to_columns.keys, to_table_options)
201
201
  indices_delta[:delete] ||= {}
202
202
  indices_delta[:delete][index_name] = from_attrs
203
203
  end
@@ -211,7 +211,7 @@ class Ridgepole::Diff
211
211
 
212
212
  unless @options[:merge]
213
213
  from.each do |index_name, from_attrs|
214
- if from_attrs[:column_name].all? {|i| to_columns[i] }
214
+ if columns_all_include?(from_attrs[:column_name], to_columns.keys, to_table_options)
215
215
  indices_delta[:delete] ||= {}
216
216
  indices_delta[:delete][index_name] = from_attrs
217
217
  end
@@ -246,4 +246,12 @@ class Ridgepole::Diff
246
246
  # XXX: MySQL only?
247
247
  opts[:using] = :btree unless opts.has_key?(:using)
248
248
  end
249
+
250
+ def columns_all_include?(expected_columns, actual_columns, table_options)
251
+ if table_options[:id] != false
252
+ actual_columns = actual_columns + [(table_options[:primary_key] || 'id').to_s]
253
+ end
254
+
255
+ expected_columns.all? {|i| actual_columns.include?(i) }
256
+ end
249
257
  end
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.4.4'
2
+ VERSION = '0.4.5'
3
3
  end
@@ -0,0 +1,116 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'when change index (same name)' do
3
+ let(:actual_dsl) {
4
+ <<-RUBY
5
+ create_table "salaries", force: true do |t|
6
+ t.integer "emp_no", null: false
7
+ t.integer "salary", null: false
8
+ t.date "from_date", null: false
9
+ t.date "to_date", null: false
10
+ end
11
+
12
+ add_index "salaries", ["emp_no", "id"], name: "emp_no", using: :btree
13
+ RUBY
14
+ }
15
+
16
+ let(:expected_dsl) {
17
+ <<-RUBY
18
+ create_table "salaries", force: true do |t|
19
+ t.integer "emp_no", null: false
20
+ t.integer "salary", null: false
21
+ t.date "from_date", null: false
22
+ t.date "to_date", null: false
23
+ end
24
+
25
+ add_index "salaries", ["salary", "id"], name: "emp_no", using: :btree
26
+ RUBY
27
+ }
28
+
29
+ before { subject.diff(actual_dsl).migrate }
30
+ subject { client }
31
+
32
+ it {
33
+ delta = subject.diff(expected_dsl)
34
+ expect(delta.differ?).to be_truthy
35
+ expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
36
+ delta.migrate
37
+ expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
38
+ }
39
+ end
40
+
41
+ context 'when change index (same name) (2)' do
42
+ let(:actual_dsl) {
43
+ <<-RUBY
44
+ create_table "salaries", id: false, force: true do |t|
45
+ t.integer "emp_no", null: false
46
+ t.integer "salary", null: false
47
+ t.date "from_date", null: false
48
+ t.date "to_date", null: false
49
+ end
50
+
51
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
52
+ RUBY
53
+ }
54
+
55
+ let(:expected_dsl) {
56
+ <<-RUBY
57
+ create_table "salaries", id: false, force: true do |t|
58
+ t.integer "emp_no", null: false
59
+ t.integer "salary", null: false
60
+ t.date "from_date", null: false
61
+ t.date "to_date", null: false
62
+ end
63
+
64
+ add_index "salaries", ["salary"], name: "emp_no", using: :btree
65
+ RUBY
66
+ }
67
+
68
+ before { subject.diff(actual_dsl).migrate }
69
+ subject { client }
70
+
71
+ it {
72
+ delta = subject.diff(expected_dsl)
73
+ expect(delta.differ?).to be_truthy
74
+ expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
75
+ delta.migrate
76
+ expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
77
+ }
78
+ end
79
+
80
+ context 'when change index (same name) (3)' do
81
+ let(:actual_dsl) {
82
+ <<-RUBY
83
+ create_table "salaries", primary_key: "emp_no", force: true do |t|
84
+ t.integer "salary", null: false
85
+ t.date "from_date", null: false
86
+ t.date "to_date", null: false
87
+ end
88
+
89
+ add_index "salaries", ["salary", "emp_no"], name: "emp_no", using: :btree
90
+ RUBY
91
+ }
92
+
93
+ let(:expected_dsl) {
94
+ <<-RUBY
95
+ create_table "salaries", primary_key: "emp_no", force: true do |t|
96
+ t.integer "salary", null: false
97
+ t.date "from_date", null: false
98
+ t.date "to_date", null: false
99
+ end
100
+
101
+ add_index "salaries", ["from_date", "emp_no"], name: "emp_no", using: :btree
102
+ RUBY
103
+ }
104
+
105
+ before { subject.diff(actual_dsl).migrate }
106
+ subject { client }
107
+
108
+ it {
109
+ delta = subject.diff(expected_dsl)
110
+ expect(delta.differ?).to be_truthy
111
+ expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
112
+ delta.migrate
113
+ expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
114
+ }
115
+ end
116
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridgepole
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
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-08-29 00:00:00.000000000 Z
11
+ date: 2014-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -136,6 +136,7 @@ files:
136
136
  - spec/migrate/migrate_change_column_spec.rb
137
137
  - spec/migrate/migrate_change_index2_spec.rb
138
138
  - spec/migrate/migrate_change_index3_spec.rb
139
+ - spec/migrate/migrate_change_index4_spec.rb
139
140
  - spec/migrate/migrate_change_index_spec.rb
140
141
  - spec/migrate/migrate_change_table_option_spec.rb
141
142
  - spec/migrate/migrate_create_index_spec.rb
@@ -186,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
187
  version: '0'
187
188
  requirements: []
188
189
  rubyforge_project:
189
- rubygems_version: 2.4.1
190
+ rubygems_version: 2.0.14
190
191
  signing_key:
191
192
  specification_version: 4
192
193
  summary: Ridgepole is a tool to manage DB schema.
@@ -204,6 +205,7 @@ test_files:
204
205
  - spec/migrate/migrate_change_column_spec.rb
205
206
  - spec/migrate/migrate_change_index2_spec.rb
206
207
  - spec/migrate/migrate_change_index3_spec.rb
208
+ - spec/migrate/migrate_change_index4_spec.rb
207
209
  - spec/migrate/migrate_change_index_spec.rb
208
210
  - spec/migrate/migrate_change_table_option_spec.rb
209
211
  - spec/migrate/migrate_create_index_spec.rb