ridgepole 1.2.0 → 2.0.0.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
  SHA256:
3
- metadata.gz: '068fca35b633df2e4bc3b2d8ad5d2553496396a78c16ca371f18efc4dbad6adf'
4
- data.tar.gz: c908229a06ddcbbf28e14b28af7f52f63c933d271db2e24231f6ed588fe5a1a0
3
+ metadata.gz: f259bb56c8c8193c060dd6b3e14b9c90fbe8e5105046ebbefcd9e140656fd176
4
+ data.tar.gz: 6b5d498ac6dfde45c7a2306942baf0bdef2dba66d5a3073e7fe886d6092e4cdf
5
5
  SHA512:
6
- metadata.gz: 6456e47a675dbdeb21ce56c9ed6091e823031ca082b191b7fb0438880d54ee6aea51988d4d9c5e07ded0e684a683d22f0d613cd3697c7c6d12ef6948b41e972e
7
- data.tar.gz: 4b9f3b573975e0be50dec442e7db23688374754306082275bcc711e20e5813f2c4ca1975993797e02fd5b963cf396b7f5bbd2cd869f02aee468c8d07ce98e3c1
6
+ metadata.gz: 3ed96d3b0f2d451544d0154a1840342b4bd873fcd416d9c65f17181d22e1742ea39deb17abc03e52002a204e80943390975087ff46992501283dc658e71a9253
7
+ data.tar.gz: eb533bb2e3613b82fc3ca2e11f1d1b6d4a17e8238030acaba0f679b31b11798d7accd9347d4c1e575cbf09da3de95851244360735a024ea77fa904962aab13d0
data/.rubocop.yml CHANGED
@@ -3,8 +3,9 @@ AllCops:
3
3
  - "gemfiles/**/*"
4
4
  - "omnibus-ridgepole/**/*"
5
5
  - "vendor/bundle/**/*"
6
- TargetRubyVersion: 2.5
6
+ TargetRubyVersion: 2.7
7
7
  NewCops: enable
8
+ SuggestExtensions: false
8
9
  Bundler/OrderedGems:
9
10
  Include:
10
11
  - "Appraisals"
@@ -53,3 +54,5 @@ Lint/DuplicateBranch:
53
54
  Enabled: false
54
55
  Style/OptionalBooleanParameter:
55
56
  Enabled: false
57
+ Gemspec/DevelopmentDependencies:
58
+ Enabled: false
data/Appraisals CHANGED
@@ -1,9 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise 'activerecord-6.0' do
4
- gem 'activerecord', '~> 6.0.6'
5
- end
6
-
7
3
  appraise 'activerecord-6.1' do
8
4
  gem 'activerecord', '~> 6.1.7'
9
5
  end
@@ -11,3 +7,7 @@ end
11
7
  appraise 'activerecord-7.0' do
12
8
  gem 'activerecord', '~> 7.0.4'
13
9
  end
