paper_trail 15.2.0 → 16.0.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a834abeee917bf2c090c6ef7f6da09437b12aff37c0bcf94f8ff88ca1434203
|
4
|
+
data.tar.gz: 6fdf12293b452fe7dcce563e5f4547d9ae0081399b5cf6885308ea451f29b6ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82fbf4c2ec002d52ee5b4023cbef6a16ef5530e04852a4a3d65fb38b468395016db6230e2f89c199a13549bb9da98a1f53a2b29148a94455bc6470ea7912dcaf
|
7
|
+
data.tar.gz: 9944b2f2e66c9fdc10fe2ecf6f9c560b73da21e49d98504f826158e92faeef5b9cad7a4a1cb1f033217c1f66e230d4c8e2df034c4751298a93df5bf946ef108e
|
@@ -18,7 +18,7 @@ module PaperTrail
|
|
18
18
|
# versions.
|
19
19
|
module Compatibility
|
20
20
|
ACTIVERECORD_GTE = ">= 6.1" # enforced in gemspec
|
21
|
-
ACTIVERECORD_LT = "<
|
21
|
+
ACTIVERECORD_LT = "< 8.1" # not enforced in gemspec
|
22
22
|
|
23
23
|
E_INCOMPATIBLE_AR = <<-EOS
|
24
24
|
PaperTrail %s is not compatible with ActiveRecord %s. We allow PT
|
data/lib/paper_trail/config.rb
CHANGED
@@ -14,7 +14,8 @@ module PaperTrail
|
|
14
14
|
:object_changes_adapter,
|
15
15
|
:serializer,
|
16
16
|
:version_limit,
|
17
|
-
:has_paper_trail_defaults
|
17
|
+
:has_paper_trail_defaults,
|
18
|
+
:version_error_behavior
|
18
19
|
)
|
19
20
|
|
20
21
|
def initialize
|
@@ -25,6 +26,7 @@ module PaperTrail
|
|
25
26
|
# Variables which affect all threads, whose access is *not* synchronized.
|
26
27
|
@serializer = PaperTrail::Serializers::YAML
|
27
28
|
@has_paper_trail_defaults = {}
|
29
|
+
@version_error_behavior = :legacy
|
28
30
|
end
|
29
31
|
|
30
32
|
# Indicates whether PaperTrail is on or off. Default: true.
|
@@ -68,6 +68,8 @@ module PaperTrail
|
|
68
68
|
#
|
69
69
|
# @api public
|
70
70
|
def has_paper_trail(options = {})
|
71
|
+
raise Error, "has_paper_trail must be called only once" if self < InstanceMethods
|
72
|
+
|
71
73
|
defaults = PaperTrail.config.has_paper_trail_defaults
|
72
74
|
paper_trail.setup(defaults.merge(options))
|
73
75
|
end
|
@@ -64,6 +64,8 @@ module PaperTrail
|
|
64
64
|
# of versions_assoc.build?, the association cache is unaware. So, we
|
65
65
|
# invalidate the `versions` association cache with `reset`.
|
66
66
|
versions.reset
|
67
|
+
rescue StandardError => e
|
68
|
+
handle_version_errors e, version, :create
|
67
69
|
end
|
68
70
|
end
|
69
71
|
|
@@ -81,12 +83,13 @@ module PaperTrail
|
|
81
83
|
# `data_for_destroy` but PT-AT still does.
|
82
84
|
data = event.data.merge(data_for_destroy)
|
83
85
|
|
84
|
-
version = @record.class.paper_trail.version_class.
|
85
|
-
|
86
|
-
|
87
|
-
else
|
86
|
+
version = @record.class.paper_trail.version_class.new(data)
|
87
|
+
begin
|
88
|
+
version.save!
|
88
89
|
assign_and_reset_version_association(version)
|
89
90
|
version
|
91
|
+
rescue StandardError => e
|
92
|
+
handle_version_errors e, version, :destroy
|
90
93
|
end
|
91
94
|
end
|
92
95
|
|
@@ -108,14 +111,15 @@ module PaperTrail
|
|
108
111
|
)
|
109
112
|
return unless version
|
110
113
|
|
111
|
-
|
114
|
+
begin
|
115
|
+
version.save!
|
112
116
|
# Because the version object was created using version_class.new instead
|
113
117
|
# of versions_assoc.build?, the association cache is unaware. So, we
|
114
118
|
# invalidate the `versions` association cache with `reset`.
|
115
119
|
versions.reset
|
116
120
|
version
|
117
|
-
|
118
|
-
|
121
|
+
rescue StandardError => e
|
122
|
+
handle_version_errors e, version, :update
|
119
123
|
end
|
120
124
|
end
|
121
125
|
|
@@ -286,6 +290,26 @@ module PaperTrail
|
|
286
290
|
)
|
287
291
|
end
|
288
292
|
|
293
|
+
# Centralized handler for version errors
|
294
|
+
# @api private
|
295
|
+
def handle_version_errors(e, version, action)
|
296
|
+
case PaperTrail.config.version_error_behavior
|
297
|
+
when :legacy
|
298
|
+
# legacy behavior was to raise on create and log on update/delete
|
299
|
+
if action == :create
|
300
|
+
raise e
|
301
|
+
else
|
302
|
+
log_version_errors(version, action)
|
303
|
+
end
|
304
|
+
when :log
|
305
|
+
log_version_errors(version, action)
|
306
|
+
when :exception
|
307
|
+
raise e
|
308
|
+
when :silent
|
309
|
+
# noop
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
289
313
|
# @api private
|
290
314
|
# @return - The created version object, so that plugins can use it, e.g.
|
291
315
|
# paper_trail-association_tracking
|
@@ -298,11 +322,12 @@ module PaperTrail
|
|
298
322
|
data.merge!(data_for_update_columns)
|
299
323
|
|
300
324
|
versions_assoc = @record.send(@record.class.versions_association_name)
|
301
|
-
version = versions_assoc.
|
302
|
-
|
303
|
-
|
304
|
-
else
|
325
|
+
version = versions_assoc.new(data)
|
326
|
+
begin
|
327
|
+
version.save!
|
305
328
|
version
|
329
|
+
rescue StandardError => e
|
330
|
+
handle_version_errors e, version, :update
|
306
331
|
end
|
307
332
|
end
|
308
333
|
|
@@ -7,8 +7,8 @@ module PaperTrail
|
|
7
7
|
# because of this confusion, but it's not worth the breaking change.
|
8
8
|
# People are encouraged to use `PaperTrail.gem_version` instead.
|
9
9
|
module VERSION
|
10
|
-
MAJOR =
|
11
|
-
MINOR =
|
10
|
+
MAJOR = 16
|
11
|
+
MINOR = 0
|
12
12
|
TINY = 0
|
13
13
|
|
14
14
|
# Set PRE to nil unless it's a pre-release (beta, rc, etc.)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paper_trail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 16.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Stewart
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2024-
|
13
|
+
date: 2024-11-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -368,7 +368,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
368
368
|
- !ruby/object:Gem::Version
|
369
369
|
version: 1.3.6
|
370
370
|
requirements: []
|
371
|
-
rubygems_version: 3.
|
371
|
+
rubygems_version: 3.4.19
|
372
372
|
signing_key:
|
373
373
|
specification_version: 4
|
374
374
|
summary: Track changes to your models.
|