ridgepole 0.6.3.beta → 0.6.3.beta2

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: 1e0f9257b25ebf5d941734433df6dd1866b5b0e9
4
- data.tar.gz: 84097da34f74782d0b1ca02bdd29842ca9167b52
3
+ metadata.gz: 8de78f0c1a68e3c21972a27b2181a42534920567
4
+ data.tar.gz: 81b644deea5beba444ad3f4dcd79d9e816a3398f
5
5
  SHA512:
6
- metadata.gz: d4ba059da276af54510fc6e9b8c7932f3f3060b033e736bb1dfda339fdc26f534f227ae0d5071b263044d83a6aac13dfa95d68d67e79745c3f92c8983d138dce
7
- data.tar.gz: b13e98c9181aca062630f96cbd79f4b87e83cb69dcb48cdf8217b90dc1c41bd7a02566851a41c5158f054d3c4d54ac82c6c43beb7907baa803b20854e6e7234d
6
+ metadata.gz: fe51fa0e32f37492ab00ca349c6102d9e1db6e185c958ccbdca63375194f832ddb194f6d4c3280bf9f85e5de909d87c9b225b685afc0c793d66f096c3c103350
7
+ data.tar.gz: de8500f55d963d31cf18589dfe238fa1cc6e6b2a327c8707ed6faa2d04cdb8315138d2ef9503b2ed8b8c9e5ae1f7e0cb5ba092f8ebecd17abb3ad07d98fa7bfb
@@ -243,9 +243,11 @@ class Ridgepole::Diff
243
243
  end
244
244
 
245
245
  def target?(table_name)
246
- if @options[:ignore_tables] and @options[:ignore_tables].any? {|i| i =~ table_name }
246
+ if @options[:tables] and @options[:tables].include?(table_name)
247
+ true
248
+ elsif @options[:ignore_tables] and @options[:ignore_tables].any? {|i| i =~ table_name }
247
249
  false
248
- elsif @options[:tables] and not @options[:tables].include?(table_name)
250
+ elsif @options[:tables]
249
251
  false
250
252
  else
251
253
  true
@@ -18,7 +18,7 @@ class Ridgepole::Dumper
18
18
 
19
19
  if ignore_tables
20
20
  conn.tables.each do |tbl|
21
- if ignore_tables.any? {|i| i =~ tbl }
21
+ if ignore_tables.any? {|i| i =~ tbl } and not (target_tables and target_tables.include?(tbl))
22
22
  ActiveRecord::SchemaDumper.ignore_tables << tbl
23
23
  end
24
24
  end
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.6.3.beta'
2
+ VERSION = '0.6.3.beta2'
3
3
  end
@@ -153,5 +153,179 @@ describe 'Ridgepole::Client#diff -> migrate' do
153
153
  RUBY
154
154
  }
155
155
  end