10
+
11
+ appraise 'activerecord-7.1' do
12
+ gem 'activerecord', '~> 7.1.0'
13
+ end
data/CHANGELOG.md CHANGED
@@ -1,7 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0
4
+
5
+ ### 2.0.0.beta (2023/10/22)
6
+
7
+ * Support Rails 7.1 [pull#441](https://github.com/ridgepole/ridgepole/pull/441)
8
+ * Drop Rails 6.0 support [pull#440](https://github.com/ridgepole/ridgepole/pull/440)
9
+
3
10
  ## 1.2
4
11
 
12
+ ### 1.2.1 (2023/07/29)
13
+
14
+ * Support `t.enum` [pull#405](https://github.com/ridgepole/ridgepole/pull/405)
15
+ * Fix timestamps with index behavior [pull#428](https://github.com/ridgepole/ridgepole/pull/428)
16
+ * Fix broken `DEFAULT CURRENT_TIMESTAMP` spec [pull#420](https://github.com/ridgepole/ridgepole/pull/420)
17
+ * Add Ruby 3.2 to CI matrix [pull#419](https://github.com/ridgepole/ridgepole/pull/419)
18
+
5
19
  ### 1.2.0 (2022/09/24)
6
20
 
7
21
  * Updated supported column types [pull#399](https://github.com/ridgepole/ridgepole/pull/399) [pull#400](https://github.com/ridgepole/ridgepole/pull/400)
data/README.md CHANGED
@@ -5,16 +5,19 @@ Ridgepole is a tool to manage DB schema.
5
5
  It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.html#types-of-schema-dumps), and updates DB schema according to DSL.
6
6
  (like Chef/Puppet)
7
7
 
8
- [![Gem Version](https://badge.fury.io/rb/ridgepole.svg)](http://badge.fury.io/rb/ridgepole)
8
+ [![Gem Version](https://badge.fury.io/rb/ridgepole.svg)](https://badge.fury.io/rb/ridgepole)
9
9
  [![Build Status](https://github.com/ridgepole/ridgepole/workflows/test/badge.svg?branch=1.2)](https://github.com/ridgepole/ridgepole/actions)
10
10
  [![Coverage Status](https://coveralls.io/repos/github/ridgepole/ridgepole/badge.svg?branch=1.2)](https://coveralls.io/github/ridgepole/ridgepole?branch=1.2)
11
11
 
12
12
  **Notice**
13
13
 
14
+ * Support Rails 7.1 ridgepole v2.0.0.
15
+ * Drop support AcriveRecord 6.0 in ridgepole v2.0.0.
14
16
  * Drop support ActiveRecord 5.x in ridgepole v1.2.0.
15
17
  * Partitioning is no longer supported in ridgepole v1.1.0.
16
- * ActiveRecord 7.x has some incompatible changes. If you get unintended differences in `datetime`, add `precision`.
17
- * cf. https://github.com/ridgepole/ridgepole/issues/381
18
+ * ActiveRecord 7.x has some incompatible changes. If you get unintended differences in `datetime` columns consider changing `precision`:
19
+ * Add `precision: nil` for columns that previously had no `precision` specified (cf. https://github.com/ridgepole/ridgepole/issues/381)
20
+ * Remove `precision: 6` from columns that previously had `precision: 6` specified explicitly (cf. https://github.com/ridgepole/ridgepole/issues/406)
18
21
  * For ActiveRecord 7.x series, please use AcriveRecord 7.0.2 or higher / Ridgepole 1.0.3 or higher.
19
22
  * cf. https://github.com/ridgepole/ridgepole/pull/380
20
23
  * ActiveRecord 6.1 is supported in ridgepole v0.9, but the ActiveRecord dump has been changed, so there is a difference between ActiveRecord 5.x/6.0 format.
@@ -311,7 +314,7 @@ end
311
314
  ```
312
315
 
313
316
  ```sh
314
- $ ridgepole -a -c database.yml --check-relation-type bigint # default primary key type (e.g. `<5.1`: integer, `>=5.1`: bigint for MySQL)
317
+ $ ridgepole -a -c database.yml --check-relation-type bigint # default primary key type (e.g. bigint for MySQL)
315
318
  Apply `Schemafile`
316
319
  ...
317
320
  [WARNING] Relation column type is different.
@@ -324,12 +327,12 @@ Apply `Schemafile`
324
327
 
325
328
 
326
329
  ```sh
327
- docker-compose up -d
330
+ docker compose up -d
328
331
  bundle install
329
332
  bundle exec appraisal install
330
333
  bundle exec appraisal activerecord-7.0 rake
331
334
  # POSTGRESQL=1 bundle exec appraisal activerecord-7.0 rake
332
- # MYSQL57=1 bundle exec appraisal activerecord-7.0 rake
335
+ # MYSQL80=1 bundle exec appraisal activerecord-7.0 rake
333
336
  ```
334
337
 
335
338
  **Notice:** Ruby 2.6 or above/mysql-client/postgresql-client is required.
@@ -341,6 +344,6 @@ bundle exec appraisal activerecord-7.0 rake
341
344
 
342
345
  ## Example project
343
346
 
344
- * https://github.com/ridgepole/ridgepole-example
345
- * https://github.com/ridgepole/ridgepole-example/pull/1
346
- * https://github.com/ridgepole/ridgepole-example/pull/2
347
+ * https://github.com/winebarrel/ridgepole-example
348
+ * https://github.com/winebarrel/ridgepole-example/pull/1
349
+ * https://github.com/winebarrel/ridgepole-example/pull/2
@@ -1,19 +1,13 @@
1
- version: "3.8"
2
1
  services:
3
- mysql:
4
- image: "mysql:5.6.51"
5
- ports:
6
- - "13316:3306"
7
- environment:
8
- MYSQL_ROOT_PASSWORD: password
9
2
  mysql57:
10
- image: "mysql:5.7.39"
3
+ image: "mysql:5.7"
4
+ platform: linux/amd64
11
5
  ports:
12
- - "13317:3306"
6
+ - "13316:3306"
13
7
  environment:
14
8
  MYSQL_ROOT_PASSWORD: password
15
9
  mysql80:
16
- image: "mysql:8.0.30"
10
+ image: "mysql:8.0"
17
11
  ports:
18
12
  - "13318:3306"
19
13
  environment:
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "activerecord", "~> 7.0.4"
5
+ gem "activerecord", "~> 7.0.7"
6
6
 
7
7
  gemspec path: "../"
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "activerecord", "~> 6.0.6"
5
+ gem "activerecord", "~> 7.1.0"
6
6
 
7
7
  gemspec path: "../"
@@ -66,7 +66,7 @@ module Ridgepole
66
66
 
67
67
  query_hash =
68
68
  if uri.query
69
- uri.query.split('&').map { |pair| pair.split('=') }.to_h
69
+ uri.query.split('&').to_h { |pair| pair.split('=') }
70
70
  else
71
71
  {}
72
72
  end
@@ -251,6 +251,18 @@ create_table(#{table_name.inspect}, #{inspect_options_include_default_proc(optio
251
251
  end
252
252
  end
253
253
 
254
+ unless (exclusion_constraints = attrs[:exclusion_constraints] || {}).empty?
255
+ exclusion_constraints.each do |_, exclusion_constraint_attrs|
256
+ append_add_exclusion_constraint(table_name, exclusion_constraint_attrs, buf, true)
257
+ end
258
+ end
259
+
260
+ unless (unique_constraints = attrs[:unique_constraints] || {}).empty?
261
+ unique_constraints.each do |_, unique_constraint_attrs|
262
+ append_add_unique_constraint(table_name, unique_constraint_attrs, buf, true)
263
+ end
264
+ end
265
+
254
266
  buf.puts(<<-RUBY)
255
267
  end
256
268
  RUBY
@@ -299,7 +311,7 @@ execute "ALTER TABLE #{ActiveRecord::Base.connection.quote_table_name(table_name
299
311
  end
300
312
 
301
313
  def append_change_table_raw_options(table_name, raw_table_options, table_charset, table_collation, buf)
302
- if raw_table_options.blank? && ActiveRecord.gem_version >= Gem::Version.new('6.1.0')
314
+ if raw_table_options.blank?
303
315
  # Implicit engine is InnoDB in 6.1.0
304
316
  # related: https://github.com/rails/rails/pull/39365/files#diff-868f1dccfcbed26a288bf9f3fd8a39c863a4413ab0075e12b6805d9798f556d1R441
305
317
  raw_table_options = +'ENGINE=InnoDB'
@@ -322,6 +334,8 @@ execute "ALTER TABLE #{ActiveRecord::Base.connection.quote_table_name(table_name
322
334
  indices = attrs[:indices] || {}
323
335
  foreign_keys = attrs[:foreign_keys] || {}
324
336
  check_constraints = attrs[:check_constraints] || {}
337
+ exclusion_constraints = attrs[:exclusion_constraints] || {}
338
+ unique_constraints = attrs[:unique_constraints] || {}
325
339
  table_options = attrs[:table_options]
326
340
  table_charset = attrs[:table_charset]
327
341
  table_collation = attrs[:table_collation]
@@ -338,6 +352,8 @@ execute "ALTER TABLE #{ActiveRecord::Base.connection.quote_table_name(table_name
338
352
 
339
353
  append_change_foreign_keys(table_name, foreign_keys, pre_buf_for_fk, post_buf_for_fk, @options) unless foreign_keys.empty?
340
354
  append_change_check_constraints(table_name, check_constraints, buf) unless check_constraints.empty?
355
+ append_change_exclusion_constraints(table_name, exclusion_constraints, buf) unless exclusion_constraints.empty?
356
+ append_change_unique_constraints(table_name, unique_constraints, buf) unless unique_constraints.empty?
341
357
 
342
358
  if table_options || table_charset || table_collation
343
359
  append_change_table_raw_options(table_name, table_options, table_charset, table_collation,
@@ -553,6 +569,74 @@ remove_check_constraint(#{table_name.inspect}, #{expression.inspect}, **#{attrs_
553
569
  RUBY
554
570
  end
555
571
 
572
+ def append_change_exclusion_constraints(table_name, delta, buf)
573
+ (delta[:delete] || {}).each do |_, attrs|
574
+ append_remove_exclusion_constraint(table_name, attrs, buf)
575
+ end
576
+
577
+ (delta[:add] || {}).each do |_, attrs|
578
+ append_add_exclusion_constraint(table_name, attrs, buf)
579
+ end
580
+ end
581
+
582
+ def append_add_exclusion_constraint(table_name, attrs, buf, force_bulk_change = false)
583
+ expression = attrs.fetch(:expression)
584
+ attrs_options = attrs[:options] || {}
585
+
586
+ if force_bulk_change
587
+ buf.puts(<<-RUBY)
588
+ t.exclusion_constraint(#{expression.inspect}, **#{attrs_options.inspect})
589
+ RUBY
590
+ else
591
+ buf.puts(<<-RUBY)
592
+ add_exclusion_constraint(#{table_name.inspect}, #{expression.inspect}, **#{attrs_options.inspect})
593
+ RUBY
594
+ end
595
+ end
596
+
597
+ def append_remove_exclusion_constraint(table_name, attrs, buf)
598
+ expression = attrs.fetch(:expression)
599
+ attrs_options = attrs[:options] || {}
600
+
601
+ buf.puts(<<-RUBY)
602
+ remove_exclusion_constraint(#{table_name.inspect}, #{expression.inspect}, **#{attrs_options.inspect})
603
+ RUBY
604
+ end
605
+
606
+ def append_change_unique_constraints(table_name, delta, buf)
607
+ (delta[:delete] || {}).each do |_, attrs|
608
+ append_remove_unique_constraint(table_name, attrs, buf)
609
+ end
610
+
611
+ (delta[:add] || {}).each do |_, attrs|
612
+ append_add_unique_constraint(table_name, attrs, buf)
613
+ end
614
+ end
615
+
616
+ def append_add_unique_constraint(table_name, attrs, buf, force_bulk_change = false)
617
+ column_name = attrs.fetch(:column_name)
618
+ attrs_options = attrs[:options] || {}
619
+
620
+ if force_bulk_change
621
+ buf.puts(<<-RUBY)
622
+ t.unique_constraint(#{column_name.inspect}, **#{attrs_options.inspect})
623
+ RUBY
624
+ else
625
+ buf.puts(<<-RUBY)
626
+ add_unique_constraint(#{table_name.inspect}, #{column_name.inspect}, **#{attrs_options.inspect})
627
+ RUBY
628
+ end
629
+ end
630
+
631
+ def append_remove_unique_constraint(table_name, attrs, buf)
632
+ column_name = attrs.fetch(:column_name)
633
+ attrs_options = attrs[:options] || {}
634
+
635
+ buf.puts(<<-RUBY)
636
+ remove_unique_constraint(#{table_name.inspect}, #{column_name.inspect}, **#{attrs_options.inspect})
637
+ RUBY
638
+ end
639
+
556
640
  def delta_execute
557
641
  @delta[:execute] || []
558
642
  end
@@ -102,6 +102,8 @@ module Ridgepole
102
102
  scan_indices_change(from[:indices], to[:indices], to[:definition], table_delta, from[:options], to[:options])
103
103
  scan_foreign_keys_change(from[:foreign_keys], to[:foreign_keys], table_delta, @options)
104
104
  scan_check_constraints_change(from[:check_constraints], to[:check_constraints], table_delta)
105
+ scan_exclusion_constraints_change(from[:exclusion_constraints], to[:exclusion_constraints], table_delta)
106
+ scan_unique_constraints_change(from[:unique_constraints], to[:unique_constraints], table_delta)
105
107
 
106
108
  unless table_delta.empty?
107
109
  delta[:change] ||= {}
@@ -505,6 +507,70 @@ module Ridgepole
505
507
  table_delta[:check_constraints] = check_constraints_delta unless check_constraints_delta.empty?
506
508
  end
507
509
 
510
+ def scan_exclusion_constraints_change(from, to, table_delta)
511
+ from = (from || {}).dup
512
+ to = (to || {}).dup
513
+ exclusion_constraints_delta = {}
514
+
515
+ to.each do |name, to_attrs|
516
+ from_attrs = from.delete(name)
517
+
518
+ if from_attrs
519
+ if from_attrs != to_attrs
520
+ exclusion_constraints_delta[:add] ||= {}
521
+ exclusion_constraints_delta[:add][name] = to_attrs
522
+
523
+ exclusion_constraints_delta[:delete] ||= {}
524
+ exclusion_constraints_delta[:delete][name] = from_attrs
525
+ end
526
+ else
527
+ exclusion_constraints_delta[:add] ||= {}
528
+ exclusion_constraints_delta[:add][name] = to_attrs
529
+ end
530
+ end
531
+
532
+ unless @options[:merge]
533
+ from.each do |name, from_attrs|
534
+ exclusion_constraints_delta[:delete] ||= {}
535
+ exclusion_constraints_delta[:delete][name] = from_attrs
536
+ end
537
+ end
538
+
539
+ table_delta[:exclusion_constraints] = exclusion_constraints_delta unless exclusion_constraints_delta.empty?
540
+ end
541
+
542
+ def scan_unique_constraints_change(from, to, table_delta)
543
+ from = (from || {}).dup
544
+ to = (to || {}).dup
545
+ unique_constraints_delta = {}
546
+
547
+ to.each do |name, to_attrs|
548
+ from_attrs = from.delete(name)
549
+
550
+ if from_attrs
551
+ if from_attrs != to_attrs
552
+ unique_constraints_delta[:add] ||= {}
553
+ unique_constraints_delta[:add][name] = to_attrs
554
+
555
+ unique_constraints_delta[:delete] ||= {}
556
+ unique_constraints_delta[:delete][name] = from_attrs
557
+ end
558
+ else
559
+ unique_constraints_delta[:add] ||= {}
560
+ unique_constraints_delta[:add][name] = to_attrs
561
+ end
562
+ end
563
+
564
+ unless @options[:merge]
565
+ from.each do |name, from_attrs|
566
+ unique_constraints_delta[:delete] ||= {}
567
+ unique_constraints_delta[:delete][name] = from_attrs
568
+ end
569
+ end
570
+
571
+ table_delta[:unique_constraints] = unique_constraints_delta unless unique_constraints_delta.empty?
572
+ end
573
+
508
574
  # XXX: MySQL only?
509
575
  # https://github.com/rails/rails/blob/v4.2.1/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb#L760
510
576
  # https://github.com/rails/rails/blob/v4.2.1/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb#L102
@@ -106,6 +106,36 @@ module Ridgepole
106
106
  }
107
107
  end
108
108
 
109
+ def add_exclusion_constraint(table_name, expression, options = {})
110
+ table_name = table_name.to_s
111
+ expression = expression.to_s
112
+ options[:name] = options[:name].to_s if options[:name]
113
+
114
+ idx = options[:name] || expression
115
+
116
+ @__definition[table_name] ||= {}
117
+ @__definition[table_name][:exclusion_constraints] ||= {}
118
+ @__definition[table_name][:exclusion_constraints][idx] = {
119
+ expression: expression,
120
+ options: options,
121
+ }
122
+ end
123
+
124
+ def add_unique_constraint(table_name, column_name, options = {})
125
+ table_name = table_name.to_s
126
+ column_name = Array(column_name).map(&:to_sym)
127
+ options[:name] = options[:name].to_s if options[:name]
128
+
129
+ idx = options[:name] || column_name
130
+
131
+ @__definition[table_name] ||= {}
132
+ @__definition[table_name][:unique_constraints] ||= {}
133
+ @__definition[table_name][:unique_constraints][idx] = {
134
+ column_name: column_name,
135
+ options: options,
136
+ }
137
+ end
138
+
109
139
  def require(file)
110
140
  schemafile = %r{\A/}.match?(file) ? file : File.join(@__working_dir, file)
111
141
 
@@ -87,6 +87,8 @@ module Ridgepole
87
87
 
88
88
  # https://github.com/ridgepole/ridgepole/issues/394
89
89
  timestamptz: {},
90
+
91
+ enum: {},
90
92
  }.freeze
91
93
 
92
94
  TYPES.each do |column_type, default_options|
@@ -143,8 +145,8 @@ module Ridgepole
143
145
 
144
146
  def timestamps(*args)
145
147
  options = { null: false }.merge(args.extract_options!)
146
- column(:created_at, :datetime, options)
147
- column(:updated_at, :datetime, options)
148
+ column(:created_at, :datetime, options.dup)
149
+ column(:updated_at, :datetime, options.dup)
148
150
  end
149
151
 
150
152
  def references(*args)
@@ -177,6 +179,14 @@ module Ridgepole
177
179
  def check_constraint(expression, options = {})
178
180
  @base.add_check_constraint(@table_name, expression, options)
179
181
  end
182
+
183
+ def exclusion_constraint(expression, options = {})
184
+ @base.add_exclusion_constraint(@table_name, expression, options)
185
+ end
186
+
187
+ def unique_constraint(column_name, options = {})
188
+ @base.add_unique_constraint(@table_name, column_name, options)
189
+ end
180
190
  end
181
191
  end
182
192
  end
@@ -40,9 +40,9 @@ module Ridgepole
40
40
  # NOTE: For composite primary keys, the first column of the primary key is used as the foreign key index
41
41
  next if Array(attrs[:options][:primary_key]).first == fk_index
42
42
 
43
- raise("The column `#{fk_index}` of the table `#{table_name}` has a foreign key but no index." \
44
- ' Although InnoDB creates an index automatically,' \
45
- ' please add one explicitly in order for ridgepole to manage it.')
43
+ raise("The column `#{fk_index}` of the table `#{table_name}` has a foreign key but no index. " \
44
+ 'Although InnoDB creates an index automatically, ' \
45
+ 'please add one explicitly in order for ridgepole to manage it.')
46
46
  end
47
47
  end
48
48
  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
@@ -30,7 +30,7 @@ module Ridgepole
30
30
  remove_prefix_and_suffix(foreign_key.to_table).inspect
31
31
  ]
32
32
 
33
- parts << "column: #{foreign_key.column.inspect}" if foreign_key.column != @connection.foreign_key_column_for(foreign_key.to_table)
33
+ parts << "column: #{foreign_key.column.inspect}" if foreign_key.column != foreign_key_column_for(foreign_key)
34
34
 
35
35
  parts << "primary_key: #{foreign_key.primary_key.inspect}" if foreign_key.custom_primary_key?
36
36
 
@@ -45,6 +45,16 @@ module Ridgepole
45
45
  stream.puts add_foreign_key_statements.sort.join("\n")
46
46
  end
47
47
  end
48
+
49
+ private
50
+
51
+ def foreign_key_column_for(foreign_key)
52
+ if ActiveRecord.gem_version < Gem::Version.new('7.1.0')
53
+ @connection.foreign_key_column_for(foreign_key.to_table)
54
+ else
55
+ @connection.foreign_key_column_for(foreign_key.to_table, 'id')
56
+ end
57
+ end
48
58
  end
49
59
  end
50
60
  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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ridgepole
4
- VERSION = '1.2.0'
4
+ VERSION = '2.0.0.beta'
5
5
  end
data/lib/ridgepole.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'logger'
4
4
  require 'open3'
5
- require 'pp'
5
+ require 'pp' # rubocop:disable Lint/RedundantRequireStatement
6
6
  require 'shellwords'
7
7
  require 'singleton'
8
8
  require 'stringio'
data/ridgepole.gemspec CHANGED
@@ -22,9 +22,9 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.required_ruby_version = Gem::Requirement.new('>= 2.2.7') # rubocop:disable Gemspec/RequiredRubyVersion
25
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.7')
26
26
 
27
- spec.add_dependency 'activerecord', '>= 5.1', '< 7.1'
27
+ spec.add_dependency 'activerecord', '>= 6.1', '< 7.2'
28
28
  spec.add_dependency 'diffy'
29
29
 
30
30
  spec.add_development_dependency 'appraisal', '>= 2.2.0'
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
38
38
  spec.add_development_dependency 'rspec', '>= 3.0.0'
39
39
  spec.add_development_dependency 'rspec-match_fuzzy', '>= 0.1.3'
40
40
  spec.add_development_dependency 'rspec-match_ruby', '>= 0.1.3'
41
- spec.add_development_dependency 'rubocop', '1.24.1'
41
+ spec.add_development_dependency 'rubocop', '1.57.1'
42
42
  spec.add_development_dependency 'rubocop-rake', '>= 0.5.1'
43
43
  spec.add_development_dependency 'rubocop-rspec', '>= 2.1.0'
44
44
  spec.add_development_dependency 'simplecov'
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: 1.2.0
4
+ version: 2.0.0.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: 2022-09-24 00:00:00.000000000 Z
11
+ date: 2023-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.1'
19
+ version: '6.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7.1'
22
+ version: '7.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '5.1'
29
+ version: '6.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.1'
32
+ version: '7.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: diffy
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -204,14 +204,14 @@ dependencies:
204
204
  requirements:
205
205
  - - '='
206
206
  - !ruby/object:Gem::Version
207
- version: 1.24.1
207
+ version: 1.57.1
208
208
  type: :development
209
209
  prerelease: false
210
210
  version_requirements: !ruby/object:Gem::Requirement
211
211
  requirements:
212
212
  - - '='
213
213
  - !ruby/object:Gem::Version
214
- version: 1.24.1
214
+ version: 1.57.1
215
215
  - !ruby/object:Gem::Dependency
216
216
  name: rubocop-rake
217
217
  requirement: !ruby/object:Gem::Requirement
@@ -287,10 +287,10 @@ files:
287
287
  - README.md
288
288
  - Rakefile
289
289
  - bin/ridgepole
290
- - docker-compose.yml
291
- - gemfiles/activerecord_6.0.gemfile
290
+ - compose.yml
292
291
  - gemfiles/activerecord_6.1.gemfile
293
292
  - gemfiles/activerecord_7.0.gemfile
293
+ - gemfiles/activerecord_7.1.gemfile
294
294
  - lib/ridgepole.rb
295
295
  - lib/ridgepole/cli/config.rb
296
296
  - lib/ridgepole/client.rb
@@ -327,12 +327,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
327
327
  requirements:
328
328
  - - ">="
329
329
  - !ruby/object:Gem::Version
330
- version: 2.2.7
330
+ version: '2.7'
331
331
  required_rubygems_version: !ruby/object:Gem::Requirement
332
332
  requirements:
333
- - - ">="
333
+ - - ">"
334
334
  - !ruby/object:Gem::Version
335
- version: '0'
335
+ version: 1.3.1
336
336
  requirements: []
337
337
  rubygems_version: 3.3.7
338
338
  signing_key: