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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +2 -0
- data/lib/safe_migrations/command_recorder_extension.rb +9 -1
- data/lib/safe_migrations/migration_helper.rb +6 -0
- data/lib/safe_migrations/version.rb +1 -1
- data/logo.jpeg +0 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: edeb710ced06f1f448d724ce1df93fcb40b537a2f46bde150d6ef2861f2335dd
|
|
4
|
+
data.tar.gz: 7d2125344e432d548c9e2389f762fba2a5b187d3d715588483ee75acfcbef838
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f337746ab082454d1257f59bc5609571ef525959a70013e4cbab71ba1750af3502a1f673c4051cfae50142ef0328310a375cde43a84d3abc57e75fff7a739e49
|
|
7
|
+
data.tar.gz: 72a3a411835da83974fa314a1c31f69dace5ac855d06398b8de9675e42537b95db8758ca174eea896faa1bc48eab974b4a55936b718d70d8629bde99e3c820ed
|
data/Gemfile.lock
CHANGED
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
|
+

|
|
6
|
+
|
|
5
7
|
[](https://badge.fury.io/rb/safe_migrations)
|
|
6
8
|
[](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
|
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.
|
|
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-
|
|
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: []
|