156
+
157
+ context 'when with ignore tables option (target and ignore)' do
158
+ let(:current_schema) {
159
+ <<-RUBY
160
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
161
+ t.date "birth_date", null: false
162
+ t.string "first_name", limit: 14, null: false
163
+ t.string "last_name", limit: 16, null: false
164
+ t.string "gender", limit: 1, null: false
165
+ t.date "hire_date", null: false
166
+ end
167
+
168
+ create_table "salaries", id: false, force: :cascade do |t|
169
+ t.integer "emp_no", null: false
170
+ t.integer "salary", null: false
171
+ t.date "from_date", null: false
172
+ t.date "to_date", null: false
173
+ end
174
+
175
+ add_index "salaries", ["salary"], name: "emp_no", using: :btree
176
+ RUBY
177
+ }
178
+
179
+ let(:dsl) {
180
+ <<-RUBY
181
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
182
+ t.date "birth_date", null: false
183
+ t.string "first_name", limit: 15, null: false
184
+ t.string "last_name", limit: 16, null: false
185
+ t.string "gender", limit: 1, null: false
186
+ t.date "hire_date", null: false
187
+ end
188
+
189
+ create_table "salaries", id: false, force: :cascade do |t|
190
+ t.integer "emp_no", null: false
191
+ t.integer "salary", null: false
192
+ t.date "from_date", null: false
193
+ t.date "to_date", null: false
194
+ end
195
+
196
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
197
+ RUBY
198
+ }
199
+
200
+ let(:before_dsl) {
201
+ <<-RUBY
202
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
203
+ t.date "birth_date", null: false
204
+ t.string "first_name", limit: 14, null: false
205
+ t.string "last_name", limit: 16, null: false
206
+ t.string "gender", limit: 1, null: false
207
+ t.date "hire_date", null: false
208
+ end
209
+ RUBY
210
+ }
211
+
212
+ let(:after_dsl) {
213
+ <<-RUBY
214
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
215
+ t.date "birth_date", null: false
216
+ t.string "first_name", limit: 15, null: false
217
+ t.string "last_name", limit: 16, null: false
218
+ t.string "gender", limit: 1, null: false
219
+ t.date "hire_date", null: false
220
+ end
221
+ RUBY
222
+ }
223
+
224
+ before { subject.diff(current_schema).migrate }
225
+ subject { client(tables: ["employees"], ignore_tables: [/^.+$/] ) }
226
+
227
+ it {
228
+ delta = subject.diff(dsl)
229
+ expect(delta.differ?).to be_truthy
230
+ expect(subject.dump).to eq before_dsl.strip_heredoc.strip
231
+ delta.migrate
232
+ expect(subject.dump).to eq after_dsl.strip_heredoc.strip
233
+ }
234
+
235
+ it {
236
+ delta = Ridgepole::Client.diff(current_schema, dsl, ignore_tables: [/^salaries$/], reverse: true, enable_mysql_awesome: true)
237
+ expect(delta.differ?).to be_truthy
238
+ expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
239
+ change_column("employees", "first_name", :string, {:limit=>14, :null=>false, :default=>nil, :unsigned=>false})
240
+ RUBY
241
+ }
242
+ end
243
+
244
+ context 'when with ignore tables option (target)' do
245
+ let(:current_schema) {
246
+ <<-RUBY
247
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
248
+ t.date "birth_date", null: false
249
+ t.string "first_name", limit: 14, null: false
250
+ t.string "last_name", limit: 16, null: false
251
+ t.string "gender", limit: 1, null: false
252
+ t.date "hire_date", null: false
253
+ end
254
+
255
+ create_table "salaries", id: false, force: :cascade do |t|
256
+ t.integer "emp_no", null: false
257
+ t.integer "salary", null: false
258
+ t.date "from_date", null: false
259
+ t.date "to_date", null: false
260
+ end
261
+
262
+ add_index "salaries", ["salary"], name: "emp_no", using: :btree
263
+ RUBY
264
+ }
265
+
266
+ let(:dsl) {
267
+ <<-RUBY
268
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
269
+ t.date "birth_date", null: false
270
+ t.string "first_name", limit: 15, null: false
271
+ t.string "last_name", limit: 16, null: false
272
+ t.string "gender", limit: 1, null: false
273
+ t.date "hire_date", null: false
274
+ end
275
+
276
+ create_table "salaries", id: false, force: :cascade do |t|
277
+ t.integer "emp_no", null: false
278
+ t.integer "salary", null: false
279
+ t.date "from_date", null: false
280
+ t.date "to_date", null: false
281
+ end
282
+
283
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
284
+ RUBY
285
+ }
286
+
287
+ let(:before_dsl) {
288
+ <<-RUBY
289
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
290
+ t.date "birth_date", null: false
291
+ t.string "first_name", limit: 14, null: false
292
+ t.string "last_name", limit: 16, null: false
293
+ t.string "gender", limit: 1, null: false
294
+ t.date "hire_date", null: false
295
+ end
296
+ RUBY
297
+ }
298
+
299
+ let(:after_dsl) {
300
+ <<-RUBY
301
+ create_table "employees", primary_key: "emp_no", force: :cascade do |t|
302
+ t.date "birth_date", null: false
303
+ t.string "first_name", limit: 15, null: false
304
+ t.string "last_name", limit: 16, null: false
305
+ t.string "gender", limit: 1, null: false
306
+ t.date "hire_date", null: false
307
+ end
308
+ RUBY
309
+ }
310
+
311
+ before { subject.diff(current_schema).migrate }
312
+ subject { client(tables: ["employees"]) }
313
+
314
+ it {
315
+ delta = subject.diff(dsl)
316
+ expect(delta.differ?).to be_truthy
317
+ expect(subject.dump).to eq before_dsl.strip_heredoc.strip
318
+ delta.migrate
319
+ expect(subject.dump).to eq after_dsl.strip_heredoc.strip
320
+ }
321
+
322
+ it {
323
+ delta = Ridgepole::Client.diff(current_schema, dsl, ignore_tables: [/^salaries$/], reverse: true, enable_mysql_awesome: true)
324
+ expect(delta.differ?).to be_truthy
325
+ expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
326
+ change_column("employees", "first_name", :string, {:limit=>14, :null=>false, :default=>nil, :unsigned=>false})
327
+ RUBY
328
+ }
329
+ end
156
330
  end
157
331
  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.6.3.beta
4
+ version: 0.6.3.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-11 00:00:00.000000000 Z
11
+ date: 2015-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord