ridgepole 3.1.2 → 3.1.3

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
  SHA256:
3
- metadata.gz: dda1a996982cb5d8b365f150166e2de5a71da139e881e0997a7d1cbe90e742cf
4
- data.tar.gz: e81e61c580566fc1df3a2de2e7e7473a713aa2f7cdc64b573876c5eff8890987
3
+ metadata.gz: 5f54f0a59342af5d5d5bc4a1bce81f963a5f85b8b6da78702dbb03db59488dfe
4
+ data.tar.gz: d163b0a5ef7ff03125b83d40b977e6c6f7097f7a6286a4c7d1ae165e19638126
5
5
  SHA512:
6
- metadata.gz: 13ae80c21973f9e0901cd76e084fdf564267f65de8170e72cc3feae412d95619a532ca16147ecaa65275ad41f82a9ec31b93b38d499c381e7fb43fe09ec5710b
7
- data.tar.gz: f19b7cec7f794af44aa5e5130d33088f033621a0344787d21a2d48362c954d49d8cd56be5b1c3da599eee35648f572bb6940bc44ae42085e4cdc45ebcca3216d
6
+ metadata.gz: 1092d39833a655561847f2e04a98056311b63249baabf246bfc25aacd23003a6b8573e17ba835afe3b75bd1f88e6c903dc8f8d7aa471c3c9a69a7331f55acaaf
7
+ data.tar.gz: 2c6ceafe3191a18f0558ab0d7acf74b6133c5389a439602d1159cbdc47980cc8727ed21dfef11e55b3fc026312e32b6ceaf4475dbe36be5df6fe2a0d109bb877
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## 3.0
4
4
 
