active_snapshot 1.1.0 → 1.2.0
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/CHANGELOG.md +7 -1
- data/lib/active_snapshot/models/snapshot.rb +9 -13
- data/lib/active_snapshot/models/snapshot_item.rb +1 -1
- data/lib/active_snapshot/version.rb +1 -1
- data/lib/active_snapshot.rb +11 -0
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e23a65eb08dfc3ed99f0866620573db756d00a429ae392f2ff5b3795d0bce977
|
|
4
|
+
data.tar.gz: 0b5e8b3052f30faa2944029f487b27825aa6f183dc47a4b342626e1c8a419738
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 82346ff73dc868ed37fb94b28dea73e6b228e8047c2a52f36a6d14e4b911995801fccec23effe56de353042fc991b26db3c48dd1c7f563e5c829eb0b00f31820
|
|
7
|
+
data.tar.gz: 883e5df0beb0e4ff2288ef9fe0bcff1970b49ff5cae6858be53f5d65acae7324d96c8f43dea7d51f4a832bc5ddcd8780cbf354a8c6cbfa3d36690ff4f0a35513
|
data/CHANGELOG.md
CHANGED
|
@@ -2,9 +2,15 @@ CHANGELOG
|
|
|
2
2
|
---------
|
|
3
3
|
|
|
4
4
|
- **Unreleased**
|
|
5
|
-
* [View Diff](https://github.com/westonganger/active_snapshot/compare/v1.
|
|
5
|
+
* [View Diff](https://github.com/westonganger/active_snapshot/compare/v1.2.0...master)
|
|
6
6
|
* Nothing yet
|
|
7
7
|
|
|
8
|
+
- **v1.2.0** - Jun 25, 2026
|
|
9
|
+
* [View Diff](https://github.com/westonganger/active_snapshot/compare/v1.1.0...v1.2.0)
|
|
10
|
+
* [#80](https://github.com/westonganger/active_snapshot/pull/80)
|
|
11
|
+
* Encrypted fields are now also encrypted in snapshots.
|
|
12
|
+
* Drop support for rails < 7.0
|
|
13
|
+
|
|
8
14
|
- **v1.1.0** - Dec 28 2025
|
|
9
15
|
* [View Diff](https://github.com/westonganger/active_snapshot/compare/v1.0.0...v1.1.0)
|
|
10
16
|
* [#77](https://github.com/westonganger/active_snapshot/pull/77) - Remove uniqueness constraint from `snapshot_items` table migration
|
|
@@ -110,13 +110,16 @@ module ActiveSnapshot
|
|
|
110
110
|
from_object = from ? from.object : {}
|
|
111
111
|
to_object = to ? to.object : {}
|
|
112
112
|
|
|
113
|
+
item_type = (from || to).item_type
|
|
114
|
+
item_class = item_type.constantize
|
|
115
|
+
|
|
113
116
|
keys = (from_object.keys + to_object.keys).uniq
|
|
114
117
|
|
|
115
118
|
changes = {}
|
|
116
119
|
|
|
117
120
|
keys.each do |key|
|
|
118
|
-
from_value = from_object[key]
|
|
119
|
-
to_value = to_object[key]
|
|
121
|
+
from_value = ActiveSnapshot.get_deserialized_value(item_class, key: key, value: from_object[key])
|
|
122
|
+
to_value = ActiveSnapshot.get_deserialized_value(item_class, key: key, value: to_object[key])
|
|
120
123
|
|
|
121
124
|
next if to_value == from_value
|
|
122
125
|
|
|
@@ -162,15 +165,7 @@ module ActiveSnapshot
|
|
|
162
165
|
end
|
|
163
166
|
|
|
164
167
|
def build_snapshot_item(instance, child_group_name: nil)
|
|
165
|
-
attrs = instance.
|
|
166
|
-
|
|
167
|
-
if instance.class.respond_to?(:defined_enums) && instance.class.defined_enums.any?
|
|
168
|
-
instance.class.defined_enums.slice(*attrs.keys).each do |enum_col_name, enum_mapping|
|
|
169
|
-
val = attrs.fetch(enum_col_name)
|
|
170
|
-
next if val.nil?
|
|
171
|
-
attrs[enum_col_name] = enum_mapping.fetch(val)
|
|
172
|
-
end
|
|
173
|
-
end
|
|
168
|
+
attrs = instance.attributes_for_database
|
|
174
169
|
|
|
175
170
|
self.snapshot_items.new({
|
|
176
171
|
object: attrs,
|
|
@@ -228,11 +223,12 @@ module ActiveSnapshot
|
|
|
228
223
|
reified_parent = nil
|
|
229
224
|
|
|
230
225
|
snapshot_items.each do |si|
|
|
231
|
-
|
|
226
|
+
item_class = si.item_type.constantize
|
|
227
|
+
reified_item = item_class.new
|
|
232
228
|
|
|
233
229
|
si.object.each do |k,v|
|
|
234
230
|
if reified_item.respond_to?("#{k}=")
|
|
235
|
-
reified_item[k] = v
|
|
231
|
+
reified_item[k] = ActiveSnapshot.get_deserialized_value(item_class, key: k, value: v)
|
|
236
232
|
else
|
|
237
233
|
# database column was likely dropped since the snapshot was created
|
|
238
234
|
end
|
|
@@ -55,7 +55,7 @@ module ActiveSnapshot
|
|
|
55
55
|
|
|
56
56
|
object.each do |k,v|
|
|
57
57
|
if item.respond_to?("#{k}=")
|
|
58
|
-
item[k] = v
|
|
58
|
+
item[k] = ActiveSnapshot.get_deserialized_value(item.class, key: k, value: v)
|
|
59
59
|
else
|
|
60
60
|
# database column was likely dropped since the snapshot was created
|
|
61
61
|
end
|
data/lib/active_snapshot.rb
CHANGED
|
@@ -13,6 +13,17 @@ module ActiveSnapshot
|
|
|
13
13
|
return @@config
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
|
+
|
|
17
|
+
def self.get_deserialized_value(klass, key:, value:)
|
|
18
|
+
return value if value.nil?
|
|
19
|
+
|
|
20
|
+
begin
|
|
21
|
+
klass.attribute_types[key].deserialize(value)
|
|
22
|
+
rescue ActiveRecord::Encryption::Errors::Base
|
|
23
|
+
# handle columns which are changed from non-encrypted to encrypted
|
|
24
|
+
value
|
|
25
|
+
end
|
|
26
|
+
end
|
|
16
27
|
end
|
|
17
28
|
|
|
18
29
|
ActiveSupport.on_load(:active_record) do
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: active_snapshot
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Weston Ganger
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-06-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '7'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '7'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: railties
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|