paper_trail 11.1.0 → 12.3.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/lib/generators/paper_trail/install/install_generator.rb +19 -5
- data/lib/generators/paper_trail/install/templates/create_versions.rb.erb +4 -2
- data/lib/generators/paper_trail/update_item_subtype/update_item_subtype_generator.rb +4 -2
- data/lib/paper_trail/attribute_serializers/attribute_serializer_factory.rb +24 -10
- data/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb +10 -10
- data/lib/paper_trail/compatibility.rb +2 -2
- data/lib/paper_trail/errors.rb +33 -0
- data/lib/paper_trail/events/base.rb +60 -63
- data/lib/paper_trail/events/destroy.rb +1 -1
- data/lib/paper_trail/events/update.rb +23 -4
- data/lib/paper_trail/frameworks/active_record.rb +9 -2
- data/lib/paper_trail/frameworks/rails/controller.rb +0 -6
- data/lib/paper_trail/frameworks/rails/railtie.rb +30 -0
- data/lib/paper_trail/frameworks/rails.rb +1 -2
- data/lib/paper_trail/model_config.rb +51 -43
- data/lib/paper_trail/queries/versions/where_attribute_changes.rb +50 -0
- data/lib/paper_trail/queries/versions/where_object.rb +1 -1
- data/lib/paper_trail/queries/versions/where_object_changes.rb +8 -13
- data/lib/paper_trail/queries/versions/where_object_changes_from.rb +57 -0
- data/lib/paper_trail/queries/versions/where_object_changes_to.rb +57 -0
- data/lib/paper_trail/record_trail.rb +7 -7
- data/lib/paper_trail/reifier.rb +27 -10
- data/lib/paper_trail/request.rb +0 -3
- data/lib/paper_trail/serializers/json.rb +0 -10
- data/lib/paper_trail/serializers/yaml.rb +1 -13
- data/lib/paper_trail/type_serializers/postgres_array_serializer.rb +1 -14
- data/lib/paper_trail/version_concern.rb +64 -21
- data/lib/paper_trail/version_number.rb +2 -2
- data/lib/paper_trail.rb +17 -40
- metadata +87 -35
- data/Gemfile +0 -4
- data/lib/paper_trail/frameworks/rails/engine.rb +0 -45
- data/paper_trail.gemspec +0 -69
@@ -1,8 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "paper_trail/attribute_serializers/object_changes_attribute"
|
4
|
+
require "paper_trail/queries/versions/where_attribute_changes"
|
4
5
|
require "paper_trail/queries/versions/where_object"
|
5
6
|
require "paper_trail/queries/versions/where_object_changes"
|
7
|
+
require "paper_trail/queries/versions/where_object_changes_from"
|
8
|
+
require "paper_trail/queries/versions/where_object_changes_to"
|
6
9
|
|
7
10
|
module PaperTrail
|
8
11
|
# Originally, PaperTrail did not provide this module, and all of this
|
@@ -13,22 +16,13 @@ module PaperTrail
|
|
13
16
|
extend ::ActiveSupport::Concern
|
14
17
|
|
15
18
|
included do
|
16
|
-
|
17
|
-
belongs_to :item, polymorphic: true, optional: true
|
18
|
-
else
|
19
|
-
belongs_to :item, polymorphic: true
|
20
|
-
end
|
21
|
-
|
19
|
+
belongs_to :item, polymorphic: true, optional: true, inverse_of: false
|
22
20
|
validates_presence_of :event
|
23
21
|
after_create :enforce_version_limit!
|
24
22
|
end
|
25
23
|
|
26
24
|
# :nodoc:
|
27
25
|
module ClassMethods
|
28
|
-
def item_subtype_column_present?
|
29
|
-
column_names.include?("item_subtype")
|
30
|
-
end
|
31
|
-
|
32
26
|
def with_item_keys(item_type, item_id)
|
33
27
|
where item_type: item_type, item_id: item_id
|
34
28
|
end
|
@@ -46,7 +40,7 @@ module PaperTrail
|
|
46
40
|
end
|
47
41
|
|
48
42
|
def not_creates
|
49
|
-
where
|
43
|
+
where.not(event: "create")
|
50
44
|
end
|
51
45
|
|
52
46
|
def between(start_time, end_time)
|
@@ -64,6 +58,18 @@ module PaperTrail
|
|
64
58
|
end
|
65
59
|
end
|
66
60
|
|
61
|
+
# Given an attribute like `"name"`, query the `versions.object_changes`
|
62
|
+
# column for any changes that modified the provided attribute.
|
63
|
+
#
|
64
|
+
# @api public
|
65
|
+
def where_attribute_changes(attribute)
|
66
|
+
unless attribute.is_a?(String) || attribute.is_a?(Symbol)
|
67
|
+
raise ArgumentError, "expected to receive a String or Symbol"
|
68
|
+
end
|
69
|
+
|
70
|
+
Queries::Versions::WhereAttributeChanges.new(self, attribute).execute
|
71
|
+
end
|
72
|
+
|
67
73
|
# Given a hash of attributes like `name: 'Joan'`, query the
|
68
74
|
# `versions.objects` column.
|
69
75
|
#
|
@@ -120,6 +126,36 @@ module PaperTrail
|
|
120
126
|
Queries::Versions::WhereObjectChanges.new(self, args).execute
|
121
127
|
end
|
122
128
|
|
129
|
+
# Given a hash of attributes like `name: 'Joan'`, query the
|
130
|
+
# `versions.objects_changes` column for changes where the version changed
|
131
|
+
# from the hash of attributes to other values.
|
132
|
+
#
|
133
|
+
# This is useful for finding versions where the attribute started with a
|
134
|
+
# known value and changed to something else. This is in comparison to
|
135
|
+
# `where_object_changes` which will find both the changes before and
|
136
|
+
# after.
|
137
|
+
#
|
138
|
+
# @api public
|
139
|
+
def where_object_changes_from(args = {})
|
140
|
+
raise ArgumentError, "expected to receive a Hash" unless args.is_a?(Hash)
|
141
|
+
Queries::Versions::WhereObjectChangesFrom.new(self, args).execute
|
142
|
+
end
|
143
|
+
|
144
|
+
# Given a hash of attributes like `name: 'Joan'`, query the
|
145
|
+
# `versions.objects_changes` column for changes where the version changed
|
146
|
+
# to the hash of attributes from other values.
|
147
|
+
#
|
148
|
+
# This is useful for finding versions where the attribute started with an
|
149
|
+
# unknown value and changed to a known value. This is in comparison to
|
150
|
+
# `where_object_changes` which will find both the changes before and
|
151
|
+
# after.
|
152
|
+
#
|
153
|
+
# @api public
|
154
|
+
def where_object_changes_to(args = {})
|
155
|
+
raise ArgumentError, "expected to receive a Hash" unless args.is_a?(Hash)
|
156
|
+
Queries::Versions::WhereObjectChangesTo.new(self, args).execute
|
157
|
+
end
|
158
|
+
|
123
159
|
def primary_key_is_int?
|
124
160
|
@primary_key_is_int ||= columns_hash[primary_key].type == :integer
|
125
161
|
rescue StandardError # TODO: Rescue something more specific
|
@@ -226,7 +262,7 @@ module PaperTrail
|
|
226
262
|
#
|
227
263
|
def reify(options = {})
|
228
264
|
unless self.class.column_names.include? "object"
|
229
|
-
raise "reify
|
265
|
+
raise Error, "reify requires an object column"
|
230
266
|
end
|
231
267
|
return nil if object.nil?
|
232
268
|
::PaperTrail::Reifier.reify(self, options)
|
@@ -273,7 +309,7 @@ module PaperTrail
|
|
273
309
|
|
274
310
|
# @api private
|
275
311
|
def load_changeset
|
276
|
-
if PaperTrail.config.object_changes_adapter
|
312
|
+
if PaperTrail.config.object_changes_adapter.respond_to?(:load_changeset)
|
277
313
|
return PaperTrail.config.object_changes_adapter.load_changeset(self)
|
278
314
|
end
|
279
315
|
|
@@ -339,16 +375,23 @@ module PaperTrail
|
|
339
375
|
# The version limit can be global or per-model.
|
340
376
|
#
|
341
377
|
# @api private
|
342
|
-
#
|
343
|
-
# TODO: Duplication: similar `constantize` in Reifier#version_reification_class
|
344
378
|
def version_limit
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
379
|
+
klass = item.class
|
380
|
+
if limit_option?(klass)
|
381
|
+
klass.paper_trail_options[:limit]
|
382
|
+
elsif base_class_limit_option?(klass)
|
383
|
+
klass.base_class.paper_trail_options[:limit]
|
384
|
+
else
|
385
|
+
PaperTrail.config.version_limit
|
350
386
|
end
|
351
|
-
|
387
|
+
end
|
388
|
+
|
389
|
+
def limit_option?(klass)
|
390
|
+
klass.respond_to?(:paper_trail_options) && klass.paper_trail_options.key?(:limit)
|
391
|
+
end
|
392
|
+
|
393
|
+
def base_class_limit_option?(klass)
|
394
|
+
klass.respond_to?(:base_class) && limit_option?(klass.base_class)
|
352
395
|
end
|
353
396
|
end
|
354
397
|
end
|
@@ -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 = 12
|
11
|
+
MINOR = 3
|
12
12
|
TINY = 0
|
13
13
|
|
14
14
|
# Set PRE to nil unless it's a pre-release (beta, rc, etc.)
|
data/lib/paper_trail.rb
CHANGED
@@ -8,40 +8,26 @@
|
|
8
8
|
# can revisit this decision.
|
9
9
|
require "active_support/all"
|
10
10
|
|
11
|
-
|
12
|
-
# all of those files, but it seems easier to troubleshoot if we just make sure
|
13
|
-
# AR is loaded here before loading *any* of PT. See discussion of
|
14
|
-
# performance/simplicity tradeoff for activesupport above.
|
15
|
-
require "active_record"
|
16
|
-
|
17
|
-
require "request_store"
|
11
|
+
require "paper_trail/errors"
|
18
12
|
require "paper_trail/cleaner"
|
19
13
|
require "paper_trail/compatibility"
|
20
14
|
require "paper_trail/config"
|
21
|
-
require "paper_trail/has_paper_trail"
|
22
15
|
require "paper_trail/record_history"
|
23
|
-
require "paper_trail/reifier"
|
24
16
|
require "paper_trail/request"
|
25
|
-
require "paper_trail/version_concern"
|
26
17
|
require "paper_trail/version_number"
|
27
18
|
require "paper_trail/serializers/json"
|
28
|
-
require "paper_trail/serializers/yaml"
|
29
19
|
|
30
20
|
# An ActiveRecord extension that tracks changes to your models, for auditing or
|
31
21
|
# versioning.
|
32
22
|
module PaperTrail
|
33
|
-
E_RAILS_NOT_LOADED = <<-EOS.squish.freeze
|
34
|
-
PaperTrail has been loaded too early, before rails is loaded. This can
|
35
|
-
happen when another gem defines the ::Rails namespace, then PT is loaded,
|
36
|
-
all before rails is loaded. You may want to reorder your Gemfile, or defer
|
37
|
-
the loading of PT by using `require: false` and a manual require elsewhere.
|
38
|
-
EOS
|
39
23
|
E_TIMESTAMP_FIELD_CONFIG = <<-EOS.squish.freeze
|
40
24
|
PaperTrail.timestamp_field= has been removed, without replacement. It is no
|
41
25
|
longer configurable. The timestamp column in the versions table must now be
|
42
26
|
named created_at.
|
43
27
|
EOS
|
44
28
|
|
29
|
+
RAILS_GTE_7_0 = ::ActiveRecord.gem_version >= ::Gem::Version.new("7.0.0")
|
30
|
+
|
45
31
|
extend PaperTrail::Cleaner
|
46
32
|
|
47
33
|
class << self
|
@@ -85,7 +71,7 @@ module PaperTrail
|
|
85
71
|
#
|
86
72
|
# @api public
|
87
73
|
def request(options = nil, &block)
|
88
|
-
if options.nil? && !
|
74
|
+
if options.nil? && !block
|
89
75
|
Request
|
90
76
|
else
|
91
77
|
Request.with(options, &block)
|
@@ -95,7 +81,7 @@ module PaperTrail
|
|
95
81
|
# Set the field which records when a version was created.
|
96
82
|
# @api public
|
97
83
|
def timestamp_field=(_field_name)
|
98
|
-
raise
|
84
|
+
raise Error, E_TIMESTAMP_FIELD_CONFIG
|
99
85
|
end
|
100
86
|
|
101
87
|
# Set the PaperTrail serializer. This setting affects all threads.
|
@@ -126,27 +112,18 @@ module PaperTrail
|
|
126
112
|
end
|
127
113
|
end
|
128
114
|
|
129
|
-
#
|
130
|
-
#
|
131
|
-
#
|
132
|
-
#
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
#
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
if defined?(::Rails.application)
|
142
|
-
require "paper_trail/frameworks/rails"
|
143
|
-
else
|
144
|
-
::Kernel.warn(::PaperTrail::E_RAILS_NOT_LOADED)
|
145
|
-
end
|
115
|
+
# PT is built on ActiveRecord, but does not require Rails. If Rails is defined,
|
116
|
+
# our Railtie makes sure not to load the AR-dependent parts of PT until AR is
|
117
|
+
# ready. A typical Rails `application.rb` has:
|
118
|
+
#
|
119
|
+
# ```
|
120
|
+
# require 'rails/all' # Defines `Rails`
|
121
|
+
# Bundler.require(*Rails.groups) # require 'paper_trail' (this file)
|
122
|
+
# ```
|
123
|
+
#
|
124
|
+
# Non-rails applications should take similar care to load AR before PT.
|
125
|
+
if defined?(Rails)
|
126
|
+
require "paper_trail/frameworks/rails"
|
146
127
|
else
|
147
128
|
require "paper_trail/frameworks/active_record"
|
148
129
|
end
|
149
|
-
|
150
|
-
if defined?(::ActiveRecord)
|
151
|
-
::PaperTrail::Compatibility.check_activerecord(::ActiveRecord.gem_version)
|
152
|
-
end
|
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: 12.3.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:
|
13
|
+
date: 2022-03-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -46,42 +46,42 @@ dependencies:
|
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
49
|
+
version: 2.4.1
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
56
|
+
version: 2.4.1
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: byebug
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '11.
|
63
|
+
version: '11.1'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: '11.
|
70
|
+
version: '11.1'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: ffaker
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '2.
|
77
|
+
version: '2.20'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '2.
|
84
|
+
version: '2.20'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: generator_spec
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,14 +102,14 @@ dependencies:
|
|
102
102
|
requirements:
|
103
103
|
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: 0.
|
105
|
+
version: 1.0.0
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
110
|
- - "~>"
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 0.
|
112
|
+
version: 1.0.0
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: rails
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,90 +144,140 @@ dependencies:
|
|
144
144
|
requirements:
|
145
145
|
- - "~>"
|
146
146
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
147
|
+
version: 5.0.2
|
148
148
|
type: :development
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
152
|
- - "~>"
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
154
|
+
version: 5.0.2
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
156
|
name: rubocop
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
159
|
- - "~>"
|
160
160
|
- !ruby/object:Gem::Version
|
161
|
-
version:
|
161
|
+
version: 1.22.2
|
162
162
|
type: :development
|
163
163
|
prerelease: false
|
164
164
|
version_requirements: !ruby/object:Gem::Requirement
|
165
165
|
requirements:
|
166
166
|
- - "~>"
|
167
167
|
- !ruby/object:Gem::Version
|
168
|
-
version:
|
168
|
+
version: 1.22.2
|
169
|
+
- !ruby/object:Gem::Dependency
|
170
|
+
name: rubocop-packaging
|
171
|
+
requirement: !ruby/object:Gem::Requirement
|
172
|
+
requirements:
|
173
|
+
- - "~>"
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: 0.5.1
|
176
|
+
type: :development
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - "~>"
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: 0.5.1
|
169
183
|
- !ruby/object:Gem::Dependency
|
170
184
|
name: rubocop-performance
|
171
185
|
requirement: !ruby/object:Gem::Requirement
|
172
186
|
requirements:
|
173
187
|
- - "~>"
|
174
188
|
- !ruby/object:Gem::Version
|
175
|
-
version: 1.
|
189
|
+
version: 1.11.5
|
190
|
+
type: :development
|
191
|
+
prerelease: false
|
192
|
+
version_requirements: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - "~>"
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: 1.11.5
|
197
|
+
- !ruby/object:Gem::Dependency
|
198
|
+
name: rubocop-rails
|
199
|
+
requirement: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - "~>"
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: 2.12.4
|
204
|
+
type: :development
|
205
|
+
prerelease: false
|
206
|
+
version_requirements: !ruby/object:Gem::Requirement
|
207
|
+
requirements:
|
208
|
+
- - "~>"
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: 2.12.4
|
211
|
+
- !ruby/object:Gem::Dependency
|
212
|
+
name: rubocop-rake
|
213
|
+
requirement: !ruby/object:Gem::Requirement
|
214
|
+
requirements:
|
215
|
+
- - "~>"
|
216
|
+
- !ruby/object:Gem::Version
|
217
|
+
version: 0.6.0
|
176
218
|
type: :development
|
177
219
|
prerelease: false
|
178
220
|
version_requirements: !ruby/object:Gem::Requirement
|
179
221
|
requirements:
|
180
222
|
- - "~>"
|
181
223
|
- !ruby/object:Gem::Version
|
182
|
-
version:
|
224
|
+
version: 0.6.0
|
183
225
|
- !ruby/object:Gem::Dependency
|
184
226
|
name: rubocop-rspec
|
185
227
|
requirement: !ruby/object:Gem::Requirement
|
186
228
|
requirements:
|
187
229
|
- - "~>"
|
188
230
|
- !ruby/object:Gem::Version
|
189
|
-
version:
|
231
|
+
version: 2.5.0
|
190
232
|
type: :development
|
191
233
|
prerelease: false
|
192
234
|
version_requirements: !ruby/object:Gem::Requirement
|
193
235
|
requirements:
|
194
236
|
- - "~>"
|
195
237
|
- !ruby/object:Gem::Version
|
196
|
-
version:
|
238
|
+
version: 2.5.0
|
239
|
+
- !ruby/object:Gem::Dependency
|
240
|
+
name: simplecov
|
241
|
+
requirement: !ruby/object:Gem::Requirement
|
242
|
+
requirements:
|
243
|
+
- - "~>"
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: 0.21.2
|
246
|
+
type: :development
|
247
|
+
prerelease: false
|
248
|
+
version_requirements: !ruby/object:Gem::Requirement
|
249
|
+
requirements:
|
250
|
+
- - "~>"
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: 0.21.2
|
197
253
|
- !ruby/object:Gem::Dependency
|
198
254
|
name: mysql2
|
199
255
|
requirement: !ruby/object:Gem::Requirement
|
200
256
|
requirements:
|
201
257
|
- - "~>"
|
202
258
|
- !ruby/object:Gem::Version
|
203
|
-
version:
|
259
|
+
version: 0.5.3
|
204
260
|
type: :development
|
205
261
|
prerelease: false
|
206
262
|
version_requirements: !ruby/object:Gem::Requirement
|
207
263
|
requirements:
|
208
264
|
- - "~>"
|
209
265
|
- !ruby/object:Gem::Version
|
210
|
-
version:
|
266
|
+
version: 0.5.3
|
211
267
|
- !ruby/object:Gem::Dependency
|
212
268
|
name: pg
|
213
269
|
requirement: !ruby/object:Gem::Requirement
|
214
270
|
requirements:
|
215
|
-
- - "
|
216
|
-
- !ruby/object:Gem::Version
|
217
|
-
version: '0.18'
|
218
|
-
- - "<"
|
271
|
+
- - "~>"
|
219
272
|
- !ruby/object:Gem::Version
|
220
|
-
version: '2
|
273
|
+
version: '1.2'
|
221
274
|
type: :development
|
222
275
|
prerelease: false
|
223
276
|
version_requirements: !ruby/object:Gem::Requirement
|
224
277
|
requirements:
|
225
|
-
- - "
|
226
|
-
- !ruby/object:Gem::Version
|
227
|
-
version: '0.18'
|
228
|
-
- - "<"
|
278
|
+
- - "~>"
|
229
279
|
- !ruby/object:Gem::Version
|
230
|
-
version: '2
|
280
|
+
version: '1.2'
|
231
281
|
- !ruby/object:Gem::Dependency
|
232
282
|
name: sqlite3
|
233
283
|
requirement: !ruby/object:Gem::Requirement
|
@@ -251,7 +301,6 @@ executables: []
|
|
251
301
|
extensions: []
|
252
302
|
extra_rdoc_files: []
|
253
303
|
files:
|
254
|
-
- Gemfile
|
255
304
|
- LICENSE
|
256
305
|
- lib/generators/paper_trail/install/USAGE
|
257
306
|
- lib/generators/paper_trail/install/install_generator.rb
|
@@ -270,6 +319,7 @@ files:
|
|
270
319
|
- lib/paper_trail/cleaner.rb
|
271
320
|
- lib/paper_trail/compatibility.rb
|
272
321
|
- lib/paper_trail/config.rb
|
322
|
+
- lib/paper_trail/errors.rb
|
273
323
|
- lib/paper_trail/events/base.rb
|
274
324
|
- lib/paper_trail/events/create.rb
|
275
325
|
- lib/paper_trail/events/destroy.rb
|
@@ -279,13 +329,16 @@ files:
|
|
279
329
|
- lib/paper_trail/frameworks/cucumber.rb
|
280
330
|
- lib/paper_trail/frameworks/rails.rb
|
281
331
|
- lib/paper_trail/frameworks/rails/controller.rb
|
282
|
-
- lib/paper_trail/frameworks/rails/
|
332
|
+
- lib/paper_trail/frameworks/rails/railtie.rb
|
283
333
|
- lib/paper_trail/frameworks/rspec.rb
|
284
334
|
- lib/paper_trail/frameworks/rspec/helpers.rb
|
285
335
|
- lib/paper_trail/has_paper_trail.rb
|
286
336
|
- lib/paper_trail/model_config.rb
|
337
|
+
- lib/paper_trail/queries/versions/where_attribute_changes.rb
|
287
338
|
- lib/paper_trail/queries/versions/where_object.rb
|
288
339
|
- lib/paper_trail/queries/versions/where_object_changes.rb
|
340
|
+
- lib/paper_trail/queries/versions/where_object_changes_from.rb
|
341
|
+
- lib/paper_trail/queries/versions/where_object_changes_to.rb
|
289
342
|
- lib/paper_trail/record_history.rb
|
290
343
|
- lib/paper_trail/record_trail.rb
|
291
344
|
- lib/paper_trail/reifier.rb
|
@@ -295,7 +348,6 @@ files:
|
|
295
348
|
- lib/paper_trail/type_serializers/postgres_array_serializer.rb
|
296
349
|
- lib/paper_trail/version_concern.rb
|
297
350
|
- lib/paper_trail/version_number.rb
|
298
|
-
- paper_trail.gemspec
|
299
351
|
homepage: https://github.com/paper-trail-gem/paper_trail
|
300
352
|
licenses:
|
301
353
|
- MIT
|
@@ -308,14 +360,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
308
360
|
requirements:
|
309
361
|
- - ">="
|
310
362
|
- !ruby/object:Gem::Version
|
311
|
-
version: 2.
|
363
|
+
version: 2.6.0
|
312
364
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
313
365
|
requirements:
|
314
366
|
- - ">="
|
315
367
|
- !ruby/object:Gem::Version
|
316
368
|
version: 1.3.6
|
317
369
|
requirements: []
|
318
|
-
rubygems_version: 3.
|
370
|
+
rubygems_version: 3.2.22
|
319
371
|
signing_key:
|
320
372
|
specification_version: 4
|
321
373
|
summary: Track changes to your models.
|
data/Gemfile
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module PaperTrail
|
4
|
-
module Rails
|
5
|
-
# See http://guides.rubyonrails.org/engines.html
|
6
|
-
class Engine < ::Rails::Engine
|
7
|
-
DPR_CONFIG_ENABLED = <<~EOS.squish.freeze
|
8
|
-
The rails configuration option config.paper_trail.enabled is deprecated.
|
9
|
-
Please use PaperTrail.enabled= instead. People were getting confused
|
10
|
-
that PT has both, specifically regarding *when* each was happening. If
|
11
|
-
you'd like to keep config.paper_trail, join the discussion at
|
12
|
-
https://github.com/paper-trail-gem/paper_trail/pull/1176
|
13
|
-
EOS
|
14
|
-
private_constant :DPR_CONFIG_ENABLED
|
15
|
-
DPR_RUDELY_ENABLING = <<~EOS.squish.freeze
|
16
|
-
At some point early in the rails boot process, you have set
|
17
|
-
PaperTrail.enabled = false. PT's rails engine is now overriding your
|
18
|
-
setting, and setting it to true. We're not sure why, but this is how PT
|
19
|
-
has worked since 5.0, when the config.paper_trail.enabled option was
|
20
|
-
introduced. This is now deprecated. In the future, PT will not override
|
21
|
-
your setting. See
|
22
|
-
https://github.com/paper-trail-gem/paper_trail/pull/1176 for discussion.
|
23
|
-
EOS
|
24
|
-
private_constant :DPR_RUDELY_ENABLING
|
25
|
-
|
26
|
-
paths["app/models"] << "lib/paper_trail/frameworks/active_record/models"
|
27
|
-
|
28
|
-
# --- Begin deprecated section ---
|
29
|
-
config.paper_trail = ActiveSupport::OrderedOptions.new
|
30
|
-
initializer "paper_trail.initialisation" do |app|
|
31
|
-
enable = app.config.paper_trail[:enabled]
|
32
|
-
if enable.nil?
|
33
|
-
unless PaperTrail.enabled?
|
34
|
-
::ActiveSupport::Deprecation.warn(DPR_RUDELY_ENABLING)
|
35
|
-
PaperTrail.enabled = true
|
36
|
-
end
|
37
|
-
else
|
38
|
-
::ActiveSupport::Deprecation.warn(DPR_CONFIG_ENABLED)
|
39
|
-
PaperTrail.enabled = enable
|
40
|
-
end
|
41
|
-
end
|
42
|
-
# --- End deprecated section ---
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
data/paper_trail.gemspec
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift File.expand_path("lib", __dir__)
|
4
|
-
require "paper_trail/compatibility"
|
5
|
-
require "paper_trail/version_number"
|
6
|
-
|
7
|
-
Gem::Specification.new do |s|
|
8
|
-
s.name = "paper_trail"
|
9
|
-
s.version = PaperTrail::VERSION::STRING
|
10
|
-
s.platform = Gem::Platform::RUBY
|
11
|
-
s.summary = "Track changes to your models."
|
12
|
-
s.description = <<-EOS
|
13
|
-
Track changes to your models, for auditing or versioning. See how a model looked
|
14
|
-
at any stage in its lifecycle, revert it to any version, or restore it after it
|
15
|
-
has been destroyed.
|
16
|
-
EOS
|
17
|
-
s.homepage = "https://github.com/paper-trail-gem/paper_trail"
|
18
|
-
s.authors = ["Andy Stewart", "Ben Atkins", "Jared Beck"]
|
19
|
-
s.email = "jared@jaredbeck.com"
|
20
|
-
s.license = "MIT"
|
21
|
-
|
22
|
-
s.files = `git ls-files -z`.split("\x0").select { |f|
|
23
|
-
f.match(%r{^(Gemfile|LICENSE|lib/|paper_trail.gemspec)})
|
24
|
-
}
|
25
|
-
s.executables = []
|
26
|
-
s.require_paths = ["lib"]
|
27
|
-
|
28
|
-
s.required_rubygems_version = ">= 1.3.6"
|
29
|
-
|
30
|
-
# Ruby 2.4 reaches EoL at the end of March of 2020
|
31
|
-
# https://www.ruby-lang.org/en/news/2019/10/02/ruby-2-4-9-released/
|
32
|
-
s.required_ruby_version = ">= 2.4.0"
|
33
|
-
|
34
|
-
# We no longer specify a maximum activerecord version.
|
35
|
-
# See discussion in paper_trail/compatibility.rb
|
36
|
-
s.add_dependency "activerecord", ::PaperTrail::Compatibility::ACTIVERECORD_GTE
|
37
|
-
s.add_dependency "request_store", "~> 1.1"
|
38
|
-
|
39
|
-
s.add_development_dependency "appraisal", "~> 2.2"
|
40
|
-
s.add_development_dependency "byebug", "~> 11.0"
|
41
|
-
s.add_development_dependency "ffaker", "~> 2.11"
|
42
|
-
s.add_development_dependency "generator_spec", "~> 0.9.4"
|
43
|
-
s.add_development_dependency "memory_profiler", "~> 0.9.14"
|
44
|
-
|
45
|
-
# For `spec/dummy_app`. Technically, we only need `actionpack` (as of 2020).
|
46
|
-
# However, that might change in the future, and the advantages of specifying a
|
47
|
-
# subset (e.g. actionpack only) are unclear.
|
48
|
-
s.add_development_dependency "rails", ::PaperTrail::Compatibility::ACTIVERECORD_GTE
|
49
|
-
|
50
|
-
s.add_development_dependency "rake", "~> 13.0"
|
51
|
-
s.add_development_dependency "rspec-rails", "~> 4.0"
|
52
|
-
s.add_development_dependency "rubocop", "~> 0.89.1"
|
53
|
-
s.add_development_dependency "rubocop-performance", "~> 1.7.1"
|
54
|
-
s.add_development_dependency "rubocop-rspec", "~> 1.42.0"
|
55
|
-
|
56
|
-
# ## Database Adapters
|
57
|
-
#
|
58
|
-
# The dependencies here must match the `gem` call at the top of their
|
59
|
-
# adapters, eg. `active_record/connection_adapters/mysql2_adapter.rb`,
|
60
|
-
# assuming said call is consistent for all versions of rails we test against
|
61
|
-
# (see `Appraisals`).
|
62
|
-
#
|
63
|
-
# Currently, all versions of rails we test against are consistent. In the past,
|
64
|
-
# when we tested against rails 4.2, we had to specify database adapters in
|
65
|
-
# `Appraisals`.
|
66
|
-
s.add_development_dependency "mysql2", "~> 0.5"
|
67
|
-
s.add_development_dependency "pg", ">= 0.18", "< 2.0"
|
68
|
-
s.add_development_dependency "sqlite3", "~> 1.4"
|
69
|
-
end
|