paper_trail 15.2.0 → 16.0.0
Sign up to get free protection for your applications and to get access to all the features.
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.
|