ridgepole 0.6.5.beta8 → 0.6.5.beta9

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: 8adb357a8559da5ebe42cc89f6e8916c2c387c39
4
- data.tar.gz: f03ec0b86a0289241ebb64c42fa9eb0d3bdbdd6c
3
+ metadata.gz: 024470270cd96b582a5e6c0da47e8ca57bfae9a6
4
+ data.tar.gz: 870ce03f5efdf6d1cf888b35a22367524189fb39
5
5
  SHA512:
6
- metadata.gz: ab0dd2cc1ad788f6728407421f9b77ea81f641f8d8ea7d665a6fef4e6123c2dbb59db72bcdb01192d12c338622db356f0b82edeaf24df0be3a6b922606e65b3b
7
- data.tar.gz: 8fa5ba2e3478b9e83c3da2bb332452e717b57da509b54385de35c2ef6c6a4efe41d7de25b86155c15ed74ead0cc0be958f52bed291a635f8ce2c4c47c4a8fbaf
6
+ metadata.gz: abfb2f146e7b6d57a72fdf4735227cc9e82e4cb11a1859dfc9666bc7c5c5851539c7a2891edc47075b02c6a09099d911f50f320d26de71e3a845b10a21733cc5
7
+ data.tar.gz: bca1b088bd0c3943202d51b49ea35304ca7adef09cd5d52581df67527340dfcb86f8262339f1a239ac7d3ee70fadc9c6722c8945c9698d81c2666134ccec6c0c
data/.gitignore CHANGED
@@ -22,3 +22,4 @@ Schemafile
22
22
  _site/
23
23
  config.yml