5
+ ### 3.1.3 (2026/01/29)
6
+
7
+ - Show `COMMENT` SQL in dry-run. [pull#632](https://github.com/ridgepole/ridgepole/pull/632)
8
+
5
9
  ### 3.1.2 (2025/11/03)
6
10
 
7
11
  - Normalize foreign key columns. [pull#607](https://github.com/ridgepole/ridgepole/pull/607)
data/README.md CHANGED
@@ -7,7 +7,7 @@ It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.
7
7
 
8
8
  [![Gem Version](https://badge.fury.io/rb/ridgepole.svg)](https://badge.fury.io/rb/ridgepole)
9
9
  [![test](https://github.com/ridgepole/ridgepole/actions/workflows/test.yml/badge.svg)](https://github.com/ridgepole/ridgepole/actions/workflows/test.yml)
10
- [![Coverage Status](https://coveralls.io/repos/github/ridgepole/ridgepole/badge.svg?branch=3.0)](https://coveralls.io/github/ridgepole/ridgepole?branch=3.0)
10
+ [![codecov](https://codecov.io/gh/ridgepole/ridgepole/graph/badge.svg)](https://codecov.io/gh/ridgepole/ridgepole)
11
11
 
12
12
  > [!warning]
13
13
  > The order of columns when exporting has changed in Rails 8.1. https://github.com/rails/rails/pull/53281
@@ -211,6 +211,31 @@ add_index "child", ["parent_id"], name: "par_ind", using: :btree
211
211
  add_foreign_key "child", "parent", name: "child_ibfk_1"
212
212
  ```
213
213
 
214
+ ## CHECK Constraint
215
+
216
+ ```ruby
217
+ create_table "products", force: :cascade do |t|
218
+ t.string "name", null: false
219
+ t.decimal "price", precision: 10, scale: 2
220
+ t.integer "quantity"
221
+
222
+ t.check_constraint "price > 0", name: "price_check"
223
+ t.check_constraint "quantity >= 0", name: "quantity_check"
224
+ end
225
+ ```
226
+
227
+ > [!important]
228
+ > **Matching Schemafile to Database Output**
229
+ >
230
+ > CHECK constraint expressions may be formatted differently by your database when exported. For example:
231
+ > - DSL: `"(price > 0)"`
232
+ > - Database export: `` "`price` > 0" `` (MySQL) or `"((price > 0))"` (PostgreSQL)
233
+ >
234
+ > To avoid unnecessary migrations where constraints are dropped and recreated:
235
+ > Please modify your Schemafile to match exactly what the SchemaDumper outputs. This approach maintains simplicity and prevents migration issues instead of maintaining complex normalization logic in Ridgepole.
236
+ >
237
+ > Run `ridgepole --export` to see the exact format your database uses, then update your Schemafile accordingly.
238
+
214
239
  ## Ignore Column/Index/FK
215
240
 
216
241
  ```ruby
@@ -387,9 +412,9 @@ see https://github.com/ridgepole/ridgepole/issues/568
387
412
  docker compose up -d
388
413
  bundle install
389
414
  bundle exec appraisal install
390
- bundle exec appraisal activerecord-7.0 rake
391
- # POSTGRESQL=1 bundle exec appraisal activerecord-7.0 rake
392
- # MYSQL80=1 bundle exec appraisal activerecord-7.0 rake
415
+ bundle exec appraisal activerecord-8.2 rake
416
+ # POSTGRESQL=1 bundle exec appraisal activerecord-8.2 rake
417
+ # MYSQL80=1 bundle exec appraisal activerecord-8.2 rake
393
418
  ```
394
419
 
395
420
  > [!note]
data/bin/ridgepole CHANGED
@@ -187,7 +187,12 @@ begin
187
187
  client = Ridgepole::Client.new(Ridgepole::Config.load(config, env, spec_name), options) if config
188
188
 
189
189
  ActiveRecord::Base.logger = logger
190
- ActiveSupport::LogSubscriber.colorize_logging = options[:color]
190
+
191
+ if ActiveRecord.gem_version < Gem::Version.new('8.2.0.alpha')
192
+ ActiveSupport::LogSubscriber.colorize_logging = options[:color]
193
+ else
194
+ ActiveSupport.colorize_logging = options[:color]
195
+ end
191
196
 
192
197
  case mode
193
198
  when :export
@@ -75,7 +75,7 @@ module Ridgepole
75
75
  buf = StringIO.new
76
76
 
77
77
  callback = proc do |sql, _name|
78
- buf.puts sql if sql =~ /\A(CREATE|ALTER|DROP|RENAME)\b/i
78
+ buf.puts sql if sql =~ /\A(CREATE|ALTER|DROP|RENAME|COMMENT)\b/i
79
79
  end
80
80
 
81
81
  eval_script_block = proc do
@@ -48,7 +48,7 @@ module Ridgepole
48
48
  table_name = table_name.to_s
49
49
  # Keep column_name for expression index support
50
50
  # https://github.com/rails/rails/pull/23393
51
- column_name = [column_name].flatten.map(&:to_s) unless column_name.is_a?(String) && /\W/ === column_name # rubocop:disable Style/CaseEquality
51
+ column_name = [column_name].flatten.map(&:to_s) unless column_name.is_a?(String) && /\W/ === column_name
52
52
  options[:name] = options[:name].to_s if options[:name]
53
53
  @__definition[table_name] ||= {}
54
54
  @__definition[table_name][:indices] ||= {}
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ridgepole
4
- VERSION = '3.1.2'
4
+ VERSION = '3.1.3'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ridgepole
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.2
4
+ version: 3.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
@@ -18,7 +18,7 @@ dependencies:
18
18
  version: '6.1'
19
19
  - - "<"
20
20
  - !ruby/object:Gem::Version
21
- version: '8.2'
21
+ version: '8.3'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -28,7 +28,7 @@ dependencies:
28
28
  version: '6.1'
29
29
  - - "<"
30
30
  - !ruby/object:Gem::Version
31
- version: '8.2'
31
+ version: '8.3'
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: diffy
34
34
  requirement: !ruby/object:Gem::Requirement
@@ -119,14 +119,14 @@ dependencies:
119
119
  requirements:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: 0.1.1
122
+ version: 0.2.0
123
123
  type: :development
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - ">="
128
128
  - !ruby/object:Gem::Version
129
- version: 0.1.1
129
+ version: 0.2.0
130
130
  - !ruby/object:Gem::Dependency
131
131
  name: hash_order_helper
132
132
  requirement: !ruby/object:Gem::Requirement
@@ -197,6 +197,20 @@ dependencies:
197
197
  - - ">="
198
198
  - !ruby/object:Gem::Version
199
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'
200
214
  - !ruby/object:Gem::Dependency
201
215
  name: rspec-match_fuzzy
202
216
  requirement: !ruby/object:Gem::Requirement
@@ -231,14 +245,14 @@ dependencies:
231
245
  requirements:
232
246
  - - '='
233
247
  - !ruby/object:Gem::Version
234
- version: 1.81.6
248
+ version: 1.82.1
235
249
  type: :development
236
250
  prerelease: false
237
251
  version_requirements: !ruby/object:Gem::Requirement
238
252
  requirements:
239
253
  - - '='
240
254
  - !ruby/object:Gem::Version
241
- version: 1.81.6
255
+ version: 1.82.1
242
256
  - !ruby/object:Gem::Dependency
243
257
  name: rubocop-rake
244
258
  requirement: !ruby/object:Gem::Requirement
@@ -281,6 +295,34 @@ dependencies:
281
295
  - - ">="
282
296
  - !ruby/object:Gem::Version
283
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'
284
326
  - !ruby/object:Gem::Dependency
285
327
  name: simplecov-lcov
286
328
  requirement: !ruby/object:Gem::Requirement
@@ -364,7 +406,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
364
406
  - !ruby/object:Gem::Version
365
407
  version: '0'
366
408
  requirements: []
367
- rubygems_version: 3.7.2
409
+ rubygems_version: 4.0.3
368
410
  specification_version: 4
369
411
  summary: Ridgepole is a tool to manage DB schema.
370
412
  test_files: []