ridgepole 0.7.4 → 0.7.5.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +3 -0
- data/.travis.yml +6 -3
- data/README.md +22 -0
- data/bin/ridgepole +13 -8
- data/lib/ridgepole/cli/config.rb +24 -11
- data/lib/ridgepole/client.rb +3 -9
- data/lib/ridgepole/default_limit.rb +2 -2
- data/lib/ridgepole/delta.rb +2 -6
- data/lib/ridgepole/diff.rb +20 -34
- data/lib/ridgepole/dsl_parser.rb +2 -6
- data/lib/ridgepole/dsl_parser/context.rb +9 -21
- data/lib/ridgepole/dsl_parser/table_definition.rb +6 -3
- data/lib/ridgepole/dumper.rb +3 -6
- data/lib/ridgepole/execute_expander.rb +1 -3
- data/lib/ridgepole/ext/schema_dumper.rb +2 -6
- data/lib/ridgepole/external_sql_executer.rb +2 -0
- data/lib/ridgepole/version.rb +1 -1
- data/omnibus-ridgepole/.gitignore +10 -0
- data/omnibus-ridgepole/Dockerfile.centos +25 -0
- data/omnibus-ridgepole/Dockerfile.ubuntu +21 -0
- data/omnibus-ridgepole/Gemfile +24 -0
- data/omnibus-ridgepole/README.md +15 -0
- data/omnibus-ridgepole/Rakefile +38 -0
- data/omnibus-ridgepole/config/projects/ridgepole.rb +27 -0
- data/omnibus-ridgepole/config/software/ridgepole.rb +13 -0
- data/omnibus-ridgepole/omnibus.rb +54 -0
- data/omnibus-ridgepole/package-scripts/ridgepole/postinst +1 -0
- data/omnibus-ridgepole/package-scripts/ridgepole/postrm +1 -0
- data/spec/mysql/migrate/migrate_change_column3_spec.rb +31 -0
- data/spec/spec_helper.rb +2 -2
- metadata +16 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c44addc9926210f15e87edf0411337f5c26d438eb9c56149f0836fb00816a40a
|
4
|
+
data.tar.gz: 612e706281e910142283d5db37112243bdcb4aeaef80e5b477525788103336fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cae35726e3780ca82aa489ee7bc77cab33c1d70d25548c152c9aadad31482deaa7e4a638b901b2a627a91c1fa796803a08b4df934e66ac1aa758e351e4f44279
|
7
|
+
data.tar.gz: 9be70b10cd5ef421c2bbb48a44b48a3d2dab47b10e3d941a6323cefb14f804fa46ecc411dbfabfa748d750d03ddaabdb98d766156eb6485e754d51de04c0725a
|
data/.rubocop.yml
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
AllCops:
|
2
2
|
Exclude:
|
3
3
|
- 'gemfiles/**/*'
|
4
|
+
- 'omnibus-ridgepole/**/*'
|
4
5
|
TargetRubyVersion: 2.2
|
5
6
|
Bundler/OrderedGems:
|
6
7
|
Include:
|
@@ -34,5 +35,7 @@ Style/MethodMissingSuper:
|
|
34
35
|
Style/MixinUsage:
|
35
36
|
Exclude:
|
36
37
|
- 'spec/**/*'
|
38
|
+
Style/TrailingCommaInHashLiteral:
|
39
|
+
EnforcedStyleForMultiline: consistent_comma
|
37
40
|
Layout/ClosingHeredocIndentation:
|
38
41
|
Enabled: false
|
data/.travis.yml
CHANGED
@@ -6,10 +6,13 @@ cache:
|
|
6
6
|
- bundler
|
7
7
|
- apt
|
8
8
|
rvm:
|
9
|
-
- 2.2.9
|
10
9
|
- 2.3.6
|
11
|
-
- 2.4.
|
12
|
-
- 2.5.
|
10
|
+
- 2.4.5
|
11
|
+
- 2.5.3
|
12
|
+
- 2.6.0-preview2
|
13
|
+
matrix:
|
14
|
+
allow_failures:
|
15
|
+
- rvm: 2.6.0-preview2
|
13
16
|
before_script:
|
14
17
|
- sudo service mysql stop
|
15
18
|
- sudo service postgresql stop
|
data/README.md
CHANGED
@@ -89,6 +89,8 @@ It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.
|
|
89
89
|
* Support primary key adding/dropping ([issue#246](https://github.com/winebarrel/ridgepole/issues/246))
|
90
90
|
* `>= 0.7.4`
|
91
91
|
* Fix `add_foreign_key` options ([issue#250](https://github.com/winebarrel/ridgepole/issues/250))
|
92
|
+
* `>= 0.7.5`
|
93
|
+
* Fix polymorphic options ([pull#263](https://github.com/winebarrel/ridgepole/pull/263))
|
92
94
|
|
93
95
|
## Installation
|
94
96
|
|
@@ -104,6 +106,26 @@ Or install it yourself as:
|
|
104
106
|
|
105
107
|
$ gem install ridgepole
|
106
108
|
|
109
|
+
## Omnibus Package (deb/rpm)
|
110
|
+
|
111
|
+
see https://github.com/winebarrel/ridgepole/releases.
|
112
|
+
|
113
|
+
### Install from rpm
|
114
|
+
|
115
|
+
```sh
|
116
|
+
sudo dpkg -i ridgepole_x.x.x+xxx-x_amd64.deb
|
117
|
+
sudo apt install build-essential libmysqlclient-dev
|
118
|
+
sudo /opt/ridgepole/embedded/bin/gem install mysql2
|
119
|
+
```
|
120
|
+
|
121
|
+
### Install from rpm
|
122
|
+
|
123
|
+
```sh
|
124
|
+
sudo yum install ridgepole-x.x.x+xxx-x.el7.x86_64.rpm
|
125
|
+
sudo yum install make gcc mariadb-devel
|
126
|
+
sudo /opt/ridgepole/embedded/bin/gem install mysql2
|
127
|
+
```
|
128
|
+
|
107
129
|
## Help
|
108
130
|
```
|
109
131
|
Usage: ridgepole [options]
|
data/bin/ridgepole
CHANGED
@@ -24,7 +24,7 @@ COLUMN_TYPES = {
|
|
24
24
|
float: :float,
|
25
25
|
string: :string,
|
26
26
|
text: :text,
|
27
|
-
binary: :binary
|
27
|
+
binary: :binary,
|
28
28
|
}.freeze
|
29
29
|
|
30
30
|
config = nil
|
@@ -40,11 +40,12 @@ exit_code = 0
|
|
40
40
|
options = {
|
41
41
|
dry_run: false,
|
42
42
|
debug: false,
|
43
|
-
color: $stdout.tty
|
43
|
+
color: $stdout.tty?,
|
44
44
|
}
|
45
45
|
|
46
46
|
set_mode = proc do |m|
|
47
47
|
raise OptionParser::InvalidOption, 'More than one mode is specified' if mode
|
48
|
+
|
48
49
|
mode = m
|
49
50
|
end
|
50
51
|
|
@@ -85,6 +86,7 @@ ARGV.options do |opt|
|
|
85
86
|
opt.on('', '--external-script SCRIPT') { |v| options[:external_script] = v }
|
86
87
|
opt.on('', '--bulk-change') do
|
87
88
|
raise OptionParser::InvalidOption, 'Cannot use `bulk-change` in `merge`' if options[:merge]
|
89
|
+
|
88
90
|
options[:bulk_change] = true
|
89
91
|
end
|
90
92
|
|
@@ -129,9 +131,7 @@ ARGV.options do |opt|
|
|
129
131
|
opt.on('', '--create-table-with-index') { options[:create_table_with_index] = true }
|
130
132
|
|
131
133
|
opt.on('', '--mysql-dump-auto-increment') do
|
132
|
-
if Gem::Version.new(ActiveRecord::VERSION::STRING) < Gem::Version.new('5.1')
|
133
|
-
raise OptionParser::InvalidOption, '`mysql-dump-auto-increment` is not available in `activerecord < 5.1`'
|
134
|
-
end
|
134
|
+
raise OptionParser::InvalidOption, '`mysql-dump-auto-increment` is not available in `activerecord < 5.1`' if Gem::Version.new(ActiveRecord::VERSION::STRING) < Gem::Version.new('5.1')
|
135
135
|
|
136
136
|
options[:mysql_dump_auto_increment] = true
|
137
137
|
end
|
@@ -156,9 +156,7 @@ ARGV.options do |opt|
|
|
156
156
|
rescue StandardError => e
|
157
157
|
warn("[ERROR] #{e.message}")
|
158
158
|
|
159
|
-
unless e.is_a?(OptionParser::ParseError)
|
160
|
-
puts "\t" + e.backtrace.join("\n\t")
|
161
|
-
end
|
159
|
+
puts "\t" + e.backtrace.join("\n\t") unless e.is_a?(OptionParser::ParseError)
|
162
160
|
|
163
161
|
exit 1
|
164
162
|
end
|
@@ -251,6 +249,13 @@ begin
|
|
251
249
|
else
|
252
250
|
File.open(diff_file)
|
253
251
|
end
|
252
|
+
elsif Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1') # Ruby 2.6
|
253
|
+
YAML.safe_load(
|
254
|
+
diff_file,
|
255
|
+
permitted_classes: [],
|
256
|
+
permitted_symbols: [],
|
257
|
+
aliases: true
|
258
|
+
)
|
254
259
|
else
|
255
260
|
YAML.safe_load(diff_file, [], [], true)
|
256
261
|
end
|
data/lib/ridgepole/cli/config.rb
CHANGED
@@ -11,13 +11,18 @@ module Ridgepole
|
|
11
11
|
parse_config_file(config)
|
12
12
|
elsif (expanded = File.expand_path(config)) && File.exist?(expanded)
|
13
13
|
parse_config_file(expanded)
|
14
|
+
elsif Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1') # Ruby 2.6
|
15
|
+
YAML.safe_load(
|
16
|
+
ERB.new(config).result,
|
17
|
+
permitted_classes: [],
|
18
|
+
permitted_symbols: [],
|
19
|
+
aliases: true
|
20
|
+
)
|
14
21
|
else
|
15
22
|
YAML.safe_load(ERB.new(config).result, [], [], true)
|
16
23
|
end
|
17
24
|
|
18
|
-
unless parsed_config.is_a?(Hash)
|
19
|
-
parsed_config = parse_database_url(config)
|
20
|
-
end
|
25
|
+
parsed_config = parse_database_url(config) unless parsed_config.is_a?(Hash)
|
21
26
|
|
22
27
|
if parsed_config.key?(env.to_s)
|
23
28
|
parsed_config.fetch(env.to_s)
|
@@ -30,23 +35,31 @@ module Ridgepole
|
|
30
35
|
|
31
36
|
def parse_config_file(path)
|
32
37
|
yaml = ERB.new(File.read(path)).result
|
33
|
-
|
38
|
+
|
39
|
+
if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1') # Ruby 2.6
|
40
|
+
YAML.safe_load(
|
41
|
+
yaml,
|
42
|
+
permitted_classes: [],
|
43
|
+
permitted_symbols: [],
|
44
|
+
aliases: true
|
45
|
+
)
|
46
|
+
else
|
47
|
+
YAML.safe_load(yaml, [], [], true)
|
48
|
+
end
|
34
49
|
end
|
35
50
|
|
36
51
|
def parse_database_url(config)
|
37
52
|
uri = URI.parse(config)
|
38
53
|
|
39
|
-
if [uri.scheme, uri.user, uri.host, uri.path].any? { |i| i.nil? || i.empty? }
|
40
|
-
raise "Invalid config: #{config.inspect}"
|
41
|
-
end
|
54
|
+
raise "Invalid config: #{config.inspect}" if [uri.scheme, uri.user, uri.host, uri.path].any? { |i| i.nil? || i.empty? }
|
42
55
|
|
43
56
|
{
|
44
|
-
'adapter'
|
57
|
+
'adapter' => uri.scheme,
|
45
58
|
'username' => uri.user,
|
46
59
|
'password' => uri.password,
|
47
|
-
'host'
|
48
|
-
'port'
|
49
|
-
'database' => uri.path.sub(%r{\A/}, '')
|
60
|
+
'host' => uri.host,
|
61
|
+
'port' => uri.port,
|
62
|
+
'database' => uri.path.sub(%r{\A/}, ''),
|
50
63
|
}
|
51
64
|
end
|
52
65
|
end
|
data/lib/ridgepole/client.rb
CHANGED
@@ -6,22 +6,16 @@ module Ridgepole
|
|
6
6
|
ActiveRecord::Base.establish_connection(conn_spec)
|
7
7
|
|
8
8
|
# XXX: If the required processing in class method?
|
9
|
-
if !@options.key?(:index_removed_drop_column) && (Ridgepole::DefaultsLimit.adapter == :postgresql)
|
10
|
-
@options[:index_removed_drop_column] = true
|
11
|
-
end
|
9
|
+
@options[:index_removed_drop_column] = true if !@options.key?(:index_removed_drop_column) && (Ridgepole::DefaultsLimit.adapter == :postgresql)
|
12
10
|
|
13
11
|
Ridgepole::ExecuteExpander.expand_execute(ActiveRecord::Base.connection)
|
14
12
|
@dumper = Ridgepole::Dumper.new(@options)
|
15
13
|
@parser = Ridgepole::DSLParser.new(@options)
|
16
14
|
@diff = Ridgepole::Diff.new(@options)
|
17
15
|
|
18
|
-
if @options[:mysql_use_alter]
|
19
|
-
require 'ridgepole/ext/abstract_mysql_adapter/use_alter_index'
|
20
|
-
end
|
16
|
+
require 'ridgepole/ext/abstract_mysql_adapter/use_alter_index' if @options[:mysql_use_alter]
|
21
17
|
|
22
|
-
if @options[:mysql_dump_auto_increment]
|
23
|
-
require 'ridgepole/ext/abstract_mysql_adapter/dump_auto_increment'
|
24
|
-
end
|
18
|
+
require 'ridgepole/ext/abstract_mysql_adapter/dump_auto_increment' if @options[:mysql_dump_auto_increment]
|
25
19
|
end
|
26
20
|
|
27
21
|
def dump(&block)
|
data/lib/ridgepole/delta.rb
CHANGED
@@ -110,9 +110,7 @@ module Ridgepole
|
|
110
110
|
|
111
111
|
begin
|
112
112
|
with_pre_post_query(options) do
|
113
|
-
unless script.empty?
|
114
|
-
ActiveRecord::Schema.new.instance_eval(script, SCRIPT_NAME, 1)
|
115
|
-
end
|
113
|
+
ActiveRecord::Schema.new.instance_eval(script, SCRIPT_NAME, 1) unless script.empty?
|
116
114
|
|
117
115
|
execute_count = execute_sqls(options)
|
118
116
|
end
|
@@ -311,9 +309,7 @@ execute "ALTER TABLE #{ActiveRecord::Base.connection.quote_table_name(table_name
|
|
311
309
|
end
|
312
310
|
end
|
313
311
|
|
314
|
-
unless foreign_keys.empty?
|
315
|
-
append_change_foreign_keys(table_name, foreign_keys, pre_buf_for_fk, post_buf_for_fk, @options)
|
316
|
-
end
|
312
|
+
append_change_foreign_keys(table_name, foreign_keys, pre_buf_for_fk, post_buf_for_fk, @options) unless foreign_keys.empty?
|
317
313
|
|
318
314
|
append_change_table_options(table_name, table_options, buf) if table_options
|
319
315
|
|
data/lib/ridgepole/diff.rb
CHANGED
@@ -60,6 +60,7 @@ module Ridgepole
|
|
60
60
|
next unless target?(table_name)
|
61
61
|
|
62
62
|
next unless (from_table_name = (to_attrs[:options] || {}).delete(:renamed_from))
|
63
|
+
|
63
64
|
from_table_name = from_table_name.to_s if from_table_name
|
64
65
|
|
65
66
|
# Already renamed
|
@@ -112,9 +113,7 @@ module Ridgepole
|
|
112
113
|
end
|
113
114
|
|
114
115
|
[from, to].each do |table_attrs|
|
115
|
-
if table_attrs.key?(:default) && table_attrs[:default].nil?
|
116
|
-
table_attrs.delete(:default)
|
117
|
-
end
|
116
|
+
table_attrs.delete(:default) if table_attrs.key?(:default) && table_attrs[:default].nil?
|
118
117
|
end
|
119
118
|
|
120
119
|
if Ridgepole::ConnectionAdapters.mysql?
|
@@ -176,9 +175,7 @@ module Ridgepole
|
|
176
175
|
Ridgepole::DSLParser::TableDefinition::DEFAULT_PRIMARY_KEY_TYPE
|
177
176
|
end
|
178
177
|
|
179
|
-
if %i[integer bigint].include?(type) && !options.key?(:default) && !Ridgepole::ConnectionAdapters.postgresql?
|
180
|
-
options[:auto_increment] = true
|
181
|
-
end
|
178
|
+
options[:auto_increment] = true if %i[integer bigint].include?(type) && !options.key?(:default) && !Ridgepole::ConnectionAdapters.postgresql?
|
182
179
|
|
183
180
|
{ type: type, options: options }
|
184
181
|
end
|
@@ -187,9 +184,7 @@ module Ridgepole
|
|
187
184
|
normalize_column_options!(from_attrs, primary_key)
|
188
185
|
normalize_column_options!(to_attrs, primary_key)
|
189
186
|
|
190
|
-
unless compare_column_attrs(from_attrs, to_attrs)
|
191
|
-
new_to_attrs = fix_change_column_options(table_name, from_attrs, to_attrs)
|
192
|
-
end
|
187
|
+
new_to_attrs = fix_change_column_options(table_name, from_attrs, to_attrs) unless compare_column_attrs(from_attrs, to_attrs)
|
193
188
|
new_to_attrs
|
194
189
|
end
|
195
190
|
|
@@ -197,6 +192,7 @@ module Ridgepole
|
|
197
192
|
from_column_attrs = convert_to_primary_key_attrs(from.slice(*PRIMARY_KEY_OPTIONS))
|
198
193
|
to_column_attrs = convert_to_primary_key_attrs(to.slice(*PRIMARY_KEY_OPTIONS))
|
199
194
|
return if from_column_attrs == to_column_attrs
|
195
|
+
|
200
196
|
build_attrs_if_changed(to_column_attrs, from_column_attrs, table_name, primary_key: true)
|
201
197
|
end
|
202
198
|
|
@@ -240,9 +236,7 @@ module Ridgepole
|
|
240
236
|
added_size = 0
|
241
237
|
to.reverse_each.with_index do |(column_name, to_attrs), i|
|
242
238
|
if to_attrs[:options].delete(:after)
|
243
|
-
if added_size != i
|
244
|
-
@logger.warn("[WARNING] PostgreSQL doesn't support adding a new column except for the last position. #{table_name}.#{column_name} will be added to the last.")
|
245
|
-
end
|
239
|
+
@logger.warn("[WARNING] PostgreSQL doesn't support adding a new column except for the last position. #{table_name}.#{column_name} will be added to the last.") if added_size != i
|
246
240
|
added_size += 1
|
247
241
|
end
|
248
242
|
end
|
@@ -254,12 +248,11 @@ module Ridgepole
|
|
254
248
|
definition_delta[:delete][column_name] = from_attrs
|
255
249
|
|
256
250
|
next unless from_indices
|
251
|
+
|
257
252
|
modified_indices = []
|
258
253
|
|
259
254
|
from_indices.each do |name, attrs|
|
260
|
-
if attrs[:column_name].is_a?(Array) && attrs[:column_name].delete(column_name)
|
261
|
-
modified_indices << name
|
262
|
-
end
|
255
|
+
modified_indices << name if attrs[:column_name].is_a?(Array) && attrs[:column_name].delete(column_name)
|
263
256
|
end
|
264
257
|
|
265
258
|
# In PostgreSQL, the index is deleted when the column is deleted
|
@@ -281,14 +274,13 @@ module Ridgepole
|
|
281
274
|
def scan_column_rename(from, to, definition_delta)
|
282
275
|
to.dup.each do |column_name, to_attrs|
|
283
276
|
next unless (from_column_name = (to_attrs[:options] || {}).delete(:renamed_from))
|
277
|
+
|
284
278
|
from_column_name = from_column_name.to_s if from_column_name
|
285
279
|
|
286
280
|
# Already renamed
|
287
281
|
next if from[column_name]
|
288
282
|
|
289
|
-
unless from.key?(from_column_name)
|
290
|
-
raise "Column `#{from_column_name}` not found"
|
291
|
-
end
|
283
|
+
raise "Column `#{from_column_name}` not found" unless from.key?(from_column_name)
|
292
284
|
|
293
285
|
definition_delta[:rename] ||= {}
|
294
286
|
definition_delta[:rename][column_name] = from_column_name
|
@@ -388,9 +380,7 @@ module Ridgepole
|
|
388
380
|
def columns_all_include?(expected_columns, actual_columns, table_options)
|
389
381
|
return true unless expected_columns.is_a?(Array)
|
390
382
|
|
391
|
-
if (table_options[:id] != false) && !table_options[:primary_key].is_a?(Array)
|
392
|
-
actual_columns += [(table_options[:primary_key] || 'id').to_s]
|
393
|
-
end
|
383
|
+
actual_columns += [(table_options[:primary_key] || 'id').to_s] if (table_options[:id] != false) && !table_options[:primary_key].is_a?(Array)
|
394
384
|
|
395
385
|
expected_columns.all? { |i| actual_columns.include?(i) }
|
396
386
|
end
|
@@ -426,9 +416,7 @@ module Ridgepole
|
|
426
416
|
end
|
427
417
|
end
|
428
418
|
|
429
|
-
unless foreign_keys_delta.empty?
|
430
|
-
table_delta[:foreign_keys] = foreign_keys_delta
|
431
|
-
end
|
419
|
+
table_delta[:foreign_keys] = foreign_keys_delta unless foreign_keys_delta.empty?
|
432
420
|
end
|
433
421
|
|
434
422
|
# XXX: MySQL only?
|
@@ -450,9 +438,7 @@ module Ridgepole
|
|
450
438
|
end
|
451
439
|
|
452
440
|
if Ridgepole::ConnectionAdapters.mysql? && ActiveRecord::VERSION::STRING.start_with?('5.0.')
|
453
|
-
if to_attrs[:options][:default].nil? && (to_attrs[:options][:null] == false)
|
454
|
-
Ridgepole::Logger.instance.warn("[WARNING] Table `#{table_name}`: `default: nil` is ignored when `null: false`. Please apply twice")
|
455
|
-
end
|
441
|
+
Ridgepole::Logger.instance.warn("[WARNING] Table `#{table_name}`: `default: nil` is ignored when `null: false`. Please apply twice") if to_attrs[:options][:default].nil? && (to_attrs[:options][:null] == false)
|
456
442
|
end
|
457
443
|
|
458
444
|
to_attrs
|
@@ -498,14 +484,12 @@ module Ridgepole
|
|
498
484
|
definition = table_attr[:definition] || {}
|
499
485
|
|
500
486
|
definition.each do |column_name, column_attrs|
|
501
|
-
if column_name =~ /\w+_id\z/
|
502
|
-
attrs_by_column[column_name] = column_attrs.dup
|
503
|
-
end
|
487
|
+
attrs_by_column[column_name] = column_attrs.dup if column_name =~ /\w+_id\z/
|
504
488
|
end
|
505
489
|
|
506
490
|
relation_info[table_name] = {
|
507
491
|
options: table_attr[:options] || {},
|
508
|
-
columns: attrs_by_column
|
492
|
+
columns: attrs_by_column,
|
509
493
|
}
|
510
494
|
end
|
511
495
|
|
@@ -537,12 +521,12 @@ module Ridgepole
|
|
537
521
|
|
538
522
|
parent_column_info = {
|
539
523
|
type: table_options[:id] || @options[:check_relation_type].to_sym,
|
540
|
-
unsigned: table_options[:unsigned]
|
524
|
+
unsigned: table_options[:unsigned],
|
541
525
|
}
|
542
526
|
|
543
527
|
child_column_info = {
|
544
528
|
type: column_attrs[:type],
|
545
|
-
unsigned: column_attrs.fetch(:options, {})[:unsigned]
|
529
|
+
unsigned: column_attrs.fetch(:options, {})[:unsigned],
|
546
530
|
}
|
547
531
|
|
548
532
|
[parent_column_info, child_column_info].each do |column_info|
|
@@ -551,11 +535,12 @@ module Ridgepole
|
|
551
535
|
# for PostgreSQL
|
552
536
|
column_info[:type] = {
|
553
537
|
serial: :integer,
|
554
|
-
bigserial: :bigint
|
538
|
+
bigserial: :bigint,
|
555
539
|
}.fetch(column_info[:type], column_info[:type])
|
556
540
|
end
|
557
541
|
|
558
542
|
next unless parent_column_info != child_column_info
|
543
|
+
|
559
544
|
parent_label = "#{parent_table}.id"
|
560
545
|
child_label = "#{child_table}.#{column_name}"
|
561
546
|
label_len = [parent_label.length, child_label.length].max
|
@@ -571,6 +556,7 @@ module Ridgepole
|
|
571
556
|
|
572
557
|
def check_table_existence(definition)
|
573
558
|
return unless @options[:tables]
|
559
|
+
|
574
560
|
@options[:tables].each do |table_name|
|
575
561
|
@logger.warn "[WARNING] '#{table_name}' definition is not found" unless definition.key?(table_name)
|
576
562
|
end
|
data/lib/ridgepole/dsl_parser.rb
CHANGED
@@ -15,17 +15,13 @@ module Ridgepole
|
|
15
15
|
|
16
16
|
def check_orphan_index(definition)
|
17
17
|
definition.each do |table_name, attrs|
|
18
|
-
if attrs[:indices] && !(attrs[:definition])
|
19
|
-
raise "Table `#{table_name}` to create the index is not defined: #{attrs[:indices].keys.join(',')}"
|
20
|
-
end
|
18
|
+
raise "Table `#{table_name}` to create the index is not defined: #{attrs[:indices].keys.join(',')}" if attrs[:indices] && !(attrs[:definition])
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
24
22
|
def check_orphan_foreign_key(definition)
|
25
23
|
definition.each do |table_name, attrs|
|
26
|
-
if attrs[:foreign_keys] && !(attrs[:definition])
|
27
|
-
raise "Table `#{table_name}` to create the foreign key is not defined: #{attrs[:foreign_keys].keys.join(',')}"
|
28
|
-
end
|
24
|
+
raise "Table `#{table_name}` to create the foreign key is not defined: #{attrs[:foreign_keys].keys.join(',')}" if attrs[:foreign_keys] && !(attrs[:definition])
|
29
25
|
end
|
30
26
|
end
|
31
27
|
end
|
@@ -26,9 +26,7 @@ module Ridgepole
|
|
26
26
|
table_name = table_name.to_s
|
27
27
|
table_definition = TableDefinition.new(table_name, self)
|
28
28
|
|
29
|
-
if options[:primary_key] && options[:primary_key].is_a?(Symbol)
|
30
|
-
options[:primary_key] = options[:primary_key].to_s
|
31
|
-
end
|
29
|
+
options[:primary_key] = options[:primary_key].to_s if options[:primary_key] && options[:primary_key].is_a?(Symbol)
|
32
30
|
if options[:id] && TableDefinition::ALIAS_TYPES.key?(options[:id])
|
33
31
|
type, type_default_opts = TableDefinition::ALIAS_TYPES[options[:id]]
|
34
32
|
options[:id] = type
|
@@ -38,9 +36,7 @@ module Ridgepole
|
|
38
36
|
yield(table_definition)
|
39
37
|
@__definition[table_name] ||= {}
|
40
38
|
|
41
|
-
if @__definition[table_name][:definition]
|
42
|
-
raise "Table `#{table_name}` already defined"
|
43
|
-
end
|
39
|
+
raise "Table `#{table_name}` already defined" if @__definition[table_name][:definition]
|
44
40
|
|
45
41
|
@__definition[table_name][:definition] = table_definition.__definition
|
46
42
|
options.delete(:force)
|
@@ -51,17 +47,13 @@ module Ridgepole
|
|
51
47
|
table_name = table_name.to_s
|
52
48
|
# Keep column_name for expression index support
|
53
49
|
# https://github.com/rails/rails/pull/23393
|
54
|
-
unless column_name.is_a?(String) && /\W/ === column_name # rubocop:disable Style/CaseEquality
|
55
|
-
column_name = [column_name].flatten.map(&:to_s)
|
56
|
-
end
|
50
|
+
column_name = [column_name].flatten.map(&:to_s) unless column_name.is_a?(String) && /\W/ === column_name # rubocop:disable Style/CaseEquality
|
57
51
|
options[:name] = options[:name].to_s if options[:name]
|
58
52
|
@__definition[table_name] ||= {}
|
59
53
|
@__definition[table_name][:indices] ||= {}
|
60
54
|
idx = options[:name] || column_name
|
61
55
|
|
62
|
-
if @__definition[table_name][:indices][idx]
|
63
|
-
raise "Index `#{table_name}(#{idx})` already defined"
|
64
|
-
end
|
56
|
+
raise "Index `#{table_name}(#{idx})` already defined" if @__definition[table_name][:indices][idx]
|
65
57
|
|
66
58
|
if options[:length].is_a?(Numeric)
|
67
59
|
index_length = options[:length]
|
@@ -72,13 +64,11 @@ module Ridgepole
|
|
72
64
|
end
|
73
65
|
end
|
74
66
|
|
75
|
-
if options[:length]
|
76
|
-
options[:length] = options[:length].compact.symbolize_keys
|
77
|
-
end
|
67
|
+
options[:length] = options[:length].compact.symbolize_keys if options[:length]
|
78
68
|
|
79
69
|
@__definition[table_name][:indices][idx] = {
|
80
70
|
column_name: column_name,
|
81
|
-
options: options
|
71
|
+
options: options,
|
82
72
|
}
|
83
73
|
end
|
84
74
|
|
@@ -92,13 +82,11 @@ module Ridgepole
|
|
92
82
|
@__definition[from_table][:foreign_keys] ||= {}
|
93
83
|
idx = options[:name] || [from_table, to_table]
|
94
84
|
|
95
|
-
if @__definition[from_table][:foreign_keys][idx]
|
96
|
-
raise "Foreign Key `#{from_table}(#{idx})` already defined"
|
97
|
-
end
|
85
|
+
raise "Foreign Key `#{from_table}(#{idx})` already defined" if @__definition[from_table][:foreign_keys][idx]
|
98
86
|
|
99
87
|
@__definition[from_table][:foreign_keys][idx] = {
|
100
88
|
to_table: to_table,
|
101
|
-
options: options
|
89
|
+
options: options,
|
102
90
|
}
|
103
91
|
end
|
104
92
|
|
@@ -117,7 +105,7 @@ module Ridgepole
|
|
117
105
|
def execute(sql, _name = nil, &cond)
|
118
106
|
@__execute << {
|
119
107
|
sql: sql,
|
120
|
-
condition: cond
|
108
|
+
condition: cond,
|
121
109
|
}
|
122
110
|
end
|
123
111
|
end
|
@@ -14,7 +14,7 @@ module Ridgepole
|
|
14
14
|
|
15
15
|
@__definition[name] = {
|
16
16
|
type: type,
|
17
|
-
options: options
|
17
|
+
options: options,
|
18
18
|
}
|
19
19
|
end
|
20
20
|
|
@@ -87,7 +87,7 @@ module Ridgepole
|
|
87
87
|
unsigned_integer: [:integer, { unsigned: true }],
|
88
88
|
unsigned_bigint: [:bigint, { unsigned: true }],
|
89
89
|
unsigned_float: [:float, { limit: 24, unsigned: true }],
|
90
|
-
unsigned_decimal: [:decimal, { precision: 10, unsigned: true }]
|
90
|
+
unsigned_decimal: [:decimal, { precision: 10, unsigned: true }],
|
91
91
|
}.freeze
|
92
92
|
|
93
93
|
# XXX:
|
@@ -124,12 +124,15 @@ module Ridgepole
|
|
124
124
|
def references(*args)
|
125
125
|
options = args.extract_options!
|
126
126
|
polymorphic = options.delete(:polymorphic)
|
127
|
+
polymorphic_options = polymorphic.is_a?(Hash) ? polymorphic : {}
|
128
|
+
# https://github.com/rails/rails/blob/5-2-1/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L167
|
129
|
+
polymorphic_options.merge!(options.slice(:null, :first, :after))
|
127
130
|
index_options = options.key?(:index) ? options.delete(:index) : true
|
128
131
|
type = options.delete(:type) || DEFAULT_PRIMARY_KEY_TYPE
|
129
132
|
|
130
133
|
args.each do |col|
|
131
134
|
column("#{col}_id", type, options)
|
132
|
-
column("#{col}_type", :string,
|
135
|
+
column("#{col}_type", :string, polymorphic_options) if polymorphic
|
133
136
|
if index_options
|
134
137
|
columns = polymorphic ? ["#{col}_type", "#{col}_id"] : ["#{col}_id"]
|
135
138
|
index(columns, index_options.is_a?(Hash) ? index_options : {})
|
data/lib/ridgepole/dumper.rb
CHANGED
@@ -13,23 +13,20 @@ module Ridgepole
|
|
13
13
|
if target_tables
|
14
14
|
conn.data_sources.each do |tbl|
|
15
15
|
next if target_tables.include?(tbl)
|
16
|
+
|
16
17
|
ActiveRecord::SchemaDumper.ignore_tables << tbl
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
20
21
|
if ignore_tables
|
21
22
|
conn.data_sources.each do |tbl|
|
22
|
-
if ignore_tables.any? { |i| i =~ tbl } && !(target_tables && target_tables.include?(tbl))
|
23
|
-
ActiveRecord::SchemaDumper.ignore_tables << tbl
|
24
|
-
end
|
23
|
+
ActiveRecord::SchemaDumper.ignore_tables << tbl if ignore_tables.any? { |i| i =~ tbl } && !(target_tables && target_tables.include?(tbl))
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
28
27
|
stream = dump_from(conn)
|
29
28
|
|
30
|
-
if target_tables || ignore_tables
|
31
|
-
ActiveRecord::SchemaDumper.ignore_tables.clear
|
32
|
-
end
|
29
|
+
ActiveRecord::SchemaDumper.ignore_tables.clear if target_tables || ignore_tables
|
33
30
|
|
34
31
|
stream.string.lines.each_cons(2) do |first_line, second_line|
|
35
32
|
if first_line.start_with?('# Could not dump')
|
@@ -44,9 +44,7 @@ module Ridgepole
|
|
44
44
|
private
|
45
45
|
|
46
46
|
def append_alter_extra(sql)
|
47
|
-
if Ridgepole::ExecuteExpander.alter_extra && sql =~ /\AALTER\b/i
|
48
|
-
sql = sql + ',' + Ridgepole::ExecuteExpander.alter_extra
|
49
|
-
end
|
47
|
+
sql = sql + ',' + Ridgepole::ExecuteExpander.alter_extra if Ridgepole::ExecuteExpander.alter_extra && sql =~ /\AALTER\b/i
|
50
48
|
|
51
49
|
sql
|
52
50
|
end
|
@@ -28,13 +28,9 @@ module Ridgepole
|
|
28
28
|
remove_prefix_and_suffix(foreign_key.to_table).inspect
|
29
29
|
]
|
30
30
|
|
31
|
-
if foreign_key.column != @connection.foreign_key_column_for(foreign_key.to_table)
|
32
|
-
parts << "column: #{foreign_key.column.inspect}"
|
33
|
-
end
|
31
|
+
parts << "column: #{foreign_key.column.inspect}" if foreign_key.column != @connection.foreign_key_column_for(foreign_key.to_table)
|
34
32
|
|
35
|
-
if foreign_key.custom_primary_key?
|
36
|
-
parts << "primary_key: #{foreign_key.primary_key.inspect}"
|
37
|
-
end
|
33
|
+
parts << "primary_key: #{foreign_key.primary_key.inspect}" if foreign_key.custom_primary_key?
|
38
34
|
|
39
35
|
parts << "name: #{foreign_key.name.inspect}"
|
40
36
|
|
data/lib/ridgepole/version.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
FROM centos:7
|
2
|
+
|
3
|
+
RUN yum install -y centos-release-scl && \
|
4
|
+
yum-config-manager --enable rhel-server-rhscl-7-rpms && \
|
5
|
+
yum install -y \
|
6
|
+
rh-ruby25-dev \
|
7
|
+
rh-ruby25-ruby-devel \
|
8
|
+
make \
|
9
|
+
gcc \
|
10
|
+
gcc-c++ \
|
11
|
+
git \
|
12
|
+
rpm-build
|
13
|
+
|
14
|
+
RUN scl enable rh-ruby25 -- \
|
15
|
+
gem install --no-document \
|
16
|
+
bundler \
|
17
|
+
omnibus
|
18
|
+
|
19
|
+
COPY Gemfile /
|
20
|
+
RUN scl enable rh-ruby25 -- \
|
21
|
+
bundle install
|
22
|
+
|
23
|
+
WORKDIR /omnibus-ridgepole
|
24
|
+
|
25
|
+
ENTRYPOINT ["/usr/bin/scl", "enable", "rh-ruby25", "--"]
|
@@ -0,0 +1,21 @@
|
|
1
|
+
FROM ubuntu:xenial
|
2
|
+
|
3
|
+
RUN apt-get update && \
|
4
|
+
apt-get install -y software-properties-common
|
5
|
+
|
6
|
+
RUN apt-add-repository -y ppa:brightbox/ruby-ng && \
|
7
|
+
apt-get update && \
|
8
|
+
apt-get install -y \
|
9
|
+
ruby2.5 \
|
10
|
+
ruby2.5-dev \
|
11
|
+
build-essential \
|
12
|
+
git
|
13
|
+
|
14
|
+
RUN gem install --no-document \
|
15
|
+
bundler \
|
16
|
+
omnibus
|
17
|
+
|
18
|
+
COPY Gemfile /
|
19
|
+
RUN bundle install
|
20
|
+
|
21
|
+
WORKDIR /omnibus-ridgepole
|
@@ -0,0 +1,24 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
# Install omnibus
|
4
|
+
gem 'omnibus', '~> 6.0'
|
5
|
+
gem 'omnibus-software', git: 'https://github.com/chef/omnibus-software.git'
|
6
|
+
|
7
|
+
gem 'rake'
|
8
|
+
|
9
|
+
# Use Chef's software definitions. It is recommended that you write your own
|
10
|
+
# software definitions, but you can clone/fork Chef's to get you started.
|
11
|
+
# gem 'omnibus-software', github: 'chef/omnibus-software'
|
12
|
+
|
13
|
+
# This development group is installed by default when you run `bundle install`,
|
14
|
+
# but if you are using Omnibus in a CI-based infrastructure, you do not need
|
15
|
+
# the Test Kitchen-based build lab. You can skip these unnecessary dependencies
|
16
|
+
# by running `bundle install --without development` to speed up build times.
|
17
|
+
group :development do
|
18
|
+
# Use Berkshelf for resolving cookbook dependencies
|
19
|
+
gem 'berkshelf', '~> 3.3'
|
20
|
+
|
21
|
+
# Use Test Kitchen with Vagrant for converging the build environment
|
22
|
+
gem 'test-kitchen', '~> 1.4'
|
23
|
+
gem 'kitchen-vagrant', '~> 0.18'
|
24
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
DOCKER_IMAGE_UBUNTU = 'omnibus-ridgepole-ubuntu'
|
2
|
+
DOCKER_IMAGE_CENTOS = 'omnibus-ridgepole-chentos'
|
3
|
+
|
4
|
+
namespace :docker do
|
5
|
+
namespace :image do
|
6
|
+
task build: ['build:ubuntu', 'build:centos']
|
7
|
+
|
8
|
+
namespace :build do
|
9
|
+
task :ubuntu do
|
10
|
+
sh 'docker', 'build', '-t', DOCKER_IMAGE_UBUNTU, '-f', 'Dockerfile.ubuntu', '.'
|
11
|
+
end
|
12
|
+
|
13
|
+
task :centos do
|
14
|
+
sh 'docker', 'build', '-t', DOCKER_IMAGE_CENTOS, '-f', 'Dockerfile.centos', '.'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
namespace :omnibus do
|
20
|
+
task :build do
|
21
|
+
sh 'omnibus', 'build', 'ridgepole'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
namespace :omnibus do
|
27
|
+
task build: ['build:ubuntu', 'build:centos']
|
28
|
+
|
29
|
+
namespace :build do
|
30
|
+
task :ubuntu do
|
31
|
+
sh 'docker', 'run', '-v', "#{pwd}:/omnibus-ridgepole", DOCKER_IMAGE_UBUNTU, 'bundle', 'exec', 'rake docker:omnibus:build'
|
32
|
+
end
|
33
|
+
|
34
|
+
task :centos do
|
35
|
+
sh 'docker', 'run', '-v', "#{pwd}:/omnibus-ridgepole", DOCKER_IMAGE_CENTOS, 'bundle', 'exec', 'rake docker:omnibus:build'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'open-uri'
|
3
|
+
|
4
|
+
name 'ridgepole'
|
5
|
+
maintainer 'winebarrel <sugawara@winebarrel.jp>'
|
6
|
+
homepage 'https://github.com/winebarrel/ridgepole'
|
7
|
+
|
8
|
+
# Defaults to C:/ridgepole on Windows
|
9
|
+
# and /opt/ridgepole on all other platforms
|
10
|
+
install_dir "#{default_root}/#{name}"
|
11
|
+
|
12
|
+
build_version JSON.parse(open('https://rubygems.org/api/v1/gems/ridgepole.json', &:read)).fetch('version')
|
13
|
+
build_iteration 1
|
14
|
+
|
15
|
+
dependency 'preparation'
|
16
|
+
|
17
|
+
# ridgepole dependencies/components
|
18
|
+
override :ruby, version: '2.5.1'
|
19
|
+
dependency 'ruby'
|
20
|
+
dependency 'rubygems'
|
21
|
+
dependency 'ridgepole'
|
22
|
+
|
23
|
+
# Version manifest file
|
24
|
+
dependency 'version-manifest'
|
25
|
+
|
26
|
+
exclude '**/.git'
|
27
|
+
exclude '**/bundler/git'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'open-uri'
|
3
|
+
|
4
|
+
name 'ridgepole'
|
5
|
+
|
6
|
+
default_version JSON.parse(open('https://rubygems.org/api/v1/gems/ridgepole.json', &:read)).fetch('version')
|
7
|
+
|
8
|
+
license 'MIT'
|
9
|
+
skip_transitive_dependency_licensing true
|
10
|
+
|
11
|
+
build do
|
12
|
+
gem 'install ridgepole -N'
|
13
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#
|
2
|
+
# This file is used to configure the ridgepole project. It contains
|
3
|
+
# some minimal configuration examples for working with Omnibus. For a full list
|
4
|
+
# of configurable options, please see the documentation for +omnibus/config.rb+.
|
5
|
+
#
|
6
|
+
|
7
|
+
# Build internally
|
8
|
+
# ------------------------------
|
9
|
+
# By default, Omnibus uses system folders (like +/var+ and +/opt+) to build and
|
10
|
+
# cache components. If you would to build everything internally, you can
|
11
|
+
# uncomment the following options. This will prevent the need for root
|
12
|
+
# permissions in most cases.
|
13
|
+
#
|
14
|
+
# Uncomment this line to change the default base directory to "local"
|
15
|
+
# -------------------------------------------------------------------
|
16
|
+
# base_dir './local'
|
17
|
+
#
|
18
|
+
# Alternatively you can tune the individual values
|
19
|
+
# ------------------------------------------------
|
20
|
+
# cache_dir './local/omnibus/cache'
|
21
|
+
# git_cache_dir './local/omnibus/cache/git_cache'
|
22
|
+
# source_dir './local/omnibus/src'
|
23
|
+
# build_dir './local/omnibus/build'
|
24
|
+
# package_dir './local/omnibus/pkg'
|
25
|
+
# package_tmp './local/omnibus/pkg-tmp'
|
26
|
+
|
27
|
+
# Disable git caching
|
28
|
+
# ------------------------------
|
29
|
+
# use_git_caching false
|
30
|
+
|
31
|
+
# Enable S3 asset caching
|
32
|
+
# ------------------------------
|
33
|
+
# use_s3_caching true
|
34
|
+
# s3_access_key ENV['AWS_ACCESS_KEY_ID']
|
35
|
+
# s3_secret_key ENV['AWS_SECRET_ACCESS_KEY']
|
36
|
+
# s3_profile ENV['AWS_S3_PROFILE']
|
37
|
+
# s3_bucket ENV['AWS_S3_BUCKET']
|
38
|
+
|
39
|
+
# Customize compiler bits
|
40
|
+
# ------------------------------
|
41
|
+
# solaris_compiler 'gcc'
|
42
|
+
# build_retries 5
|
43
|
+
# fetcher_read_timeout 120
|
44
|
+
# fetcher_retries 5
|
45
|
+
|
46
|
+
# Load additional software
|
47
|
+
# ------------------------------
|
48
|
+
# software_gems ['omnibus-software', 'my-company-software']
|
49
|
+
# local_software_dirs ['/path/to/local/software']
|
50
|
+
|
51
|
+
# Windows architecture defaults
|
52
|
+
# ------------------------------
|
53
|
+
windows_arch %w{x86 x64}.include?((ENV['OMNIBUS_WINDOWS_ARCH'] || '').downcase) ?
|
54
|
+
ENV['OMNIBUS_WINDOWS_ARCH'].downcase.to_sym : :x86
|
@@ -0,0 +1 @@
|
|
1
|
+
ln -sf /opt/ridgepole/embedded/bin/ridgepole /usr/bin
|
@@ -0,0 +1 @@
|
|
1
|
+
rm -f /usr/bin/ridgepole
|
@@ -168,6 +168,37 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
168
168
|
}
|
169
169
|
end
|
170
170
|
|
171
|
+
context 'when use references with unsigned polymorphic (no change)' do
|
172
|
+
let(:actual_dsl) do
|
173
|
+
erbh(<<-ERB)
|
174
|
+
create_table "employees", primary_key: "emp_no", force: :cascade do |t|
|
175
|
+
t.<%= cond('>= 5.1','bigint', 'integer') %> "products_id", unsigned: true
|
176
|
+
t.string "products_type"
|
177
|
+
t.<%= cond('>= 5.1','bigint', 'integer') %> "user_id", unsigned: true
|
178
|
+
t.string "user_type"
|
179
|
+
t.index ["products_type", "products_id"]
|
180
|
+
t.index ["user_type", "user_id"]
|
181
|
+
end
|
182
|
+
ERB
|
183
|
+
end
|
184
|
+
|
185
|
+
let(:expected_dsl) do
|
186
|
+
<<-RUBY
|
187
|
+
create_table "employees", primary_key: "emp_no", force: :cascade do |t|
|
188
|
+
t.references :products, :user, unsigned: true, polymorphic: true
|
189
|
+
end
|
190
|
+
RUBY
|
191
|
+
end
|
192
|
+
|
193
|
+
before { subject.diff(actual_dsl).migrate }
|
194
|
+
subject { client }
|
195
|
+
|
196
|
+
it {
|
197
|
+
delta = subject.diff(expected_dsl)
|
198
|
+
expect(delta.differ?).to be_falsey
|
199
|
+
}
|
200
|
+
end
|
201
|
+
|
171
202
|
context 'when use references (change)' do
|
172
203
|
let(:actual_dsl) do
|
173
204
|
erbh(<<-ERB)
|
data/spec/spec_helper.rb
CHANGED
@@ -119,7 +119,7 @@ module SpecHelper
|
|
119
119
|
host: TEST_PG_HOST,
|
120
120
|
port: TEST_PG_PORT,
|
121
121
|
username: TEST_PG_USER,
|
122
|
-
password: TEST_PG_PASS
|
122
|
+
password: TEST_PG_PASS,
|
123
123
|
}.merge(config)
|
124
124
|
else
|
125
125
|
{
|
@@ -128,7 +128,7 @@ module SpecHelper
|
|
128
128
|
host: TEST_MYSQL_HOST,
|
129
129
|
port: TEST_MYSQL_PORT,
|
130
130
|
username: TEST_MYSQL_USER,
|
131
|
-
password: TEST_MYSQL_PASS
|
131
|
+
password: TEST_MYSQL_PASS,
|
132
132
|
}.merge(config)
|
133
133
|
end
|
134
134
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ridgepole
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.5.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: 2018-
|
11
|
+
date: 2018-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -272,6 +272,17 @@ files:
|
|
272
272
|
- lib/ridgepole/schema_dumper_ext.rb
|
273
273
|
- lib/ridgepole/schema_statements_ext.rb
|
274
274
|
- lib/ridgepole/version.rb
|
275
|
+
- omnibus-ridgepole/.gitignore
|
276
|
+
- omnibus-ridgepole/Dockerfile.centos
|
277
|
+
- omnibus-ridgepole/Dockerfile.ubuntu
|
278
|
+
- omnibus-ridgepole/Gemfile
|
279
|
+
- omnibus-ridgepole/README.md
|
280
|
+
- omnibus-ridgepole/Rakefile
|
281
|
+
- omnibus-ridgepole/config/projects/ridgepole.rb
|
282
|
+
- omnibus-ridgepole/config/software/ridgepole.rb
|
283
|
+
- omnibus-ridgepole/omnibus.rb
|
284
|
+
- omnibus-ridgepole/package-scripts/ridgepole/postinst
|
285
|
+
- omnibus-ridgepole/package-scripts/ridgepole/postrm
|
275
286
|
- ridgepole.gemspec
|
276
287
|
- spec/cli_helper.rb
|
277
288
|
- spec/erb_helper.rb
|
@@ -421,12 +432,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
421
432
|
version: 2.2.7
|
422
433
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
423
434
|
requirements:
|
424
|
-
- - "
|
435
|
+
- - ">"
|
425
436
|
- !ruby/object:Gem::Version
|
426
|
-
version:
|
437
|
+
version: 1.3.1
|
427
438
|
requirements: []
|
428
439
|
rubyforge_project:
|
429
|
-
rubygems_version: 2.6
|
440
|
+
rubygems_version: 2.7.6
|
430
441
|
signing_key:
|
431
442
|
specification_version: 4
|
432
443
|
summary: Ridgepole is a tool to manage DB schema.
|