24
24
  /gemfiles/*.lock
25
+ *.swp
data/docker-compose.yml CHANGED
@@ -5,7 +5,7 @@ mysql:
5
5
  environment:
6
6
  MYSQL_ROOT_PASSWORD: password
7
7
  postgres:
8
- image: "postgres:9.4"
8
+ image: "postgres:9.5"
9
9
  ports:
10
10
  - "5432:5432"
11
11
  environment:
@@ -218,7 +218,7 @@ class Ridgepole::Delta
218
218
  indices = attrs[:indices] || {}
219
219
 
220
220
  buf.puts(<<-EOS)
221
- create_table(#{table_name.inspect}, #{options.inspect}) do |t|
221
+ create_table(#{table_name.inspect}, #{inspect_options_include_default_proc(options)}) do |t|
222
222
  EOS
223
223
 
224
224
  definition.each do |column_name, column_attrs|
@@ -227,7 +227,7 @@ create_table(#{table_name.inspect}, #{options.inspect}) do |t|
227
227
  normalize_limit(column_type, column_options)
228
228
 
229
229
  buf.puts(<<-EOS)
230
- t.#{column_type}(#{column_name.inspect}, #{inspect_column_options(column_options)})
230
+ t.#{column_type}(#{column_name.inspect}, #{inspect_options_include_default_proc(column_options)})
231
231
  EOS
232
232
  end
233
233
 
@@ -320,11 +320,11 @@ drop_table(#{table_name.inspect})
320
320
 
321
321
  if @options[:bulk_change]
322
322
  buf.puts(<<-EOS)
323
- t.column(#{column_name.inspect}, #{type.inspect}, #{inspect_column_options(options)})
323
+ t.column(#{column_name.inspect}, #{type.inspect}, #{inspect_options_include_default_proc(options)})
324
324
  EOS
325
325
  else
326
326
  buf.puts(<<-EOS)
327
- add_column(#{table_name.inspect}, #{column_name.inspect}, #{type.inspect}, #{inspect_column_options(options)})
327
+ add_column(#{table_name.inspect}, #{column_name.inspect}, #{type.inspect}, #{inspect_options_include_default_proc(options)})
328
328
  EOS
329
329
  end
330
330
  end
@@ -347,11 +347,11 @@ rename_column(#{table_name.inspect}, #{from_column_name.inspect}, #{to_column_na
347
347
 
348
348
  if @options[:bulk_change]
349
349
  buf.puts(<<-EOS)
350
- t.change(#{column_name.inspect}, #{type.inspect}, #{inspect_column_options(options)})
350
+ t.change(#{column_name.inspect}, #{type.inspect}, #{inspect_options_include_default_proc(options)})
351
351
  EOS
352
352
  else
353
353
  buf.puts(<<-EOS)
354
- change_column(#{table_name.inspect}, #{column_name.inspect}, #{type.inspect}, #{inspect_column_options(options)})
354
+ change_column(#{table_name.inspect}, #{column_name.inspect}, #{type.inspect}, #{inspect_options_include_default_proc(options)})
355
355
  EOS
356
356
  end
357
357
  end
@@ -446,7 +446,7 @@ remove_foreign_key(#{table_name.inspect}, #{target.inspect})
446
446
  column_options[:limit] ||= default_limit if default_limit
447
447
  end
448
448
 
449
- def inspect_column_options(options)
449
+ def inspect_options_include_default_proc(options)
450
450
  options = options.dup
451
451
 
452
452
  if options[:default].kind_of?(Proc)
@@ -94,6 +94,11 @@ class Ridgepole::Diff
94
94
  end
95
95
 
96
96
  def scan_options_change(table_name, from, to, table_delta)
97
+ from = (from || {}).dup
98
+ to = (to || {}).dup
99
+
100
+ normalize_default_proc_options!(from, to)
101
+
97
102
  unless from == to
98
103
  Ridgepole::Logger.instance.warn("[WARNING] No difference of schema configuration for table `#{table_name}` but table options differ.")
99
104
  Ridgepole::Logger.instance.warn(" from: #{from}")
@@ -357,13 +362,15 @@ class Ridgepole::Diff
357
362
  def compare_column_attrs(attrs1, attrs2)
358
363
  attrs1 = attrs1.merge(:options => attrs1.fetch(:options, {}).dup)
359
364
  attrs2 = attrs2.merge(:options => attrs2.fetch(:options, {}).dup)
365
+ normalize_default_proc_options!(attrs1[:options], attrs2[:options])
366
+ attrs1 == attrs2
367
+ end
360
368
 
361
- if attrs1[:options][:default].kind_of?(Proc) and attrs2[:options][:default].kind_of?(Proc)
362
- attrs1[:options][:default] = attrs1[:options][:default].call
363
- attrs2[:options][:default] = attrs2[:options][:default].call
369
+ def normalize_default_proc_options!(opts1, opts2)
370
+ if opts1[:default].kind_of?(Proc) and opts2[:default].kind_of?(Proc)
371
+ opts1[:default] = opts1[:default].call
372
+ opts2[:default] = opts2[:default].call
364
373
  end
365
-
366
- attrs1 == attrs2
367
374
  end
368
375
 
369
376
  def diff_inspect(obj1, obj2, options = {})
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.6.5.beta8'
2
+ VERSION = '0.6.5.beta9'
3
3
  end
@@ -0,0 +1,92 @@
1
+ describe 'Ridgepole::Client#diff -> migrate', condition: [:activerecord_5] do
2
+ context 'when create table with default proc' do
3
+ let(:dsl) { '' }
4
+
5
+ let(:actual_dsl) {
6
+ erbh(<<-EOS)
7
+ create_table "users", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
8
+ t.string "name"
9
+ t.datetime "created_at", null: false
10
+ t.datetime "updated_at", null: false
11
+ end
12
+ EOS
13
+ }
14
+
15
+ let(:expected_dsl) { dsl }
16
+
17
+ before { subject.diff(actual_dsl).migrate }
18
+ subject { client }
19
+
20
+ it {
21
+ expect(Ridgepole::Logger.instance).to_not receive(:warn)
22
+
23
+ delta = subject.diff(expected_dsl)
24
+ expect(delta.differ?).to be_truthy
25
+ expect(subject.dump).to match_fuzzy actual_dsl
26
+ delta.migrate
27
+ expect(subject.dump).to match_fuzzy expected_dsl
28
+ }
29
+ end
30
+
31
+ context 'when create table with default proc without change' do
32
+ let(:dsl) {
33
+ erbh(<<-EOS)
34
+ create_table "users", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
35
+ t.string "name"
36
+ t.datetime "created_at", null: false
37
+ t.datetime "updated_at", null: false
38
+ end
39
+ EOS
40
+ }
41
+
42
+ before { subject.diff(dsl).migrate }
43
+ subject { client }
44
+
45
+ it {
46
+ expect(Ridgepole::Logger.instance).to_not receive(:warn)
47
+
48
+ delta = subject.diff(dsl)
49
+ expect(delta.differ?).to be_falsey
50
+ expect(subject.dump).to match_fuzzy dsl
51
+ delta.migrate
52
+ expect(subject.dump).to match_fuzzy dsl
53
+ }
54
+ end
55
+
56
+ context 'when migrate table with default proc' do
57
+ let(:actual_dsl) {
58
+ erbh(<<-EOS)
59
+ create_table "users", id: :uuid, default: -> { "uuid_generate_v1()" }, force: :cascade do |t|
60
+ t.string "name"
61
+ t.datetime "created_at", null: false
62
+ t.datetime "updated_at", null: false
63
+ end
64
+ EOS
65
+ }
66
+
67
+ let(:expected_dsl) {
68
+ erbh(<<-EOS)
69
+ create_table "users", id: :uuid, default: -> { "uuid_generate_v4()" }, force: :cascade do |t|
70
+ t.string "name"
71
+ t.datetime "created_at", null: false
72
+ t.datetime "updated_at", null: false
73
+ end
74
+ EOS
75
+ }
76
+
77
+ before { subject.diff(actual_dsl).migrate }
78
+ subject { client }
79
+
80
+ it {
81
+ expect(Ridgepole::Logger.instance).to receive(:warn).with("[WARNING] No difference of schema configuration for table `users` but table options differ.")
82
+ expect(Ridgepole::Logger.instance).to receive(:warn).with(erbh(%Q! from: {:id=>:uuid, :default=>"uuid_generate_v1()"}!))
83
+ expect(Ridgepole::Logger.instance).to receive(:warn).with(erbh(%Q! to: {:id=>:uuid, :default=>"uuid_generate_v4()"}!))
84
+
85
+ delta = subject.diff(expected_dsl)
86
+ expect(delta.differ?).to be_falsey
87
+ expect(subject.dump).to match_fuzzy actual_dsl
88
+ delta.migrate
89
+ expect(subject.dump).to match_fuzzy actual_dsl
90
+ }
91
+ end
92
+ end
@@ -1,6 +1,7 @@
1
1
  CREATE EXTENSION hstore;
2
2
  CREATE EXTENSION ltree;
3
3
  CREATE EXTENSION citext;
4
+ CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
4
5
 
5
6
  DO $$
6
7
  DECLARE
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.5.beta8
4
+ version: 0.6.5.beta9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-15 00:00:00.000000000 Z
11
+ date: 2016-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -323,6 +323,7 @@ files:
323
323
  - spec/postgresql/migrate/migrate_change_column_spec.rb
324
324
  - spec/postgresql/migrate/migrate_change_index_spec.rb
325
325
  - spec/postgresql/migrate/migrate_create_table_spec.rb
326
+ - spec/postgresql/migrate/migrate_create_table_with_default_proc_spec.rb
326
327
  - spec/postgresql/migrate/migrate_drop_column_spec.rb
327
328
  - spec/postgresql/migrate/migrate_drop_column_with_index_spec.rb
328
329
  - spec/postgresql/migrate/migrate_drop_index_spec.rb
@@ -451,6 +452,7 @@ test_files:
451
452
  - spec/postgresql/migrate/migrate_change_column_spec.rb
452
453
  - spec/postgresql/migrate/migrate_change_index_spec.rb
453
454
  - spec/postgresql/migrate/migrate_create_table_spec.rb
455
+ - spec/postgresql/migrate/migrate_create_table_with_default_proc_spec.rb
454
456
  - spec/postgresql/migrate/migrate_drop_column_spec.rb
455
457
  - spec/postgresql/migrate/migrate_drop_column_with_index_spec.rb
456
458
  - spec/postgresql/migrate/migrate_drop_index_spec.rb