ridgepole 0.6.4 → 0.6.5.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +18 -8
  4. data/Appraisals +8 -0
  5. data/README.md +26 -2
  6. data/docker-compose.yml +12 -0
  7. data/gemfiles/activerecord_4.2.gemfile +8 -0
  8. data/gemfiles/activerecord_5.0.gemfile +7 -0
  9. data/lib/ridgepole/diff.rb +3 -1
  10. data/lib/ridgepole/version.rb +1 -1
  11. data/ridgepole.gemspec +6 -2
  12. data/spec/cli_helper.rb +63 -0
  13. data/spec/mysql/bigint_pk/bigint_pk_spec.rb +45 -0
  14. data/spec/mysql/cli/config_spec.rb +0 -2
  15. data/spec/mysql/cli/ridgepole_spec.rb +58 -56
  16. data/spec/mysql/collation/collation_spec.rb +134 -138
  17. data/spec/mysql/diff/diff2_spec.rb +1 -3
  18. data/spec/mysql/diff/diff_spec.rb +1 -3
  19. data/spec/mysql/dump/dump_class_method_spec.rb +29 -11
  20. data/spec/mysql/dump/dump_some_tables_spec.rb +18 -8
  21. data/spec/mysql/dump/dump_spec.rb +28 -10
  22. data/spec/mysql/dump/dump_without_table_options_spec.rb +29 -33
  23. data/spec/mysql/fk/migrate_change_fk_spec.rb +2 -4
  24. data/spec/mysql/fk/migrate_create_fk_spec.rb +39 -29
  25. data/spec/mysql/fk/migrate_drop_fk_spec.rb +20 -22
  26. data/spec/mysql/migrate/check_orphan_index_spec.rb +2 -4
  27. data/spec/mysql/migrate/migrate_add_column2_spec.rb +33 -26
  28. data/spec/mysql/migrate/migrate_add_column_spec.rb +32 -22
  29. data/spec/mysql/migrate/migrate_add_column_with_alter_extra_spec.rb +26 -16
  30. data/spec/mysql/migrate/migrate_add_column_with_script_spec.rb +27 -17
  31. data/spec/mysql/migrate/migrate_change_column2_spec.rb +26 -16
  32. data/spec/mysql/migrate/migrate_change_column3_spec.rb +54 -44
  33. data/spec/mysql/migrate/migrate_change_column4_spec.rb +8 -10
  34. data/spec/mysql/migrate/migrate_change_column5_spec.rb +32 -22
  35. data/spec/mysql/migrate/migrate_change_column6_spec.rb +28 -30
  36. data/spec/mysql/migrate/migrate_change_column_default_spec.rb +34 -36
  37. data/spec/mysql/migrate/migrate_change_column_float_spec.rb +10 -12
  38. data/spec/mysql/migrate/migrate_change_column_spec.rb +41 -29
  39. data/spec/mysql/migrate/migrate_change_index2_spec.rb +12 -14
  40. data/spec/mysql/migrate/migrate_change_index3_spec.rb +24 -26
  41. data/spec/mysql/migrate/migrate_change_index4_spec.rb +34 -24
  42. data/spec/mysql/migrate/migrate_change_index5_spec.rb +26 -16
  43. data/spec/mysql/migrate/migrate_change_index6_spec.rb +38 -28
  44. data/spec/mysql/migrate/migrate_change_index_spec.rb +39 -29
  45. data/spec/mysql/migrate/migrate_change_table_option_spec.rb +26 -13
  46. data/spec/mysql/migrate/migrate_create_index2_spec.rb +30 -20
  47. data/spec/mysql/migrate/migrate_create_index_spec.rb +28 -18
  48. data/spec/mysql/migrate/migrate_create_table_spec.rb +24 -14
  49. data/spec/mysql/migrate/migrate_create_table_with_options_spec.rb +4 -6
  50. data/spec/mysql/migrate/migrate_create_table_with_script_spec.rb +23 -13
  51. data/spec/mysql/migrate/migrate_drop_column_and_index2_spec.rb +32 -22
  52. data/spec/mysql/migrate/migrate_drop_column_and_index_spec.rb +35 -25
  53. data/spec/mysql/migrate/migrate_drop_column_spec.rb +36 -26
  54. data/spec/mysql/migrate/migrate_drop_index_spec.rb +28 -18
  55. data/spec/mysql/migrate/migrate_drop_table_spec.rb +29 -19
  56. data/spec/mysql/migrate/migrate_duplicate_index_spec.rb +2 -4
  57. data/spec/mysql/migrate/migrate_duplicate_table_spec.rb +2 -4
  58. data/spec/mysql/migrate/migrate_empty_spec.rb +24 -14
  59. data/spec/mysql/migrate/migrate_execute_spec.rb +78 -65
  60. data/spec/mysql/migrate/migrate_log_file_spec.rb +22 -12
  61. data/spec/mysql/migrate/migrate_merge_mode_spec.rb +31 -21
  62. data/spec/mysql/migrate/migrate_noop_spec.rb +55 -45
  63. data/spec/mysql/migrate/migrate_rename_column_spec.rb +38 -28
  64. data/spec/mysql/migrate/migrate_rename_table_spec.rb +43 -33
  65. data/spec/mysql/migrate/migrate_same_default_null_spec.rb +28 -18
  66. data/spec/mysql/migrate/migrate_same_spec.rb +26 -12
  67. data/spec/mysql/migrate/migrate_script_error_spec.rb +3 -5
  68. data/spec/mysql/migrate/migrate_skip_rename_column_spec.rb +30 -20
  69. data/spec/mysql/migrate/migrate_skip_rename_table_spec.rb +30 -20
  70. data/spec/mysql/migrate/migrate_with_ignore_tables_spec.rb +44 -46
  71. data/spec/mysql/migrate/migrate_with_pre_post_query_spec.rb +6 -8
  72. data/spec/mysql/migrate/migrate_with_tables_spec.rb +20 -22
  73. data/spec/mysql/migrate_/migrate_create_index_with_alter_spec.rb +22 -12
  74. data/spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb +22 -12
  75. data/spec/mysql/~default_name_fk/migrate_change_fk_spec.rb +8 -10
  76. data/spec/mysql/~default_name_fk/migrate_create_fk_spec.rb +39 -29
  77. data/spec/mysql/~default_name_fk/migrate_drop_fk_spec.rb +20 -22
  78. data/spec/postgresql/diff/diff_spec.rb +7 -9
  79. data/spec/postgresql/dump/dump_spec.rb +2 -4
  80. data/spec/postgresql/fk/migrate_change_fk_spec.rb +8 -10
  81. data/spec/postgresql/fk/migrate_create_fk_spec.rb +24 -26
  82. data/spec/postgresql/fk/migrate_drop_fk_spec.rb +21 -23
  83. data/spec/postgresql/migrate/migrate_add_column_spec.rb +19 -22
  84. data/spec/postgresql/migrate/migrate_change_column_default_spec.rb +6 -8
  85. data/spec/postgresql/migrate/migrate_change_column_spec.rb +17 -19
  86. data/spec/postgresql/migrate/migrate_change_index_spec.rb +11 -13
  87. data/spec/postgresql/migrate/migrate_create_table_spec.rb +6 -9
  88. data/spec/postgresql/migrate/migrate_drop_column_spec.rb +12 -14
  89. data/spec/postgresql/migrate/migrate_drop_column_with_index_spec.rb +12 -14
  90. data/spec/postgresql/migrate/migrate_drop_index_spec.rb +10 -12
  91. data/spec/postgresql/migrate/migrate_drop_table_spec.rb +7 -9
  92. data/spec/postgresql/migrate/migrate_ext_cols_spec.rb +6 -8
  93. data/spec/postgresql/migrate/migrate_rename_column_spec.rb +12 -14
  94. data/spec/postgresql/migrate/migrate_rename_table_spec.rb +14 -16
  95. data/spec/postgresql/migrate/migrate_same_spec.rb +4 -6
  96. data/spec/postgresql/~default_name_fk/migrate_change_fk_spec.rb +8 -10
  97. data/spec/postgresql/~default_name_fk/migrate_create_fk_spec.rb +24 -26
  98. data/spec/postgresql/~default_name_fk/migrate_drop_fk_spec.rb +20 -22
  99. data/spec/processing_for_travis.rb +9 -0
  100. data/spec/spec_condition.rb +24 -0
  101. data/spec/spec_const.rb +18 -0
  102. data/spec/spec_helper.rb +125 -196
  103. data/spec/string_ext.rb +0 -13
  104. metadata +106 -32
  105. data/spec/mysql/bigint_pk/bigint_pkspec.rb +0 -47
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4c53abe50208291f89c751bb47e3b9db9b524c45
4
- data.tar.gz: 85babaf19329e4ccfe3ec9131b6a17cc548540c1
3
+ metadata.gz: 1afe38c33e11fab6506b3b4803488aec6058ddfb
4
+ data.tar.gz: 84819c79b7e1d2756f84682f2749ee9c51f09181
5
5
  SHA512:
