paper_trail 11.1.0 → 15.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/paper_trail/install/install_generator.rb +29 -5
  3. data/lib/generators/paper_trail/install/templates/create_versions.rb.erb +11 -6
  4. data/lib/generators/paper_trail/update_item_subtype/update_item_subtype_generator.rb +4 -2
  5. data/lib/paper_trail/attribute_serializers/attribute_serializer_factory.rb +24 -10
  6. data/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb +10 -10
  7. data/lib/paper_trail/attribute_serializers/object_attribute.rb +13 -3
  8. data/lib/paper_trail/attribute_serializers/object_changes_attribute.rb +13 -3
  9. data/lib/paper_trail/compatibility.rb +3 -3
  10. data/lib/paper_trail/errors.rb +33 -0
  11. data/lib/paper_trail/events/base.rb +84 -64
  12. data/lib/paper_trail/events/destroy.rb +1 -1
  13. data/lib/paper_trail/events/update.rb +23 -7
  14. data/lib/paper_trail/frameworks/active_record.rb +9 -2
  15. data/lib/paper_trail/frameworks/rails/controller.rb +0 -6
  16. data/lib/paper_trail/frameworks/rails/railtie.rb +34 -0
  17. data/lib/paper_trail/frameworks/rails.rb +1 -2
  18. data/lib/paper_trail/has_paper_trail.rb +4 -0
  19. data/lib/paper_trail/model_config.rb +51 -45
  20. data/lib/paper_trail/queries/versions/where_attribute_changes.rb +50 -0
  21. data/lib/paper_trail/queries/versions/where_object.rb +1 -1
  22. data/lib/paper_trail/queries/versions/where_object_changes.rb +9 -14
  23. data/lib/paper_trail/queries/versions/where_object_changes_from.rb +57 -0
  24. data/lib/paper_trail/queries/versions/where_object_changes_to.rb +57 -0
  25. data/lib/paper_trail/record_trail.rb +81 -64
  26. data/lib/paper_trail/reifier.rb +27 -10
  27. data/lib/paper_trail/request.rb +22 -25
  28. data/lib/paper_trail/serializers/json.rb +0 -10
  29. data/lib/paper_trail/serializers/yaml.rb +38 -13
  30. data/lib/paper_trail/type_serializers/postgres_array_serializer.rb +1 -14
  31. data/lib/paper_trail/version_concern.rb +74 -22
  32. data/lib/paper_trail/version_number.rb +2 -2
  33. data/lib/paper_trail.rb +30 -40
  34. metadata +98 -45
  35. data/Gemfile +0 -4
  36. data/lib/paper_trail/frameworks/rails/engine.rb +0 -45
  37. data/paper_trail.gemspec +0 -69
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paper_trail
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.1.0
4
+ version: 15.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Stewart
8
8
  - Ben Atkins
9
9
  - Jared Beck
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-12-16 00:00:00.000000000 Z
13
+ date: 2024-09-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -18,70 +18,70 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '5.2'
21
+ version: '6.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: '5.2'
28
+ version: '6.1'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: request_store
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: '1.1'
35
+ version: '1.4'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '1.1'
42
+ version: '1.4'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: appraisal
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '2.2'
49
+ version: '2.5'
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: '2.2'
56
+ version: '2.5'
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.0'
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.0'
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.11'
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.11'
84
+ version: '2.20'
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: generator_spec
87
87
  requirement: !ruby/object:Gem::Requirement
@@ -102,28 +102,28 @@ dependencies:
102
102
  requirements:
103
103
  - - "~>"
104
104
  - !ruby/object:Gem::Version
105
- version: 0.9.14
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.9.14
112
+ version: 1.0.0
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rails
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- version: '5.2'
119
+ version: '6.1'
120
120
  type: :development
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
123
  requirements:
124
124
  - - ">="
125
125
  - !ruby/object:Gem::Version
126
- version: '5.2'
126
+ version: '6.1'
127
127
  - !ruby/object:Gem::Dependency
128
128
  name: rake
129
129
  requirement: !ruby/object:Gem::Requirement
@@ -144,90 +144,140 @@ dependencies:
144
144
  requirements:
145
145
  - - "~>"
146
146
  - !ruby/object:Gem::Version
147
- version: '4.0'
147
+ version: 6.0.3
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: '4.0'
154
+ version: 6.0.3
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: 0.89.1
161
+ version: 1.22.2
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::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
162
176
  type: :development
163
177
  prerelease: false
164
178
  version_requirements: !ruby/object:Gem::Requirement
165
179
  requirements:
166
180
  - - "~>"
167
181
  - !ruby/object:Gem::Version
168
- version: 0.89.1
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.7.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: 1.7.1
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: 1.42.0
231
+ version: 2.5.0
232
+ type: :development
233
+ prerelease: false
234
+ version_requirements: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - "~>"
237
+ - !ruby/object:Gem::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
190
246
  type: :development
191
247
  prerelease: false
192
248
  version_requirements: !ruby/object:Gem::Requirement
193
249
  requirements:
194
250
  - - "~>"
195
251
  - !ruby/object:Gem::Version
196
- version: 1.42.0
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: '0.5'
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: '0.5'
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.0'
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.0'
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/engine.rb
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,12 +348,12 @@ 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
302
- metadata: {}
303
- post_install_message:
354
+ metadata:
355
+ changelog_uri: https://github.com/paper-trail-gem/paper_trail/blob/master/CHANGELOG.md
356
+ post_install_message:
304
357
  rdoc_options: []
305
358
  require_paths:
306
359
  - lib
@@ -308,15 +361,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
308
361
  requirements:
309
362
  - - ">="
310
363
  - !ruby/object:Gem::Version
311
- version: 2.4.0
364
+ version: 3.0.0
312
365
  required_rubygems_version: !ruby/object:Gem::Requirement
313
366
  requirements:
314
367
  - - ">="
315
368
  - !ruby/object:Gem::Version
316
369
  version: 1.3.6
317
370
  requirements: []
318
- rubygems_version: 3.0.3
319
- signing_key:
371
+ rubygems_version: 3.3.7
372
+ signing_key:
320
373
  specification_version: 4
321
374
  summary: Track changes to your models.
322
375
  test_files: []
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
- gemspec
@@ -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