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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/paper_trail/install/install_generator.rb +19 -5
  3. data/lib/generators/paper_trail/install/templates/create_versions.rb.erb +4 -2
  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/compatibility.rb +2 -2
  8. data/lib/paper_trail/errors.rb +33 -0
  9. data/lib/paper_trail/events/base.rb +60 -63
  10. data/lib/paper_trail/events/destroy.rb +1 -1
  11. data/lib/paper_trail/events/update.rb +23 -4
  12. data/lib/paper_trail/frameworks/active_record.rb +9 -2
  13. data/lib/paper_trail/frameworks/rails/controller.rb +0 -6
  14. data/lib/paper_trail/frameworks/rails/railtie.rb +30 -0
  15. data/lib/paper_trail/frameworks/rails.rb +1 -2
  16. data/lib/paper_trail/model_config.rb +51 -43
  17. data/lib/paper_trail/queries/versions/where_attribute_changes.rb +50 -0
  18. data/lib/paper_trail/queries/versions/where_object.rb +1 -1
  19. data/lib/paper_trail/queries/versions/where_object_changes.rb +8 -13
  20. data/lib/paper_trail/queries/versions/where_object_changes_from.rb +57 -0
  21. data/lib/paper_trail/queries/versions/where_object_changes_to.rb +57 -0
  22. data/lib/paper_trail/record_trail.rb +7 -7
  23. data/lib/paper_trail/reifier.rb +27 -10
  24. data/lib/paper_trail/request.rb +0 -3
  25. data/lib/paper_trail/serializers/json.rb +0 -10
  26. data/lib/paper_trail/serializers/yaml.rb +1 -13
  27. data/lib/paper_trail/type_serializers/postgres_array_serializer.rb +1 -14
  28. data/lib/paper_trail/version_concern.rb +64 -21
  29. data/lib/paper_trail/version_number.rb +2 -2
  30. data/lib/paper_trail.rb +17 -40
  31. metadata +87 -35
  32. data/Gemfile +0 -4
  33. data/lib/paper_trail/frameworks/rails/engine.rb +0 -45
  34. 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
- if ::ActiveRecord.gem_version >= Gem::Version.new("5.0")
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 "event <> ?", "create"
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 can't be called without an object column"
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&.respond_to?(:load_changeset)
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
- if self.class.item_subtype_column_present?
346
- klass = (item_subtype || item_type).constantize
347
- if klass&.paper_trail_options&.key?(:limit)
348
- return klass.paper_trail_options[:limit]
349
- end
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
- PaperTrail.config.version_limit
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
11
- MINOR = 1
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
- # AR is required for, eg. has_paper_trail.rb, so we could put this `require` in
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? && !block_given?
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(E_TIMESTAMP_FIELD_CONFIG)
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
- # We use the `on_load` "hook" instead of `ActiveRecord::Base.include` because we
130
- # don't want to cause all of AR to be autloaded yet. See
131
- # https://guides.rubyonrails.org/engines.html#what-are-on-load-hooks-questionmark
132
- # to learn more about `on_load`.
133
- ActiveSupport.on_load(:active_record) do
134
- include PaperTrail::Model
135
- end
136
-
137
- # Require frameworks
138
- if defined?(::Rails)
139
- # Rails module is sometimes defined by gems like rails-html-sanitizer
140
- # so we check for presence of Rails.application.
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: 11.1.0
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: 2020-12-16 00:00:00.000000000 Z
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: '2.2'
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: '2.2'
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.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,14 +102,14 @@ 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
@@ -144,90 +144,140 @@ dependencies:
144
144
  requirements:
145
145
  - - "~>"
146
146
  - !ruby/object:Gem::Version
147
- version: '4.0'
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: '4.0'
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: 0.89.1
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: 0.89.1
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.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
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: 1.42.0
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: '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,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.4.0
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.0.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,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