6
- metadata.gz: 6913c4d2e9b388486f4ca9ec3eb1ccac6d86e5ac62d573c3fea97ed921415085fd1191347c55da44baeb7d1fa1ad936907e41e8707462c2f93c8edaf44c67f45
7
- data.tar.gz: cca33607a613f756c5d0d596a83bbdc6b63e2371e2ebf08951fdb9b03749de9dfc928f1d8fe9bc5e41b7139e60a25ec93adf07b844b3f7015f2ed2243e2b9381
6
+ metadata.gz: a1c834a74ee2b5f861f0a29fccb41b5411dfb9013aeebc9823ae5232a5994ee6b1b14075a1a74b85af005df6f9c4f799f375b7ac3ffd39ba8e1d1a9448404db5
7
+ data.tar.gz: 7153c5acdb81e28810c40049490a321ade6bd2f986b0d4a64435cb227ee1d73dd63480e5c8be0af2691af7333775d5664f4852f7281cd24c7091e2bd70fea99d
data/.gitignore CHANGED
@@ -21,3 +21,4 @@ Schemafile
21
21
  *.schema
22
22
  _site/
23
23
  config.yml
24
+ /gemfiles/*.lock
data/.travis.yml CHANGED
@@ -1,26 +1,36 @@
1
1
  dist: trusty
2
2
  sudo: required
3
3
  language: ruby
4
- cache: bundler
4
+ cache:
5
+ - bundler
6
+ - apt
5
7
  rvm:
6
- - 2.0.0
7
- - 2.1.8
8
8
  - 2.2.4
9
9
  - 2.3.0
10
10
  before_install:
11
11
  - gem install bundler
12
+ - sudo service postgresql stop
13
+ before_script:
14
+ - docker-compose up -d
15
+ - function mysql_ping { mysqladmin -u root -h 127.0.0.1 -ppassword ping > /dev/null 2> /dev/null; }
16
+ - function pg_ping { PGPASSWORD=password pg_isready -U postgres -h 127.0.0.1 > /dev/null 2> /dev/null; }
17
+ - for i in {1..60}; do mysql_ping && break; sleep 1; done
18
+ - for i in {1..60}; do pg_ping && break; sleep 1; done
12
19
  script:
13
- - bundle install
14
20
  - bundle exec rake
21
+ gemfile:
22
+ - gemfiles/activerecord_4.2.gemfile
23
+ #- gemfiles/activerecord_5.0.gemfile
15
24
  env:
16
25
  matrix:
17
26
  - ENABLE_MYSQL_AWESOME=0
18
27
  - ENABLE_MYSQL_AWESOME=1
19
28
  - POSTGRESQL=1
29
+ services:
30
+ - docker
20
31
  addons:
21
- postgresql: "9.4"
22
32
  apt:
23
33
  packages:
24
- - mysql-server-5.6
25
- - mysql-client-core-5.6
26
- - mysql-client-5.6
34
+ - mysql-client-core-5.6
35
+ - mysql-client-5.6
36
+ - postgresql-client-9.4
data/Appraisals ADDED
@@ -0,0 +1,8 @@
1
+ appraise "activerecord-4.2" do
2
+ gem 'activerecord', '~> 4.2.0'
3
+ gem 'activerecord-mysql-awesome', '>= 0.0.7'
4
+ end
5
+
6
+ appraise 'activerecord-5.0' do
7
+ gem 'activerecord', '>= 5.0.0.beta3'
8
+ end
data/README.md CHANGED
@@ -50,6 +50,8 @@ It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.
50
50
  * Support `t.index` ([pull#64](https://github.com/winebarrel/ridgepole/pull/64))
51
51
  * Remove migration_comments
52
52
  * Fix foreign key apply order
53
+ * `>= 0.6.5`
54
+ * Fix rails version '>= 4.2', '< 6'
53
55
 
54
56
  ## Installation
55
57
 
@@ -307,13 +309,35 @@ $ ridgepole -a -c database.yml --mysql-use-alter --debug
307
309
  Apply `Schemafile`
308
310
  ...
309
311
  -- remove_index("dept_manager", {:name=>"emp_no"})
310
- (19.2ms) ALTER TABLE `dept_manager` DROP INDEX `emp_no`,LOCK=NONE
312
+ (19.2ms) ALTER TABLE `dept_manager` DROP INDEX `emp_no`
311
313
  -> 0.0200s
312
314
  -- add_index("dept_manager", ["emp_no"], {:name=>"emp_no2", :using=>:btree})
313
- (23.4ms) ALTER TABLE `dept_manager` ADD INDEX `emp_no2` USING btree (`emp_no`),LOCK=NONE
315
+ (23.4ms) ALTER TABLE `dept_manager` ADD INDEX `emp_no2` USING btree (`emp_no`)
314
316
  -> 0.0243s
315
317
  ```
316
318
 
319
+ ## Running tests
320
+
321
+ ```sh
322
+ docker-compose up -d
323
+ bundle install
324
+ bundle exec appraisal install
325
+ bundle exec appraisal activerecord-4.2 rake
326
+ # ENABLE_MYSQL_AWESOME=1 bundle exec appraisal activerecord-4.2 rake
327
+ # POSTGRESQL=1 bundle exec appraisal activerecord-4.2 rake
328
+ ```
329
+
330
+ **Notice:** mysql-client/postgresql-client is required.
331
+
332
+ ### on OS X (docker-machine & VirtualBox)
333
+
334
+ Port forwarding is required.
335
+
336
+ ```sh
337
+ VBoxManage controlvm default natpf1 "mysql,tcp,127.0.0.1,3306,,3306"
338
+ VBoxManage controlvm default natpf1 "psql,tcp,127.0.0.1,5432,,5432"
339
+ ```
340
+
317
341
  ## Demo
318
342
 
319
343
  * [asciinema.org/a/9349](https://asciinema.org/a/9349)
@@ -0,0 +1,12 @@
1
+ mysql:
2
+ image: "mysql:5.6"
3
+ ports:
4
+ - "3306:3306"
5
+ environment:
6
+ MYSQL_ROOT_PASSWORD: password
7
+ postgres:
8
+ image: "postgres:9.4"
9
+ ports:
10
+ - "5432:5432"
11
+ environment:
12
+ POSTGRES_PASSWORD: password
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 4.2.0"
6
+ gem "activerecord-mysql-awesome", ">= 0.0.7"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", ">= 5.0.0.beta3"
6
+
7
+ gemspec :path => "../"
@@ -88,7 +88,9 @@ class Ridgepole::Diff
88
88
 
89
89
  def scan_options_change(table_name, from, to, table_delta)
90
90
  unless from == to
91
- Ridgepole::Logger.instance.warn("[WARNING] No difference of schema configuration for table `#{table_name}`. (if you changed some options, please reconfirm your Schemafile)")
91
+ Ridgepole::Logger.instance.warn("[WARNING] No difference of schema configuration for table `#{table_name}` but table options differ.")
92
+ Ridgepole::Logger.instance.warn(" from: #{from}")
93
+ Ridgepole::Logger.instance.warn(" to: #{to}")
92
94
  end
93
95
  end
94
96
 
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.6.4'
2
+ VERSION = '0.6.5.beta'
3
3
  end
data/ridgepole.gemspec CHANGED
@@ -18,12 +18,16 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'activerecord', '~> 4.2.1'
21
+ spec.add_dependency 'activerecord', '>= 4.2', '< 6'
22
22
  spec.add_development_dependency 'bundler'
23
23
  spec.add_development_dependency 'rake'
24
24
  spec.add_development_dependency 'rspec', '>= 3.0.0'
25
25
  spec.add_development_dependency 'mysql2', '~> 0.3.20'
26
26
  spec.add_development_dependency 'pg'
27
27
  spec.add_development_dependency 'coveralls'
28
- spec.add_development_dependency 'activerecord-mysql-awesome', '>= 0.0.7'
28
+ spec.add_development_dependency 'appraisal'
29
+ spec.add_development_dependency 'rspec-match_fuzzy', '>= 0.1.2'
30
+ spec.add_development_dependency 'erbh'
31
+ spec.add_development_dependency 'hash_modern_inspect', '>= 0.1.1'
32
+ spec.add_development_dependency 'hash_order_helper', '>= 0.1.1'
29
33
  end
@@ -0,0 +1,63 @@
1
+ module CLIHelper
2
+ def default_cli_hook
3
+ <<-RUBY.strip_heredoc
4
+ require 'ridgepole'
5
+
6
+ class Ridgepole::Delta
7
+ def initialize(*args);
8
+ end
9
+ def migrate(*args)
10
+ puts "Ridgepole::Delta#migrate"
11
+ [#{differ}, "create_table :table do\\nend"]
12
+ end
13
+ def script
14
+ puts "Ridgepole::Delta#script"
15
+
16
+ "create_table :table do\\nend"
17
+ end
18
+ def differ?
19
+ puts "Ridgepole::Delta#differ?"
20
+ #{differ}
21
+ end
22
+ end
23
+
24
+ class Ridgepole::Client
25
+ def initialize(*args)
26
+ puts "Ridgepole::Client#initialize([\#{args.map {|i| i.kind_of?(File) ? i.path : i.inspect}.join(', ')}])"
27
+ end
28
+ def dump
29
+ puts "Ridgepole::Client#dump"
30
+ end
31
+ def diff(*args)
32
+ puts "Ridgepole::Client#diff"
33
+ Ridgepole::Delta.new
34
+ end
35
+ class << self
36
+ def diff(*args)
37
+ puts "Ridgepole::Client.diff([\#{args.map {|i| i.kind_of?(File) ? i.path : i.inspect}.join(', ')}])"
38
+ Ridgepole::Delta.new
39
+ end
40
+ def dump(args)
41
+ puts "Ridgepole::Client.dump"
42
+ end
43
+ end
44
+ end
45
+ RUBY
46
+ end
47
+
48
+ def run_cli(options = {})
49
+ args = options[:args] || []
50
+ hook = options[:hook] || default_cli_hook
51
+ path = File.expand_path('../../bin/ridgepole', __FILE__)
52
+
53
+ Tempfile.open(["#{File.basename __FILE__}.#{$$}", '.rb']) do |f|
54
+ f.puts(hook)
55
+ f.puts(File.read(path))
56
+ f.flush
57
+
58
+ cmd = ([:ruby, f.path] + args).join(' ')
59
+ Open3.capture2e(cmd)
60
+ end
61
+ end
62
+ end
63
+ include CLIHelper
@@ -0,0 +1,45 @@
1
+ describe 'Ridgepole::Client (with bigint pk)', condition: [:mysql_awesome_enabled] do
2
+ let(:dsl1) {
3
+ <<-RUBY
4
+ create_table "books", id: :primary_key, limit: 8, force: :cascade do |t|
5
+ t.string "title", limit: 255, null: false
6
+ t.integer "author_id", limit: 4, null: false
7
+ t.datetime "created_at"
8
+ t.datetime "updated_at"
9
+ end
10
+ RUBY
11
+ }
12
+
13
+ let(:dsl2) {
14
+ <<-RUBY
15
+ create_table "books", id: :bigint, force: :cascade do |t|
16
+ t.string "title", limit: 255, null: false
17
+ t.integer "author_id", limit: 4, null: false
18
+ t.datetime "created_at"
19
+ t.datetime "updated_at"
20
+ end
21
+ RUBY
22
+ }
23
+
24
+ context 'when with limit:8' do
25
+ subject { client }
26
+
27
+ before { subject.diff(dsl1).migrate }
28
+
29
+ it {
30
+ expect(show_create_table(:books)).to include '`id` bigint(20) NOT NULL AUTO_INCREMENT'
31
+ expect(subject.dump).to match_fuzzy dsl2
32
+ }
33
+ end
34
+
35
+ context 'when with id:bigint' do
36
+ subject { client }
37
+
38
+ before { subject.diff(dsl2).migrate }
39
+
40
+ it {
41
+ expect(show_create_table(:books)).to include '`id` bigint(20) NOT NULL AUTO_INCREMENT'
42
+ expect(subject.dump).to match_fuzzy dsl2
43
+ }
44
+ end
45
+ end
@@ -1,4 +1,3 @@
1
- unless postgresql?
2
1
  describe Ridgepole::Config do
3
2
  subject { Ridgepole::Config.load(config, env) }
4
3
 
@@ -86,4 +85,3 @@ describe Ridgepole::Config do
86
85
  }
87
86
  end
88
87
  end
89
- end
@@ -1,15 +1,18 @@
1
- unless postgresql?
2
1
  describe 'ridgepole' do
3
2
  let(:differ) { false }
4
3
  let(:conf) { "'" + JSON.dump(conn_spec) + "'" }
5
4
 
5
+ def conn_spec_str(database)
6
+ ActiveSupport::HashWithIndifferentAccess.new(conn_spec(database: database)).inspect
7
+ end
8
+
6
9
  context 'when help' do
7
10
  it do
8
11
  out, status = run_cli(:args => ['-h'])
9
- out = out.gsub(/Usage: .*\n/, '').strip_heredoc
12
+ out = out.gsub(/Usage: .*\n/, '')
10
13
 
11
14
  expect(status.success?).to be_truthy
12
- expect(out).to eq <<-EOS.strip_heredoc
15
+ expect(out).to match_fuzzy <<-EOS
13
16
  -c, --config CONF_OR_FILE
14
17
  -E, --env ENVIRONMENT
15
18
  -a, --apply
@@ -56,8 +59,8 @@ describe 'ridgepole' do
56
59
  out, status = run_cli(:args => ['-c', conf, '-e', conf, conf])
57
60
 
58
61
  expect(status.success?).to be_truthy
59
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
60
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
62
+ expect(out).to match_fuzzy <<-EOS
63
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
61
64
  # Export Schema
62
65
  Ridgepole::Client#dump
63
66
  EOS
@@ -68,8 +71,8 @@ describe 'ridgepole' do
68
71
  out, status = run_cli(:args => ['-c', conf, '-e', '-o', f.path])
69
72
 
70
73
  expect(status.success?).to be_truthy
71
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
72
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
74
+ expect(out).to match_fuzzy <<-EOS
75
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
73
76
  Export Schema to `#{f.path}`
74
77
  Ridgepole::Client#dump
75
78
  EOS
@@ -80,8 +83,8 @@ describe 'ridgepole' do
80
83
  out, status = run_cli(:args => ['-c', conf, '-e', '-o', '-'])
81
84
 
82
85
  expect(status.success?).to be_truthy
83
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
84
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
86
+ expect(out).to match_fuzzy <<-EOS
87
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
85
88
  # Export Schema
86
89
  Ridgepole::Client#dump
87
90
  EOS
@@ -91,8 +94,8 @@ describe 'ridgepole' do
91
94
  out, status = run_cli(:args => ['-c', conf, '-e', '--split'])
92
95
 
93
96
  expect(status.success?).to be_truthy
94
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
95
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
97
+ expect(out).to match_fuzzy <<-EOS
98
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
96
99
  Export Schema
97
100
  Ridgepole::Client#dump
98
101
  write `Schemafile`
@@ -104,8 +107,8 @@ describe 'ridgepole' do
104
107
  out, status = run_cli(:args => ['-c', conf, '-e', '--split', '-o', f.path, conf, conf])
105
108
 
106
109
  expect(status.success?).to be_truthy
107
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
108
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
110
+ expect(out).to match_fuzzy <<-EOS
111
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
109
112
  Export Schema
110
113
  Ridgepole::Client#dump
111
114
  write `#{f.path}`
@@ -119,8 +122,8 @@ describe 'ridgepole' do
119
122
  out, status = run_cli(:args => ['-c', conf, '-a'])
120
123
 
121
124
  expect(status.success?).to be_truthy
122
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
123
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
125
+ expect(out).to match_fuzzy <<-EOS
126
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
124
127
  Apply `Schemafile`
125
128
  Ridgepole::Client#diff
126
129
  Ridgepole::Delta#differ?
@@ -131,7 +134,7 @@ describe 'ridgepole' do
131
134
 
132
135
  it 'apply with conf file' do
133
136
  Tempfile.open(["#{File.basename __FILE__}.#{$$}", '.yml']) do |conf_file|
134
- conf_file.puts <<-EOS.strip_heredoc
137
+ conf_file.puts <<-EOS
135
138
  adapter: mysql2
136
139
  database: ridgepole_test_for_conf_file
137
140
  EOS
@@ -140,7 +143,7 @@ describe 'ridgepole' do
140
143
  out, status = run_cli(:args => ['-c', conf_file.path, '-a', '--debug'])
141
144
 
142
145
  expect(status.success?).to be_truthy
143
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
146
+ expect(out).to match_fuzzy <<-EOS
144
147
  Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test_for_conf_file"}, {:dry_run=>false, :debug=>true}])
145
148
  Apply `Schemafile`
146
149
  Ridgepole::Client#diff
@@ -153,7 +156,7 @@ describe 'ridgepole' do
153
156
 
154
157
  it 'apply with conf file (production)' do
155
158
  Tempfile.open(["#{File.basename __FILE__}.#{$$}", '.yml']) do |conf_file|
156
- conf_file.puts <<-EOS.strip_heredoc
159
+ conf_file.puts <<-EOS
157
160
  development:
158
161
  adapter: mysql2
159
162
  database: ridgepole_development
@@ -166,7 +169,7 @@ describe 'ridgepole' do
166
169
  out, status = run_cli(:args => ['-c', conf_file.path, '-a', '--debug'])
167
170
 
168
171
  expect(status.success?).to be_truthy
169
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
172
+ expect(out).to match_fuzzy <<-EOS
170
173
  Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_development"}, {:dry_run=>false, :debug=>true}])
171
174
  Apply `Schemafile`
172
175
  Ridgepole::Client#diff
@@ -181,8 +184,8 @@ describe 'ridgepole' do
181
184
  out, status = run_cli(:args => ['-c', conf, '-a', '--dry-run'])
182
185
 
183
186
  expect(status.success?).to be_truthy
184
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
185
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>true, :debug=>false}])
187
+ expect(out).to match_fuzzy <<-EOS
188
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>true, :debug=>false}])
186
189
  Apply `Schemafile` (dry-run)
187
190
  Ridgepole::Client#diff
188
191
  Ridgepole::Delta#differ?
@@ -197,8 +200,8 @@ describe 'ridgepole' do
197
200
  out, status = run_cli(:args => ['-c', conf, '-a'])
198
201
 
199
202
  expect(status.success?).to be_truthy
200
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
201
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
203
+ expect(out).to match_fuzzy <<-EOS
204
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
202
205
  Apply `Schemafile`
203
206
  Ridgepole::Client#diff
204
207
  Ridgepole::Delta#differ?
@@ -210,8 +213,8 @@ describe 'ridgepole' do
210
213
  out, status = run_cli(:args => ['-c', conf, '-a', '--dry-run'])
211
214
 
212
215
  expect(status.success?).to be_truthy
213
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
214
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>true, :debug=>false}])
216
+ expect(out).to match_fuzzy <<-EOS
217
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>true, :debug=>false}])
215
218
  Apply `Schemafile` (dry-run)
216
219
  Ridgepole::Client#diff
217
220
  Ridgepole::Delta#differ?
@@ -233,9 +236,9 @@ describe 'ridgepole' do
233
236
  out, status = run_cli(:args => ['-c', conf, '-d', conf, conf])
234
237
 
235
238
  expect(status.success?).to be_truthy
236
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
237
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
238
- Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
239
+ expect(out).to match_fuzzy <<-EOS
240
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
241
+ Ridgepole::Client.diff([#{conn_spec_str("ridgepole_test")}, #{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
239
242
  Ridgepole::Delta#differ?
240
243
  EOS
241
244
  end
@@ -249,9 +252,9 @@ describe 'ridgepole' do
249
252
  # Exit code 1 if there is a difference
250
253
  expect(status.success?).to be_falsey
251
254
 
252
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
253
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
254
- Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
255
+ expect(out).to match_fuzzy <<-EOS
256
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
257
+ Ridgepole::Client.diff([#{conn_spec_str("ridgepole_test")}, #{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
255
258
  Ridgepole::Delta#differ?
256
259
  Ridgepole::Delta#script
257
260
  Ridgepole::Delta#script
@@ -268,7 +271,7 @@ describe 'ridgepole' do
268
271
  context 'when config file' do
269
272
  it '.yml' do
270
273
  Tempfile.open(["#{File.basename __FILE__}.#{$$}", '.yml']) do |conf_file|
271
- conf_file.puts <<-EOS.strip_heredoc
274
+ conf_file.puts <<-EOS
272
275
  adapter: mysql2
273
276
  database: ridgepole_test_for_conf_file
274
277
  EOS
@@ -278,9 +281,9 @@ describe 'ridgepole' do
278
281
 
279
282
  expect(status.success?).to be_truthy
280
283
 
281
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
282
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
283
- Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_test_for_conf_file"}, {"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
284
+ expect(out).to match_fuzzy <<-EOS
285
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
286
+ Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_test_for_conf_file"}, #{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
284
287
  Ridgepole::Delta#differ?
285
288
  EOS
286
289
  end
@@ -288,7 +291,7 @@ describe 'ridgepole' do
288
291
 
289
292
  it '.yml (file2)' do
290
293
  Tempfile.open(["#{File.basename __FILE__}.#{$$}", '.yml']) do |conf_file|
291
- conf_file.puts <<-EOS.strip_heredoc
294
+ conf_file.puts <<-EOS
292
295
  adapter: mysql2
293
296
  database: ridgepole_test_for_conf_file
294
297
  EOS
@@ -298,9 +301,9 @@ describe 'ridgepole' do
298
301
 
299
302
  expect(status.success?).to be_truthy
300
303
 
301
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
302
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
303
- Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {"adapter"=>"mysql2", "database"=>"ridgepole_test_for_conf_file"}, {:dry_run=>false, :debug=>false}])
304
+ expect(out).to match_fuzzy <<-EOS
305
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
306
+ Ridgepole::Client.diff([#{conn_spec_str("ridgepole_test")}, {"adapter"=>"mysql2", "database"=>"ridgepole_test_for_conf_file"}, {:dry_run=>false, :debug=>false}])
304
307
  Ridgepole::Delta#differ?
305
308
  EOS
306
309
  end
@@ -308,7 +311,7 @@ describe 'ridgepole' do
308
311
 
309
312
  it '.yml (development)' do
310
313
  Tempfile.open(["#{File.basename __FILE__}.#{$$}", '.yml']) do |conf_file|
311
- conf_file.puts <<-EOS.strip_heredoc
314
+ conf_file.puts <<-EOS
312
315
  development:
313
316
  adapter: mysql2
314
317
  database: ridgepole_development
@@ -322,9 +325,9 @@ describe 'ridgepole' do
322
325
 
323
326
  expect(status.success?).to be_truthy
324
327
 
325
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
326
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
327
- Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_development"}, {"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
328
+ expect(out).to match_fuzzy <<-EOS
329
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
330
+ Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_development"}, #{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
328
331
  Ridgepole::Delta#differ?
329
332
  EOS
330
333
  end
@@ -332,7 +335,7 @@ describe 'ridgepole' do
332
335
 
333
336
  it '.yml (production)' do
334
337
  Tempfile.open(["#{File.basename __FILE__}.#{$$}", '.yml']) do |conf_file|
335
- conf_file.puts <<-EOS.strip_heredoc
338
+ conf_file.puts <<-EOS
336
339
  development:
337
340
  adapter: mysql2
338
341
  database: ridgepole_development
@@ -346,9 +349,9 @@ describe 'ridgepole' do
346
349
 
347
350
  expect(status.success?).to be_truthy
348
351
 
349
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
350
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
351
- Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_production"}, {"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
352
+ expect(out).to match_fuzzy <<-EOS
353
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
354
+ Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_production"}, #{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
352
355
  Ridgepole::Delta#differ?
353
356
  EOS
354
357
  end
@@ -356,7 +359,7 @@ describe 'ridgepole' do
356
359
 
357
360
  it '.yaml' do
358
361
  Tempfile.open(["#{File.basename __FILE__}.#{$$}", '.yaml']) do |conf_file|
359
- conf_file.puts <<-EOS.strip_heredoc
362
+ conf_file.puts <<-EOS
360
363
  adapter: mysql2
361
364
  database: ridgepole_test_for_conf_file
362
365
  EOS
@@ -366,9 +369,9 @@ describe 'ridgepole' do
366
369
 
367
370
  expect(status.success?).to be_truthy
368
371
 
369
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
370
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
371
- Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_test_for_conf_file"}, {"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
372
+ expect(out).to match_fuzzy <<-EOS
373
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
374
+ Ridgepole::Client.diff([{"adapter"=>"mysql2", "database"=>"ridgepole_test_for_conf_file"}, #{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
372
375
  Ridgepole::Delta#differ?
373
376
  EOS
374
377
  end
@@ -376,7 +379,7 @@ describe 'ridgepole' do
376
379
 
377
380
  it '.rb' do
378
381
  Tempfile.open(["#{File.basename __FILE__}.#{$$}", '.rb']) do |conf_file|
379
- conf_file.puts <<-EOS.strip_heredoc
382
+ conf_file.puts <<-EOS
380
383
  create_table :table do
381
384
  end
382
385
  EOS
@@ -386,9 +389,9 @@ describe 'ridgepole' do
386
389
 
387
390
  expect(status.success?).to be_truthy
388
391
 
389
- expect(out.strip).to eq <<-EOS.strip_heredoc.strip
390
- Ridgepole::Client#initialize([{"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
391
- Ridgepole::Client.diff([#{conf_file.path}, {"adapter"=>"mysql2", "database"=>"ridgepole_test"}, {:dry_run=>false, :debug=>false}])
392
+ expect(out).to match_fuzzy <<-EOS
393
+ Ridgepole::Client#initialize([#{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
394
+ Ridgepole::Client.diff([#{conf_file.path}, #{conn_spec_str("ridgepole_test")}, {:dry_run=>false, :debug=>false}])
392
395
  Ridgepole::Delta#differ?
393
396
  EOS
394
397
  end
@@ -396,4 +399,3 @@ describe 'ridgepole' do
396
399
  end
397
400
  end
398
401
  end
399
- end