ridgepole 1.0.1 → 3.1.5

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.
@@ -13,19 +13,24 @@ module Ridgepole
13
13
  end
14
14
 
15
15
  module ConnectionAdapterExt
16
- def execute(*args)
17
- sql = args.fetch(0)
18
- name = args[1]
19
-
16
+ def execute_expander_internal_execute(sql, &block)
17
+ # Generated/virtual columns cannot have DEFAULT values in MySQL.
18
+ # Rails' change_column always adds DEFAULT from the existing column,
19
+ # so we strip it from the SQL for virtual columns.
20
+ # cf. https://github.com/ridgepole/ridgepole/issues/482
21
+ if Ridgepole::ConnectionAdapters.mysql? && !Ridgepole::ExecuteExpander.options[:bulk_change]
22
+ # NOTE: bulk_change does not support changing MySQL generated columns with `DEFAULT NULL`.
23
+ sql = sql.sub(/\bDEFAULT\s+NULL\z/i, '') if /\AALTER\s+TABLE\b/i.match?(sql) && /\bAS\s*\(/i.match?(sql) && /\bDEFAULT\s+NULL\z/i.match?(sql)
24
+ end
20
25
  if Ridgepole::ExecuteExpander.noop
21
26
  if (callback = Ridgepole::ExecuteExpander.callback)
22
27
  sql = append_alter_extra(sql)
23
- callback.call(sql, name)
28
+ callback.call(sql)
24
29
  end
25
30
 
26
31
  if /\A(SELECT|SHOW)\b/i.match?(sql)
27
32
  begin
28
- super(sql, name)
33
+ block.call(sql)
29
34
  rescue StandardError
30
35
  Stub.new
31
36
  end
@@ -34,7 +39,7 @@ module Ridgepole
34
39
  end
35
40
  elsif Ridgepole::ExecuteExpander.use_script
36
41
  if /\A(SELECT|SHOW)\b/i.match?(sql)
37
- super(sql, name)
42
+ block.call(sql)
38
43
  else
39
44
  sql = append_alter_extra(sql)
40
45
  Ridgepole::ExecuteExpander.sql_executer.execute(sql)
@@ -42,10 +47,28 @@ module Ridgepole
42
47
  end
43
48
  else
44
49
  sql = append_alter_extra(sql)
50
+ block.call(sql)
51
+ end
52
+ end
53
+
54
+ def execute(*args)
55
+ name = args[1]
56
+ execute_expander_internal_execute(args.fetch(0)) do |sql|
45
57
  super(sql, name)
46
58
  end
47
59
  end
48
60
 
61
+ def execute_batch(statements, name = nil, **kwargs)
62
+ new_statements = []
63
+ statements.each do |statement|
64
+ execute_expander_internal_execute(statement) do |sql|
65
+ new_statements << sql
66
+ end
67
+ end
68
+ super(new_statements, name, **kwargs) unless new_statements.empty?
69
+ statements
70
+ end
71
+
49
72
  private
50
73
 
51
74
  def append_alter_extra(sql)
@@ -69,6 +92,7 @@ module Ridgepole
69
92
  cattr_accessor :use_script, instance_writer: false, instance_reader: false
70
93
  cattr_accessor :sql_executer, instance_writer: false, instance_reader: false
71
94
  cattr_accessor :alter_extra, instance_writer: false, instance_reader: false
95
+ cattr_accessor :options, instance_writer: false, instance_reader: false
72
96
 
73
97
  class << self
74
98
  def without_operation(callback = nil)
@@ -96,9 +120,11 @@ module Ridgepole
96
120
  self.alter_extra = nil
97
121
  end
98
122
 
99
- def expand_execute(connection)
123
+ def expand_execute(connection, options)
100
124
  return if connection.is_a?(ConnectionAdapterExt)
101
125
 
126
+ self.options = options
127
+
102
128
  connection.class_eval do
103
129
  prepend ConnectionAdapterExt
104
130
  end
@@ -18,8 +18,6 @@ module Ridgepole
18
18
 
19
19
  if options && @__without_table_options
20
20
  options.delete(:options)
21
-
22
- # For >= AR 6.1.0
23
21
  options.delete(:charset)
24
22
  options.delete(:collation)
25
23
  end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_record/schema_dumper'
4
+
5
+ module Ridgepole
6
+ module Ext
7
+ module SchemaDumper
8
+ module DisableSortColumns
9
+ def table(table, stream)
10
+ def @connection.columns(*_args)
11
+ cols = super
12
+ def cols.sort_by(*_args, &_block)
13
+ self
14
+ end
15
+ cols
16
+ end
17
+ super
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ module ActiveRecord
25
+ class SchemaDumper
26
+ prepend Ridgepole::Ext::SchemaDumper::DisableSortColumns
27
+ end
28
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_record/schema_dumper'
4
+
5
+ module Ridgepole
6
+ module Ext
7
+ module SchemaDumper
8
+ module ForeignKeys
9
+ def self.prepended(klass)
10
+ klass.extend ClassMethods
11
+ end
12
+
13
+ module ClassMethods
14
+ attr_reader :__with_default_fk_name
15
+
16
+ def with_default_fk_name(value)
17
+ @__with_default_fk_name = value
18
+ yield
19
+ ensure
20
+ remove_instance_variable(:@__with_default_fk_name)
21
+ end
22
+ end
23
+
24
+ def foreign_keys(table, stream)
25
+ return super unless ActiveRecord::SchemaDumper.__with_default_fk_name
26
+
27
+ if (foreign_keys = @connection.foreign_keys(table)).any?
28
+ add_foreign_key_statements = foreign_keys.map do |foreign_key|
29
+ parts = [
30
+ "add_foreign_key #{remove_prefix_and_suffix(foreign_key.from_table).inspect}",
31
+ remove_prefix_and_suffix(foreign_key.to_table).inspect
32
+ ]
33
+
34
+ parts << "column: #{foreign_key.column.inspect}" if foreign_key.column != foreign_key_column_for(foreign_key)
35
+
36
+ parts << "primary_key: #{foreign_key.primary_key.inspect}" if foreign_key.custom_primary_key?
37
+
38
+ parts << "name: #{foreign_key.name.inspect}"
39
+
40
+ parts << "on_update: #{foreign_key.on_update.inspect}" if foreign_key.on_update
41
+ parts << "on_delete: #{foreign_key.on_delete.inspect}" if foreign_key.on_delete
42
+
43
+ " #{parts.join(', ')}"
44
+ end
45
+
46
+ stream.puts add_foreign_key_statements.sort.join("\n")
47
+ end
48
+ end
49
+
50
+ private
51
+
52
+ def foreign_key_column_for(foreign_key)
53
+ if ActiveRecord.gem_version < Gem::Version.new('7.1.0')
54
+ @connection.foreign_key_column_for(foreign_key.to_table)
55
+ else
56
+ @connection.foreign_key_column_for(foreign_key.to_table, 'id')
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ module ActiveRecord
65
+ class SchemaDumper
66
+ prepend Ridgepole::Ext::SchemaDumper::ForeignKeys
67
+ end
68
+ end
@@ -8,7 +8,7 @@ module Ridgepole
8
8
  end
9
9
 
10
10
  def execute(sql)
11
- cmd = Shellwords.join([@script, sql, JSON.dump(connection_configuration_hash)])
11
+ cmd = Shellwords.join([@script, sql, JSON.dump(ActiveRecord::Base.connection_db_config.configuration_hash)])
12
12
  @logger.info("Execute #{@script}")
13
13
  script_basename = File.basename(@script)
14
14
 
@@ -46,16 +46,5 @@ module Ridgepole
46
46
  raise "`#{@script}` execution failed" unless wait_thr.value.success?
47
47
  end
48
48
  end
49
-
50
- private
51
-
52
- def connection_configuration_hash
53
- if ActiveRecord.gem_version < Gem::Version.new('6.1.0')
54
- # NOTE: Remove code when stopping support for versions below 6.1
55
- ActiveRecord::Base.connection_config
56
- else
57
- ActiveRecord::Base.connection_db_config.configuration_hash
58
- end
59
- end
60
49
  end
61
50
  end
@@ -3,6 +3,7 @@
3
3
  module Ridgepole
4
4
  class Logger < ::Logger
5
5
  include Singleton
6
+
6
7
  cattr_accessor :verbose
7
8
 
8
9
  def initialize
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ridgepole
4
- VERSION = '1.0.1'
4
+ VERSION = '3.1.5'
5
5
  end
data/lib/ridgepole.rb CHANGED
@@ -17,7 +17,7 @@ module Ridgepole; end
17
17
 
18
18
  require 'ridgepole/ext/abstract_adapter/disable_table_options'
19
19
  require 'ridgepole/ext/pp_sort_hash'
20
- require 'ridgepole/ext/schema_dumper'
20
+ require 'ridgepole/ext/schema_dumper/foreign_keys'
21
21
  require 'ridgepole/client'
22
22
  require 'ridgepole/connection_adapters'
23
23
  require 'ridgepole/default_limit'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridgepole
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 3.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2022-01-15 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activerecord
@@ -16,20 +15,20 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '5.1'
18
+ version: '6.1'
20
19
  - - "<"
21
20
  - !ruby/object:Gem::Version
22
- version: '7.1'
21
+ version: '8.3'
23
22
  type: :runtime
24
23
  prerelease: false
25
24
  version_requirements: !ruby/object:Gem::Requirement
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- version: '5.1'
28
+ version: '6.1'
30
29
  - - "<"
31
30
  - !ruby/object:Gem::Version
32
- version: '7.1'
31
+ version: '8.3'
33
32
  - !ruby/object:Gem::Dependency
34
33
  name: diffy
35
34
  requirement: !ruby/object:Gem::Requirement
@@ -44,6 +43,20 @@ dependencies:
44
43
  - - ">="
45
44
  - !ruby/object:Gem::Version
46
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: logger
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ type: :runtime
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
47
60
  - !ruby/object:Gem::Dependency
48
61
  name: appraisal
49
62
  requirement: !ruby/object:Gem::Requirement
@@ -58,6 +71,20 @@ dependencies:
58
71
  - - ">="
59
72
  - !ruby/object:Gem::Version
60
73
  version: 2.2.0
74
+ - !ruby/object:Gem::Dependency
75
+ name: bigdecimal
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
61
88
  - !ruby/object:Gem::Dependency
62
89
  name: bundler
63
90
  requirement: !ruby/object:Gem::Requirement
@@ -92,14 +119,14 @@ dependencies:
92
119
  requirements:
93
120
  - - ">="
94
121
  - !ruby/object:Gem::Version
95
- version: 0.1.1
122
+ version: 0.2.0
96
123
  type: :development
97
124
  prerelease: false
98
125
  version_requirements: !ruby/object:Gem::Requirement
99
126
  requirements:
100
127
  - - ">="
101
128
  - !ruby/object:Gem::Version
102
- version: 0.1.1
129
+ version: 0.2.0
103
130
  - !ruby/object:Gem::Dependency
104
131
  name: hash_order_helper
105
132
  requirement: !ruby/object:Gem::Requirement
@@ -170,48 +197,62 @@ dependencies:
170
197
  - - ">="
171
198
  - !ruby/object:Gem::Version
172
199
  version: 3.0.0
200
+ - !ruby/object:Gem::Dependency
201
+ name: rspec_junit_formatter
202
+ requirement: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ type: :development
208
+ prerelease: false
209
+ version_requirements: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
173
214
  - !ruby/object:Gem::Dependency
174
215
  name: rspec-match_fuzzy
175
216
  requirement: !ruby/object:Gem::Requirement
176
217
  requirements:
177
218
  - - ">="
178
219
  - !ruby/object:Gem::Version
179
- version: 0.1.3
220
+ version: 0.2.0
180
221
  type: :development
181
222
  prerelease: false
182
223
  version_requirements: !ruby/object:Gem::Requirement
183
224
  requirements:
184
225
  - - ">="
185
226
  - !ruby/object:Gem::Version
186
- version: 0.1.3
227
+ version: 0.2.0
187
228
  - !ruby/object:Gem::Dependency
188
229
  name: rspec-match_ruby
189
230
  requirement: !ruby/object:Gem::Requirement
190
231
  requirements:
191
232
  - - ">="
192
233
  - !ruby/object:Gem::Version
193
- version: 0.1.3
234
+ version: 0.2.0
194
235
  type: :development
195
236
  prerelease: false
196
237
  version_requirements: !ruby/object:Gem::Requirement
197
238
  requirements:
198
239
  - - ">="
199
240
  - !ruby/object:Gem::Version
200
- version: 0.1.3
241
+ version: 0.2.0
201
242
  - !ruby/object:Gem::Dependency
202
243
  name: rubocop
203
244
  requirement: !ruby/object:Gem::Requirement
204
245
  requirements:
205
246
  - - '='
206
247
  - !ruby/object:Gem::Version
207
- version: 1.24.1
248
+ version: 1.85.1
208
249
  type: :development
209
250
  prerelease: false
210
251
  version_requirements: !ruby/object:Gem::Requirement
211
252
  requirements:
212
253
  - - '='
213
254
  - !ruby/object:Gem::Version
214
- version: 1.24.1
255
+ version: 1.85.1
215
256
  - !ruby/object:Gem::Dependency
216
257
  name: rubocop-rake
217
258
  requirement: !ruby/object:Gem::Requirement
@@ -254,6 +295,34 @@ dependencies:
254
295
  - - ">="
255
296
  - !ruby/object:Gem::Version
256
297
  version: '0'
298
+ - !ruby/object:Gem::Dependency
299
+ name: simplecov-cobertura
300
+ requirement: !ruby/object:Gem::Requirement
301
+ requirements:
302
+ - - ">="
303
+ - !ruby/object:Gem::Version
304
+ version: '0'
305
+ type: :development
306
+ prerelease: false
307
+ version_requirements: !ruby/object:Gem::Requirement
308
+ requirements:
309
+ - - ">="
310
+ - !ruby/object:Gem::Version
311
+ version: '0'
312
+ - !ruby/object:Gem::Dependency
313
+ name: simplecov-html
314
+ requirement: !ruby/object:Gem::Requirement
315
+ requirements:
316
+ - - ">="
317
+ - !ruby/object:Gem::Version
318
+ version: '0'
319
+ type: :development
320
+ prerelease: false
321
+ version_requirements: !ruby/object:Gem::Requirement
322
+ requirements:
323
+ - - ">="
324
+ - !ruby/object:Gem::Version
325
+ version: '0'
257
326
  - !ruby/object:Gem::Dependency
258
327
  name: simplecov-lcov
259
328
  requirement: !ruby/object:Gem::Requirement
@@ -268,6 +337,20 @@ dependencies:
268
337
  - - ">="
269
338
  - !ruby/object:Gem::Version
270
339
  version: '0'
340
+ - !ruby/object:Gem::Dependency
341
+ name: trilogy
342
+ requirement: !ruby/object:Gem::Requirement
343
+ requirements:
344
+ - - ">="
345
+ - !ruby/object:Gem::Version
346
+ version: '0'
347
+ type: :development
348
+ prerelease: false
349
+ version_requirements: !ruby/object:Gem::Requirement
350
+ requirements:
351
+ - - ">="
352
+ - !ruby/object:Gem::Version
353
+ version: '0'
271
354
  description: Ridgepole is a tool to manage DB schema. It defines DB schema using Rails
272
355
  DSL, and updates DB schema according to DSL.
273
356
  email:
@@ -277,22 +360,10 @@ executables:
277
360
  extensions: []
278
361
  extra_rdoc_files: []
279
362
  files:
280
- - ".rspec"
281
- - ".rubocop.yml"
282
- - ".simplecov"
283
- - Appraisals
284
363
  - CHANGELOG.md
285
- - Gemfile
286
364
  - LICENSE.txt
287
365
  - README.md
288
- - Rakefile
289
366
  - bin/ridgepole
290
- - docker-compose.yml
291
- - gemfiles/activerecord_5.1.gemfile
292
- - gemfiles/activerecord_5.2.gemfile
293
- - gemfiles/activerecord_6.0.gemfile
294
- - gemfiles/activerecord_6.1.gemfile
295
- - gemfiles/activerecord_7.0.gemfile
296
367
  - lib/ridgepole.rb
297
368
  - lib/ridgepole/cli/config.rb
298
369
  - lib/ridgepole/client.rb
@@ -308,20 +379,19 @@ files:
308
379
  - lib/ridgepole/ext/abstract_adapter/disable_table_options.rb
309
380
  - lib/ridgepole/ext/abstract_mysql_adapter/dump_auto_increment.rb
310
381
  - lib/ridgepole/ext/pp_sort_hash.rb
311
- - lib/ridgepole/ext/schema_dumper.rb
382
+ - lib/ridgepole/ext/schema_dumper/disable_sort_columns.rb
383
+ - lib/ridgepole/ext/schema_dumper/foreign_keys.rb
312
384
  - lib/ridgepole/external_sql_executer.rb
313
385
  - lib/ridgepole/logger.rb
314
386
  - lib/ridgepole/migration_ext.rb
315
387
  - lib/ridgepole/schema_dumper_ext.rb
316
388
  - lib/ridgepole/schema_statements_ext.rb
317
389
  - lib/ridgepole/version.rb
318
- - ridgepole.gemspec
319
390
  homepage: https://github.com/ridgepole/ridgepole
320
391
  licenses:
321
392
  - MIT
322
393
  metadata:
323
394
  rubygems_mfa_required: 'true'
324
- post_install_message:
325
395
  rdoc_options: []
326
396
  require_paths:
327
397
  - lib
@@ -329,15 +399,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
329
399
  requirements:
330
400
  - - ">="
331
401
  - !ruby/object:Gem::Version
332
- version: 2.2.7
402
+ version: '2.7'
333
403
  required_rubygems_version: !ruby/object:Gem::Requirement
334
404
  requirements:
335
405
  - - ">="
336
406
  - !ruby/object:Gem::Version
337
407
  version: '0'
338
408
  requirements: []
339
- rubygems_version: 3.2.32
340
- signing_key:
409
+ rubygems_version: 4.0.3
341
410
  specification_version: 4
342
411
  summary: Ridgepole is a tool to manage DB schema.
343
412
  test_files: []
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --color
2
- --require spec_helper
3
- --format HidePendingFormatter
data/.rubocop.yml DELETED
@@ -1,53 +0,0 @@
1
- AllCops:
2
- Exclude:
3
- - "gemfiles/**/*"
4
- - "omnibus-ridgepole/**/*"
5
- - "vendor/bundle/**/*"
6
- TargetRubyVersion: 2.5
7
- NewCops: enable
8
- Bundler/OrderedGems:
9
- Include:
10
- - "Appraisals"
11
- Layout/HeredocIndentation:
12
- Enabled: false
13
- Metrics/AbcSize:
14
- Enabled: false
15
- Metrics/BlockLength:
16
- Enabled: false
17
- Metrics/BlockNesting:
18
- Enabled: false
19
- Metrics/ClassLength:
20
- Enabled: false
21
- Metrics/CyclomaticComplexity:
22
- Enabled: false
23
- Layout/LineLength:
24
- Enabled: false
25
- Metrics/MethodLength:
26
- Enabled: false
27
- Metrics/ParameterLists:
28
- Enabled: false
29
- Metrics/PerceivedComplexity:
30
- Enabled: false
31
- Style/Documentation:
32
- Enabled: false
33
- Style/GuardClause:
34
- Enabled: false
35
- Style/MixinUsage:
36
- Exclude:
37
- - "spec/**/*"
38
- Style/TrailingCommaInHashLiteral:
39
- EnforcedStyleForMultiline: consistent_comma
40
- Layout/ClosingHeredocIndentation:
41
- Enabled: false
42
- Style/NumericPredicate:
43
- Enabled: false
44
- Lint/MissingSuper:
45
- Enabled: false
46
- Style/StringConcatenation:
47
- Enabled: false
48
- Style/SoleNestedConditional:
49
- Enabled: false
50
- Lint/DuplicateBranch:
51
- Enabled: false
52
- Style/OptionalBooleanParameter:
53
- Enabled: false
data/.simplecov DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- SimpleCov.configure do
4
- # exclude directories and files
5
- add_filter '/spec/'
6
- end
data/Appraisals DELETED
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- appraise 'activerecord-5.1' do
4
- gem 'activerecord', '~> 5.1.0'
5
- end
6
-
7
- appraise 'activerecord-5.2' do
8
- gem 'activerecord', '~> 5.2.0'
9
- gem 'mysql2', '~> 0.4.4'
10
- end
11
-
12
- appraise 'activerecord-6.0' do
13
- gem 'activerecord', '~> 6.0.0'
14
- end
15
-
16
- appraise 'activerecord-6.1' do
17
- gem 'activerecord', '~> 6.1.0'
18
- end
19
-
20
- appraise 'activerecord-7.0' do
21
- gem 'activerecord', '~> 7.0.0'
22
- end
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in ridgepole.gemspec
6
- gemspec
data/Rakefile DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rspec/core/rake_task'
5
- require 'rubocop/rake_task'
6
-
7
- RSpec::Core::RakeTask.new('spec')
8
-
9
- RuboCop::RakeTask.new do |task|
10
- task.options = %w[-c .rubocop.yml]
11
- end
12
-
13
- task default: %i[rubocop spec]
data/docker-compose.yml DELETED
@@ -1,26 +0,0 @@
1
- version: "3.8"
2
- services:
3
- mysql:
4
- image: "mysql:5.6"
5
- ports:
6
- - "13316:3306"
7
- environment:
8
- MYSQL_ROOT_PASSWORD: password
9
- mysql57:
10
- image: "mysql:5.7"
11
- ports:
12
- - "13317:3306"
13
- environment:
14
- MYSQL_ROOT_PASSWORD: password
15
- mysql80:
16
- image: "mysql:8.0"
17
- ports:
18
- - "13318:3306"
19
- environment:
20
- MYSQL_ROOT_PASSWORD: password
21
- postgres:
22
- image: "postgres:14"
23
- ports:
24
- - "15442:5432"
25
- environment:
26
- POSTGRES_PASSWORD: password
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 5.1.0"
6
-
7
- gemspec path: "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "activerecord", "~> 5.2.0"
6
- gem "mysql2", "~> 0.4.4"
7
-
8
- gemspec path: "../"