ridgepole 0.6.3 → 0.6.4.beta

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: 39de0c5657505ffd499feee97f507a239becaf09
4
- data.tar.gz: d85935dbf8ce0838450aabfad38092672f959d1f
3
+ metadata.gz: e1b4733e95ee314eccc6c975becee43463c4c1b0
4
+ data.tar.gz: f71fb12dd5737106719cc32636ad2b1c5aba8e14
5
5
  SHA512:
6
- metadata.gz: 6e5e0158e32f2e675d0606e1cfe878210ca2fe2175ef3d7869d8cbf3cf865d93e06f8e904f1f2bb985df8e9152e7264915dc833502f65a93a5ed30ec020b9695
7
- data.tar.gz: b6788f02160e0b80553f07999e834dfb73bf656b313676a583a61b2e9a108916ee5f3b4c386c6e0238f1a32a8756dfe8fa4eca61808dd111c409a8656a52570b
6
+ metadata.gz: fcfaa88a1d5932661259c69b9f8678938cc81c50656401e9fc8b568442833f1231e210c648e74f97eb0978160e9a933aecd8958daf08512e58fce696f40a9249
7
+ data.tar.gz: fdfefdfcf6f4fe8723f4c24ab983a5d43e9d4c7bdf67d5c2ee3fc5d20984f3f1d6e1438a848ecb5d3e2deb3df22dd70cc27a19d5b11ccda93be915617f3d8c99
data/README.md CHANGED
@@ -41,6 +41,9 @@ It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.
41
41
  * `>= 0.6.3`
