ridgepole 0.6.3 → 0.6.4.beta

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: 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