safe_migrations 1.0.3 → 1.0.4

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: f119f92c66cd1a66e53b8fa3f23e1ebe816bb187100fa9c1f50e633042c038ad
4
- data.tar.gz: 90d6339f1997bd3805fba30b7b252a437e000f00d81b86338276f30d38c5a6e8
3
+ metadata.gz: edeb710ced06f1f448d724ce1df93fcb40b537a2f46bde150d6ef2861f2335dd
4
+ data.tar.gz: 7d2125344e432d548c9e2389f762fba2a5b187d3d715588483ee75acfcbef838
5
5
  SHA512:
6
- metadata.gz: 0416fe1c97cddc47a4f5dff0f317395e1979e5e8b2bcf75c8474b98d746760ad15505d2087dcb518982a51b27809161182403ef0934c8163de9575555b2582fb
7
- data.tar.gz: 5e95b1bc908f4e7c4b1bcbc01d066e55239c689262b8a2ab41efc654734cf4b4d1bef1119b1ba3e229778a1b82352abf25cc335353971c90f812b01d50549b70
6
+ metadata.gz: f337746ab082454d1257f59bc5609571ef525959a70013e4cbab71ba1750af3502a1f673c4051cfae50142ef0328310a375cde43a84d3abc57e75fff7a739e49
7
+ data.tar.gz: 72a3a411835da83974fa314a1c31f69dace5ac855d06398b8de9675e42537b95db8758ca174eea896faa1bc48eab974b4a55936b718d70d8629bde99e3c820ed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- safe_migrations (1.0.3)
4
+ safe_migrations (1.0.4)
5
5
  activerecord (>= 7.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  G'day, mate! Welcome to **SafeMigrations**, a ripper of a gem that makes your Rails migrations as safe as a kangaroo in the outback. With `safe_` prefixed methods, this gem ensures your database schema changes are idempotent—no dramas if you run 'em twice. Built to play nice with Rails' `CommandRecorder`, it auto-reverses your migrations in the `change` method, so you can crack on with building your app without worrying about dodgy rollbacks.
4
4
 
5
+ ![safe-pg-migrations](./logo.jpeg)
6
+
5
7
  [![Gem Version](https://badge.fury.io/rb/safe_migrations.svg)](https://badge.fury.io/rb/safe_migrations)
6
8
  [![CI](https://github.com/moskvin/safe_migrations/actions/workflows/ci.yml/badge.svg)](https://github.com/moskvin/safe_migrations/actions)
7
9
 
@@ -20,6 +20,7 @@ module SafeMigrations
20
20
  safe_remove_reference
21
21
  safe_add_check_constraint
22
22
  safe_remove_check_constraint
23
+ safe_change_column_default
23
24
  ].freeze
24
25
 
25
26
  SAFE_REVERSIBLE_MAP = {
@@ -35,7 +36,8 @@ module SafeMigrations
35
36
  safe_change_column_null: :safe_change_column_null,
36
37
  safe_rename_column: :safe_rename_column,
37
38
  safe_add_reference: :safe_remove_reference,
38
- safe_add_check_constraint: :safe_remove_check_constraint
39
+ safe_add_check_constraint: :safe_remove_check_constraint,
40
+ safe_change_column_default: :safe_change_column_default
39
41
  }.freeze
40
42
 
41
43
  def self.apply
@@ -64,6 +66,12 @@ module SafeMigrations
64
66
  table, column, value = args
65
67
  [:safe_change_column_null, [table, column, !value]]
66
68
  end
69
+
70
+ def invert_safe_change_column_default(args)
71
+ table, column, extra = args
72
+ reverted_extra = { to: extra[:from], from: extra[:to] }
73
+ [:safe_change_column_default, [table, column, reverted_extra]]
74
+ end
67
75
  end
68
76
  end
69
77
  end
@@ -95,6 +95,12 @@ module SafeMigrations
95
95
  def safe_remove_check_constraint(table, condition, name:, **)
96
96
  table_exists?(table) && check_constraint_exists?(table, name:) && remove_check_constraint(table, condition, name:, **)
97
97
  end
98
+
99
+ def safe_change_column_default(table, column, default_or_changes)
100
+ return unless table_exists?(table)
101
+
102
+ column_exists?(table, column) && change_column_default(table, column, default_or_changes)
103
+ end
98
104
  end
99
105
  end
100
106
  end
@@ -1,3 +1,3 @@
1
1
  module SafeMigrations
2
- VERSION = '1.0.3'.freeze
2
+ VERSION = '1.0.4'.freeze
3
3
  end
data/logo.jpeg ADDED
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safe_migrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikolay Moskvin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-10-31 00:00:00.000000000 Z
11
+ date: 2025-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -108,6 +108,7 @@ files:
108
108
  - lib/safe_migrations/command_recorder_extension.rb
109
109
  - lib/safe_migrations/migration_helper.rb
110
110
  - lib/safe_migrations/version.rb
111
+ - logo.jpeg
111
112
  - safe_migrations.gemspec
112
113
  homepage: https://github.com/moskvin/safe_migrations
113
114
  licenses: []