42
42
  * Fix `default` option ([pull#48](https://github.com/winebarrel/ridgepole/pull/48))
43
43
  * Add `--enable-migration-comments` option ([pull#50](https://github.com/winebarrel/ridgepole/pull/50))
44
+ * Disable `rename_table_indexes`
45
+ * `>= 0.6.4`
46
+ * Execute sql using external script ([pull#56](https://github.com/winebarrel/ridgepole/pull/56))
44
47
 
45
48
  ## Installation
46
49
 
@@ -66,6 +69,7 @@ Usage: ridgepole [options]
66
69
  -f, --file FILE
67
70
  --dry-run
68
71
  --table-options OPTIONS
72
+ --external-script SCRIPT
69
73
  --bulk-change
70
74
  --default-bool-limit LIMIT
71
75
  --default-int-limit LIMIT
@@ -262,6 +266,16 @@ rename_column("articles", "desc", "text")
262
266
  remove_column("articles", "author")
263
267
  ```
264
268
 
269
+ ## Execute SQL using external script
270
+
271
+ ```sh
272
+ $ cat test.sh
273
+ #!/bin/sh
274
+ echo "$1" | mysql -u root my_db
275
+
276
+ $ ridgepole -c config.yml --apply --external-script ./test.sh
277
+ ```
278
+
265
279
  ## Demo
266
280
 
267
281
  * [asciinema.org/a/9349](https://asciinema.org/a/9349)
data/bin/ridgepole CHANGED
@@ -71,6 +71,7 @@ ARGV.options do |opt|
71
71
  opt.on('-f', '--file FILE') {|v| file = v }
72
72
  opt.on('', '--dry-run') { options[:dry_run] = true }
73
73
  opt.on('', '--table-options OPTIONS') {|v| options[:table_options] = v }
74
+ opt.on('', '--external-script SCRIPT') {|v| options[:external_script] = v }
74
75
  opt.on('', '--bulk-change') {
75
76
  raise "Cannot use `bulk-change` in `merge`" if options[:merge]
76
77
  options[:bulk_change] = true
@@ -108,7 +109,7 @@ ARGV.options do |opt|
108
109
  opt.on('', '--dump-without-table-options') { options[:dump_without_table_options] = true }
109
110
  opt.on('', '--index-removed-drop-column') { options[:index_removed_drop_column] = true }
110
111
  opt.on('', '--enable-migration-comments') { options[:enable_migration_comments] = true }
111
- opt.on('-r' , '--require LIBS', Array) {|v| v.each {|i| require i } }
112
+ opt.on('-r', '--require LIBS', Array) {|v| v.each {|i| require i } }
112
113
  opt.on('' , '--log-file LOG_FILE') {|v| options[:log_file] = v }
113
114
  opt.on('' , '--verbose') { Ridgepole::Logger.verbose = true }
114
115
  opt.on('' , '--debug') { options[:debug] = true }
@@ -199,7 +200,7 @@ begin
199
200
  end
200
201
  else
201
202
  logger.verbose_info('# Update schema')
202
- differ, out = delta.migrate
203
+ differ, out = delta.migrate(:external_script => options[:external_script])
203
204
  end
204
205
 
205
206
  unless differ
data/lib/ridgepole.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require 'logger'
2
+ require 'open3'
3
+ require 'shellwords'
2
4
  require 'singleton'
3
5
  require 'stringio'
4
6
 
@@ -15,6 +17,7 @@ require 'ridgepole/diff'
15
17
  require 'ridgepole/dsl_parser'
16
18
  require 'ridgepole/dumper'
17
19
  require 'ridgepole/execute_expander'
20
+ require 'ridgepole/external_sql_executer'
18
21
  require 'ridgepole/logger'
19
22
  require 'ridgepole/migration_ext'
20
23
  require 'ridgepole/schema_dumper_ext'
@@ -71,6 +71,10 @@ class Ridgepole::Delta
71
71
  ensure
72
72
  ActiveRecord::Migration.disable_logging = disable_logging_orig
73
73
  end
74
+ elsif options[:external_script]
75
+ Ridgepole::ExecuteExpander.with_script(options[:external_script], Ridgepole::Logger.instance) do
76
+ migrated = eval_script(script, options)
77
+ end
74
78
  else
75
79
  migrated = eval_script(script, options)
76
80
  end
@@ -5,8 +5,10 @@ class Ridgepole::ExecuteExpander
5
5
  end
6
6
  end
7
7
 
8
- cattr_accessor :noop, :instance_writer => false, :instance_reader => false
9
- cattr_accessor :callback, :instance_writer => false, :instance_reader => false
8
+ cattr_accessor :noop, :instance_writer => false, :instance_reader => false
9
+ cattr_accessor :callback, :instance_writer => false, :instance_reader => false
10
+ cattr_accessor :use_script, :instance_writer => false, :instance_reader => false
11
+ cattr_accessor :sql_executer, :instance_writer => false, :instance_reader => false
10
12
 
11
13
  class << self
12
14
  def without_operation(callback = nil)
@@ -20,11 +22,22 @@ class Ridgepole::ExecuteExpander
20
22
  end
21
23
  end
22
24
 
25
+ def with_script(script, logger)
26
+ begin
27
+ self.use_script = true
28
+ self.sql_executer = Ridgepole::ExternalSqlExecuter.new(script, logger)
29
+ yield
30
+ ensure
31
+ self.use_script = false
32
+ self.sql_executer = nil
33
+ end
34
+ end
35
+
23
36
  def expand_execute(connection)
24
- return if connection.respond_to?(:execute_with_noop)
37
+ return if connection.respond_to?(:execute_with_ext)
25
38
 
26
39
  class << connection
27
- def execute_with_noop(sql, name = nil)
40
+ def execute_with_ext(sql, name = nil)
28
41
  if Ridgepole::ExecuteExpander.noop
29
42
  if (callback = Ridgepole::ExecuteExpander.callback)
30
43
  callback.call(sql, name)
@@ -32,18 +45,25 @@ class Ridgepole::ExecuteExpander
32
45
 
33
46
  if sql =~ /\A(SELECT|SHOW)\b/i
34
47
  begin
35
- execute_without_noop(sql, name)
48
+ execute_without_ext(sql, name)
36
49
  rescue => e
37
50
  Stub.new
38
51
  end
39
52
  else
40
53
  Stub.new
41
54
  end
55
+ elsif Ridgepole::ExecuteExpander.use_script
56
+ if sql =~ /\A(SELECT|SHOW)\b/i
57
+ execute_without_ext(sql, name)
58
+ else
59
+ Ridgepole::ExecuteExpander.sql_executer.execute(sql)
60
+ nil
61
+ end
42
62
  else
43
- execute_without_noop(sql, name)
63
+ execute_without_ext(sql, name)
44
64
  end
45
65
  end
46
- alias_method_chain :execute, :noop
66
+ alias_method_chain :execute, :ext
47
67
  end
48
68
  end
49
69
  end # of class methods
@@ -0,0 +1,22 @@
1
+ class Ridgepole::ExternalSqlExecuter
2
+ def initialize(script, logger)
3
+ @script = script
4
+ @logger = logger
5
+ end
6
+
7
+ def execute(sql)
8
+ cmd = Shellwords.join([@script, sql])
9
+ @logger.info("Execute #{cmd}")
10
+
11
+ out, err, status = Open3.capture3(cmd)
12
+ out.strip!
13
+ err.strip!
14
+
15
+ @logger.info("#{@script}: #{out}") unless out.empty?
16
+ @logger.warn("[WARNING] #{@script}: #{err}") unless err.empty?
17
+
18
+ unless status.success?
19
+ raise "`#{@script}` execution failed"
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.6.3'
2
+ VERSION = '0.6.4.beta'
3
3
  end
@@ -17,6 +17,7 @@ describe 'ridgepole' do
17
17
  -f, --file FILE
18
18
  --dry-run
19
19
  --table-options OPTIONS
20
+ --external-script SCRIPT
20
21
  --bulk-change
21
22
  --default-bool-limit LIMIT
22
23
  --default-int-limit LIMIT
@@ -0,0 +1,166 @@
1
+ unless postgresql?
2
+ describe 'Ridgepole::Client#diff -> migrate' do
3
+ context 'when add column' do
4
+ let(:actual_dsl) {
5
+ <<-RUBY
6
+ create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
7
+ t.string "name", limit: 255, default: "", null: false
8
+ end
9
+
10
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
+
12
+ create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
13
+ t.string "dept_name", limit: 40, null: false
14
+ end
15
+
16
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
17
+
18
+ create_table "dept_emp", id: false, force: :cascade do |t|
19
+ t.integer "emp_no", limit: 4, null: false
20
+ t.string "dept_no", limit: 4, null: false
21
+ t.date "from_date", null: false
22
+ t.date "to_date", null: false
23
+ end
24
+
25
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
26
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
27
+
28
+ create_table "dept_manager", id: false, force: :cascade do |t|
29
+ t.string "dept_no", limit: 4, null: false
30
+ t.integer "emp_no", limit: 4, null: false
31
+ t.date "from_date", null: false
32
+ t.date "to_date", null: false
33
+ end
34
+
35
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
36
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
+
38
+ create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
39
+ t.integer "emp_no", limit: 4, null: false
40
+ t.integer "club_id", limit: 4, null: false
41
+ end
42
+
43
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
+
45
+ create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
46
+ t.date "birth_date", null: false
47
+ t.string "first_name", limit: 14, null: false
48
+ t.string "last_name", limit: 16, null: false
49
+ t.string "gender", limit: 1, null: false
50
+ t.date "hire_date", null: false
51
+ end
52
+
53
+ create_table "salaries", id: false, force: :cascade do |t|
54
+ t.integer "emp_no", limit: 4, null: false
55
+ t.integer "salary", limit: 4, null: false
56
+ t.date "from_date", null: false
57
+ t.date "to_date", null: false
58
+ end
59
+
60
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
61
+
62
+ create_table "titles", id: false, force: :cascade do |t|
63
+ t.integer "emp_no", limit: 4, null: false
64
+ t.string "title", limit: 50, null: false
65
+ t.date "from_date", null: false
66
+ t.date "to_date"
67
+ end
68
+
69
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
+ RUBY
71
+ }
72
+
73
+ let(:expected_dsl) {
74
+ <<-RUBY
75
+ create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
76
+ t.string "name", limit: 255, default: "", null: false
77
+ end
78
+
79
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
80
+
81
+ create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
82
+ t.string "dept_name", limit: 40, null: false
83
+ end
84
+
85
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
86
+
87
+ create_table "dept_emp", id: false, force: :cascade do |t|
88
+ t.integer "emp_no", limit: 4, null: false
89
+ t.string "dept_no", limit: 4, null: false
90
+ t.date "from_date", null: false
91
+ t.date "to_date", null: false
92
+ end
93
+
94
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
95
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
96
+
97
+ create_table "dept_manager", id: false, force: :cascade do |t|
98
+ t.string "dept_no", limit: 4, null: false
99
+ t.integer "emp_no", limit: 4, null: false
100
+ t.date "from_date", null: false
101
+ t.date "to_date", null: false
102
+ end
103
+
104
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
105
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
106
+
107
+ create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
108
+ t.integer "emp_no", limit: 4, null: false
109
+ t.integer "club_id", limit: 4, null: false
110
+ t.string "any_col", limit: 255, null: false
111
+ end
112
+
113
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
114
+
115
+ create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
116
+ t.date "birth_date", null: false
117
+ t.string "first_name", limit: 14, null: false
118
+ t.string "last_name", limit: 16, null: false
119
+ t.string "gender", limit: 1, null: false
120
+ t.date "hire_date", null: false
121
+ t.integer "age", limit: 4, null: false
122
+ t.date "updated_at"
123
+ end
124
+
125
+ create_table "salaries", id: false, force: :cascade do |t|
126
+ t.integer "emp_no", limit: 4, null: false
127
+ t.integer "salary", limit: 4, null: false
128
+ t.date "from_date", null: false
129
+ t.date "to_date", null: false
130
+ end
131
+
132
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
133
+
134
+ create_table "titles", id: false, force: :cascade do |t|
135
+ t.integer "emp_no", limit: 4, null: false
136
+ t.string "title", limit: 50, null: false
137
+ t.date "from_date", null: false
138
+ t.date "to_date"
139
+ end
140
+
141
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
142
+ RUBY
143
+ }
144
+
145
+ before { subject.diff(actual_dsl).migrate }
146
+ subject { client }
147
+
148
+ it {
149
+ delta = subject.diff(expected_dsl)
150
+ expect(delta.differ?).to be_truthy
151
+ expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
152
+
153
+ script = <<-EOS
154
+ echo "$1" | mysql -uroot #{TEST_SCHEMA}
155
+ EOS
156
+
157
+ tempfile(File.basename(__FILE__), script) do |path|
158
+ FileUtils.chmod(0755, path)
159
+ delta.migrate(external_script: path)
160
+ end
161
+
162
+ expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
163
+ }
164
+ end
165
+ end
166
+ end
@@ -0,0 +1,102 @@
1
+ unless postgresql?
2
+ describe 'Ridgepole::Client#diff -> migrate' do
3
+ context 'when create table' do
4
+ let(:dsl) {
5
+ <<-RUBY
6
+ create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
7
+ t.string "name", limit: 255, default: "", null: false
8
+ end
9
+
10
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
+
12
+ create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
13
+ t.string "dept_name", limit: 40, null: false
14
+ end
15
+
16
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
17
+
18
+ create_table "dept_emp", id: false, force: :cascade do |t|
19
+ t.integer "emp_no", limit: 4, null: false
20
+ t.string "dept_no", limit: 4, null: false
21
+ t.date "from_date", null: false
22
+ t.date "to_date", null: false
23
+ end
24
+
25
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
26
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
27
+
28
+ create_table "dept_manager", id: false, force: :cascade do |t|
29
+ t.string "dept_no", limit: 4, null: false
30
+ t.integer "emp_no", limit: 4, null: false
31
+ t.date "from_date", null: false
32
+ t.date "to_date", null: false
33
+ end
34
+
35
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
36
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
+
38
+ create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
39
+ t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
40
+ t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
41
+ end
42
+
43
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
+
45
+ create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
46
+ t.date "birth_date", null: false
47
+ t.string "first_name", limit: 14, null: false
48
+ t.string "last_name", limit: 16, null: false
49
+ t.string "gender", limit: 1, null: false
50
+ t.date "hire_date", null: false
51
+ end
52
+
53
+ create_table "salaries", id: false, force: :cascade do |t|
54
+ t.integer "emp_no", limit: 4, null: false
55
+ t.integer "salary", limit: 4, null: false
56
+ t.date "from_date", null: false
57
+ t.date "to_date", null: false
58
+ end
59
+
60
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
61
+
62
+ create_table "titles", id: false, force: :cascade do |t|
63
+ t.integer "emp_no", limit: 4, null: false
64
+ t.string "title", limit: 50, null: false
65
+ t.date "from_date", null: false
66
+ t.date "to_date"
67
+ end
68
+
69
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
+ RUBY
71
+ }
72
+
73
+ let(:actual_dsl) {
74
+ dsl.delete_create_table('clubs')
75
+ .delete_create_table('employee_clubs')
76
+ .delete_create_table('employees')
77
+ }
78
+
79
+ let(:expected_dsl) { dsl }
80
+
81
+ before { subject.diff(actual_dsl).migrate }
82
+ subject { client }
83
+
84
+ it {
85
+ delta = subject.diff(expected_dsl)
86
+ expect(delta.differ?).to be_truthy
87
+ expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
88
+
89
+ script = <<-EOS
90
+ echo "$1" | mysql -uroot #{TEST_SCHEMA}
91
+ EOS
92
+
93
+ tempfile(File.basename(__FILE__), script) do |path|
94
+ FileUtils.chmod(0755, path)
95
+ delta.migrate(external_script: path)
96
+ end
97
+
98
+ expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
99
+ }
100
+ end
101
+ end
102
+ end
data/spec/spec_helper.rb CHANGED
@@ -195,6 +195,17 @@ def run_cli(options = {})
195
195
  end
196
196
  end
197
197
 
198
+ def tempfile(basename, content)
199
+ begin
200
+ path = `mktemp /tmp/#{basename}.XXXXXX`
201
+ open(path, 'wb') {|f| f << content }
202
+ FileUtils.chmod(0777, path)
203
+ yield(path)
204
+ ensure
205
+ FileUtils.rm_f(path) if path
206
+ end
207
+ end
208
+
198
209
  def mysql_awesome_enabled?
199
210
  ENV['ENABLE_MYSQL_AWESOME'] == '1'
200
211
  end
metadata CHANGED
@@ -1,139 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridgepole
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4.beta
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-10-27 00:00:00.000000000 Z
11
+ date: 2015-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: 4.2.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.2.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: 3.0.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: 3.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mysql2
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.3.20
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
82
  version: 0.3.20
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pg
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: coveralls
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: activerecord-mysql-awesome
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: 0.0.7
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: 0.0.7
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: migration_comments
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  description: Ridgepole is a tool to manage DB schema. It defines DB schema using Rails
@@ -145,9 +145,9 @@ executables:
145
145
  extensions: []
146
146
  extra_rdoc_files: []
147
147
  files:
148
- - ".gitignore"
149
- - ".rspec"
150
- - ".travis.yml"
148
+ - .gitignore
149
+ - .rspec
150
+ - .travis.yml
151
151
  - Gemfile
152
152
  - LICENSE.txt
153
153
  - README.md
@@ -163,6 +163,7 @@ files:
163
163
  - lib/ridgepole/dumper.rb
164
164
  - lib/ridgepole/execute_expander.rb
165
165
  - lib/ridgepole/ext/migration_comments.rb
166
+ - lib/ridgepole/external_sql_executer.rb
166
167
  - lib/ridgepole/logger.rb
167
168
  - lib/ridgepole/migration_ext.rb
168
169
  - lib/ridgepole/schema_dumper_ext.rb
@@ -187,6 +188,7 @@ files:
187
188
  - spec/mysql/migrate/check_orphan_index_spec.rb
188
189
  - spec/mysql/migrate/migrate_add_column2_spec.rb
189
190
  - spec/mysql/migrate/migrate_add_column_spec.rb
191
+ - spec/mysql/migrate/migrate_add_column_with_script_spec.rb
190
192
  - spec/mysql/migrate/migrate_change_column2_spec.rb
191
193
  - spec/mysql/migrate/migrate_change_column3_spec.rb
192
194
  - spec/mysql/migrate/migrate_change_column4_spec.rb
@@ -204,6 +206,7 @@ files:
204
206
  - spec/mysql/migrate/migrate_create_index_spec.rb
205
207
  - spec/mysql/migrate/migrate_create_table_spec.rb
206
208
  - spec/mysql/migrate/migrate_create_table_with_options_spec.rb
209
+ - spec/mysql/migrate/migrate_create_table_with_script_spec.rb
207
210
  - spec/mysql/migrate/migrate_drop_column_and_index_2_spec.rb
208
211
  - spec/mysql/migrate/migrate_drop_column_and_index_spec.rb
209
212
  - spec/mysql/migrate/migrate_drop_column_spec.rb
@@ -259,17 +262,17 @@ require_paths:
259
262
  - lib
260
263
  required_ruby_version: !ruby/object:Gem::Requirement
261
264
  requirements:
262
- - - ">="
265
+ - - '>='
263
266
  - !ruby/object:Gem::Version
264
267
  version: '0'
265
268
  required_rubygems_version: !ruby/object:Gem::Requirement
266
269
  requirements:
267
- - - ">="
270
+ - - '>'
268
271
  - !ruby/object:Gem::Version
269
- version: '0'
272
+ version: 1.3.1
270
273
  requirements: []
271
274
  rubyforge_project:
272
- rubygems_version: 2.4.5
275
+ rubygems_version: 2.4.8
273
276
  signing_key:
274
277
  specification_version: 4
275
278
  summary: Ridgepole is a tool to manage DB schema.
@@ -292,6 +295,7 @@ test_files:
292
295
  - spec/mysql/migrate/check_orphan_index_spec.rb
293
296
  - spec/mysql/migrate/migrate_add_column2_spec.rb
294
297
  - spec/mysql/migrate/migrate_add_column_spec.rb
298
+ - spec/mysql/migrate/migrate_add_column_with_script_spec.rb
295
299
  - spec/mysql/migrate/migrate_change_column2_spec.rb
296
300
  - spec/mysql/migrate/migrate_change_column3_spec.rb
297
301
  - spec/mysql/migrate/migrate_change_column4_spec.rb
@@ -309,6 +313,7 @@ test_files:
309
313
  - spec/mysql/migrate/migrate_create_index_spec.rb
310
314
  - spec/mysql/migrate/migrate_create_table_spec.rb
311
315
  - spec/mysql/migrate/migrate_create_table_with_options_spec.rb
316
+ - spec/mysql/migrate/migrate_create_table_with_script_spec.rb
312
317
  - spec/mysql/migrate/migrate_drop_column_and_index_2_spec.rb
313
318
  - spec/mysql/migrate/migrate_drop_column_and_index_spec.rb
314
319
  - spec/mysql/migrate/migrate_drop_column_spec.rb