paper_trail 8.0.0 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +5 -5
  2. data/lib/generators/paper_trail/install_generator.rb +3 -1
  3. data/lib/paper_trail.rb +151 -84
  4. data/lib/paper_trail/attribute_serializers/attribute_serializer_factory.rb +27 -0
  5. data/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb +7 -4
  6. data/lib/paper_trail/attribute_serializers/object_attribute.rb +2 -0
  7. data/lib/paper_trail/attribute_serializers/object_changes_attribute.rb +2 -0
  8. data/lib/paper_trail/cleaner.rb +2 -0
  9. data/lib/paper_trail/config.rb +33 -8
  10. data/lib/paper_trail/frameworks/active_record.rb +2 -0
  11. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version.rb +2 -0
  12. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version_association.rb +2 -0
  13. data/lib/paper_trail/frameworks/cucumber.rb +5 -3
  14. data/lib/paper_trail/frameworks/rails.rb +2 -0
  15. data/lib/paper_trail/frameworks/rails/controller.rb +30 -15
  16. data/lib/paper_trail/frameworks/rails/engine.rb +2 -0
  17. data/lib/paper_trail/frameworks/rspec.rb +5 -3
  18. data/lib/paper_trail/frameworks/rspec/helpers.rb +2 -0
  19. data/lib/paper_trail/has_paper_trail.rb +2 -2
  20. data/lib/paper_trail/model_config.rb +77 -22
  21. data/lib/paper_trail/queries/versions/where_object.rb +2 -0
  22. data/lib/paper_trail/queries/versions/where_object_changes.rb +3 -1
  23. data/lib/paper_trail/record_history.rb +2 -0
  24. data/lib/paper_trail/record_trail.rb +189 -55
  25. data/lib/paper_trail/reifier.rb +4 -2
  26. data/lib/paper_trail/reifiers/belongs_to.rb +3 -1
  27. data/lib/paper_trail/reifiers/has_and_belongs_to_many.rb +3 -1
  28. data/lib/paper_trail/reifiers/has_many.rb +3 -1
  29. data/lib/paper_trail/reifiers/has_many_through.rb +3 -1
  30. data/lib/paper_trail/reifiers/has_one.rb +52 -4
  31. data/lib/paper_trail/request.rb +183 -0
  32. data/lib/paper_trail/serializers/json.rb +2 -2
  33. data/lib/paper_trail/serializers/yaml.rb +10 -5
  34. data/lib/paper_trail/type_serializers/postgres_array_serializer.rb +49 -0
  35. data/lib/paper_trail/version_association_concern.rb +1 -1
  36. data/lib/paper_trail/version_concern.rb +2 -6
  37. data/lib/paper_trail/version_number.rb +3 -1
  38. metadata +55 -81
  39. data/lib/paper_trail/attribute_serializers/legacy_active_record_shim.rb +0 -48
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PaperTrail
2
4
  # The version number of the paper_trail gem. Not to be confused with
3
5
  # `PaperTrail::Version`. Ruby constants are case-sensitive, apparently,
@@ -5,7 +7,7 @@ module PaperTrail
5
7
  # because of this confusion, but it's not worth the breaking change.
6
8
  # People are encouraged to use `PaperTrail.gem_version` instead.
7
9
  module VERSION
8
- MAJOR = 8
10
+ MAJOR = 9
9
11
  MINOR = 0
10
12
  TINY = 0
11
13
  PRE = nil
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: 8.0.0
4
+ version: 9.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: 2017-10-05 00:00:00.000000000 Z
13
+ date: 2018-03-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '4.2'
22
22
  - - "<"
23
23
  - !ruby/object:Gem::Version
24
- version: '5.2'
24
+ version: '5.3'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -31,7 +31,7 @@ dependencies:
31
31
  version: '4.2'
32
32
  - - "<"
33
33
  - !ruby/object:Gem::Version
34
- version: '5.2'
34
+ version: '5.3'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: request_store
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -52,221 +52,193 @@ dependencies:
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '2.1'
55
+ version: '2.2'
56
56
  type: :development
57
57
  prerelease: false
58
58
  version_requirements: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: '2.1'
62
+ version: '2.2'
63
63
  - !ruby/object:Gem::Dependency
64
- name: rake
64
+ name: byebug
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '12.0'
69
+ version: '9.1'
70
70
  type: :development
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: '12.0'
76
+ version: '9.1'
77
77
  - !ruby/object:Gem::Dependency
78
78
  name: ffaker
79
79
  requirement: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: '2.5'
83
+ version: '2.7'
84
84
  type: :development
85
85
  prerelease: false
86
86
  version_requirements: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '2.5'
90
+ version: '2.7'
91
91
  - !ruby/object:Gem::Dependency
92
- name: railties
93
- requirement: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '4.2'
98
- - - "<"
99
- - !ruby/object:Gem::Version
100
- version: '5.2'
101
- type: :development
102
- prerelease: false
103
- version_requirements: !ruby/object:Gem::Requirement
104
- requirements:
105
- - - ">="
106
- - !ruby/object:Gem::Version
107
- version: '4.2'
108
- - - "<"
109
- - !ruby/object:Gem::Version
110
- version: '5.2'
111
- - !ruby/object:Gem::Dependency
112
- name: rack-test
92
+ name: generator_spec
113
93
  requirement: !ruby/object:Gem::Requirement
114
94
  requirements:
115
95
  - - "~>"
116
96
  - !ruby/object:Gem::Version
117
- version: 0.6.3
97
+ version: 0.9.4
118
98
  type: :development
119
99
  prerelease: false
120
100
  version_requirements: !ruby/object:Gem::Requirement
121
101
  requirements:
122
102
  - - "~>"
123
103
  - !ruby/object:Gem::Version
124
- version: 0.6.3
104
+ version: 0.9.4
125
105
  - !ruby/object:Gem::Dependency
126
- name: rspec-rails
106
+ name: mysql2
127
107
  requirement: !ruby/object:Gem::Requirement
128
108
  requirements:
129
109
  - - "~>"
130
110
  - !ruby/object:Gem::Version
131
- version: '3.5'
111
+ version: 0.4.10
132
112
  type: :development
133
113
  prerelease: false
134
114
  version_requirements: !ruby/object:Gem::Requirement
135
115
  requirements:
136
116
  - - "~>"
137
117
  - !ruby/object:Gem::Version
138
- version: '3.5'
118
+ version: 0.4.10
139
119
  - !ruby/object:Gem::Dependency
140
- name: generator_spec
120
+ name: pg
141
121
  requirement: !ruby/object:Gem::Requirement
142
122
  requirements:
143
123
  - - "~>"
144
124
  - !ruby/object:Gem::Version
145
- version: 0.9.3
125
+ version: 0.21.0
146
126
  type: :development
147
127
  prerelease: false
148
128
  version_requirements: !ruby/object:Gem::Requirement
149
129
  requirements:
150
130
  - - "~>"
151
131
  - !ruby/object:Gem::Version
152
- version: 0.9.3
132
+ version: 0.21.0
153
133
  - !ruby/object:Gem::Dependency
154
- name: database_cleaner
134
+ name: rack-test
155
135
  requirement: !ruby/object:Gem::Requirement
156
136
  requirements:
157
- - - "~>"
137
+ - - ">="
158
138
  - !ruby/object:Gem::Version
159
- version: '1.2'
139
+ version: 0.6.3
140
+ - - "<"
141
+ - !ruby/object:Gem::Version
142
+ version: '0.9'
160
143
  type: :development
161
144
  prerelease: false
162
145
  version_requirements: !ruby/object:Gem::Requirement
163
146
  requirements:
164
- - - "~>"
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: 0.6.3
150
+ - - "<"
165
151
  - !ruby/object:Gem::Version
166
- version: '1.2'
152
+ version: '0.9'
167
153
  - !ruby/object:Gem::Dependency
168
- name: pry-byebug
154
+ name: rake
169
155
  requirement: !ruby/object:Gem::Requirement
170
156
  requirements:
171
157
  - - "~>"
172
158
  - !ruby/object:Gem::Version
173
- version: '3.4'
159
+ version: '12.3'
174
160
  type: :development
175
161
  prerelease: false
176
162
  version_requirements: !ruby/object:Gem::Requirement
177
163
  requirements:
178
164
  - - "~>"
179
165
  - !ruby/object:Gem::Version
180
- version: '3.4'
166
+ version: '12.3'
181
167
  - !ruby/object:Gem::Dependency
182
- name: rubocop
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - '='
186
- - !ruby/object:Gem::Version
187
- version: 0.50.0
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - '='
193
- - !ruby/object:Gem::Version
194
- version: 0.50.0
195
- - !ruby/object:Gem::Dependency
196
- name: rubocop-rspec
168
+ name: rspec-rails
197
169
  requirement: !ruby/object:Gem::Requirement
198
170
  requirements:
199
171
  - - "~>"
200
172
  - !ruby/object:Gem::Version
201
- version: 1.17.0
173
+ version: 3.7.2
202
174
  type: :development
203
175
  prerelease: false
204
176
  version_requirements: !ruby/object:Gem::Requirement
205
177
  requirements:
206
178
  - - "~>"
207
179
  - !ruby/object:Gem::Version
208
- version: 1.17.0
180
+ version: 3.7.2
209
181
  - !ruby/object:Gem::Dependency
210
- name: timecop
182
+ name: rubocop
211
183
  requirement: !ruby/object:Gem::Requirement
212
184
  requirements:
213
185
  - - "~>"
214
186
  - !ruby/object:Gem::Version
215
- version: 0.8.0
187
+ version: 0.51.0
216
188
  type: :development
217
189
  prerelease: false
218
190
  version_requirements: !ruby/object:Gem::Requirement
219
191
  requirements:
220
192
  - - "~>"
221
193
  - !ruby/object:Gem::Version
222
- version: 0.8.0
194
+ version: 0.51.0
223
195
  - !ruby/object:Gem::Dependency
224
- name: sqlite3
196
+ name: rubocop-rspec
225
197
  requirement: !ruby/object:Gem::Requirement
226
198
  requirements:
227
199
  - - "~>"
228
200
  - !ruby/object:Gem::Version
229
- version: '1.2'
201
+ version: 1.19.0
230
202
  type: :development
231
203
  prerelease: false
232
204
  version_requirements: !ruby/object:Gem::Requirement
233
205
  requirements:
234
206
  - - "~>"
235
207
  - !ruby/object:Gem::Version
236
- version: '1.2'
208
+ version: 1.19.0
237
209
  - !ruby/object:Gem::Dependency
238
- name: pg
210
+ name: sqlite3
239
211
  requirement: !ruby/object:Gem::Requirement
240
212
  requirements:
241
213
  - - "~>"
242
214
  - !ruby/object:Gem::Version
243
- version: 0.19.0
215
+ version: '1.3'
244
216
  type: :development
245
217
  prerelease: false
246
218
  version_requirements: !ruby/object:Gem::Requirement
247
219
  requirements:
248
220
  - - "~>"
249
221
  - !ruby/object:Gem::Version
250
- version: 0.19.0
222
+ version: '1.3'
251
223
  - !ruby/object:Gem::Dependency
252
- name: mysql2
224
+ name: timecop
253
225
  requirement: !ruby/object:Gem::Requirement
254
226
  requirements:
255
227
  - - "~>"
256
228
  - !ruby/object:Gem::Version
257
- version: 0.4.2
229
+ version: 0.9.1
258
230
  type: :development
259
231
  prerelease: false
260
232
  version_requirements: !ruby/object:Gem::Requirement
261
233
  requirements:
262
234
  - - "~>"
263
235
  - !ruby/object:Gem::Version
264
- version: 0.4.2
236
+ version: 0.9.1
265
237
  description: |
266
238
  Track changes to your models, for auditing or versioning. See how a model looked
267
239
  at any stage in its lifecycle, revert it to any version, or restore it after it
268
240
  has been destroyed.
269
- email: batkinz@gmail.com
241
+ email: jared@jaredbeck.com
270
242
  executables: []
271
243
  extensions: []
272
244
  extra_rdoc_files: []
@@ -279,8 +251,8 @@ files:
279
251
  - lib/generators/paper_trail/templates/create_versions.rb.erb
280
252
  - lib/paper_trail.rb
281
253
  - lib/paper_trail/attribute_serializers/README.md
254
+ - lib/paper_trail/attribute_serializers/attribute_serializer_factory.rb
282
255
  - lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb
283
- - lib/paper_trail/attribute_serializers/legacy_active_record_shim.rb
284
256
  - lib/paper_trail/attribute_serializers/object_attribute.rb
285
257
  - lib/paper_trail/attribute_serializers/object_changes_attribute.rb
286
258
  - lib/paper_trail/cleaner.rb
@@ -306,8 +278,10 @@ files:
306
278
  - lib/paper_trail/reifiers/has_many.rb
307
279
  - lib/paper_trail/reifiers/has_many_through.rb
308
280
  - lib/paper_trail/reifiers/has_one.rb
281
+ - lib/paper_trail/request.rb
309
282
  - lib/paper_trail/serializers/json.rb
310
283
  - lib/paper_trail/serializers/yaml.rb
284
+ - lib/paper_trail/type_serializers/postgres_array_serializer.rb
311
285
  - lib/paper_trail/version_association_concern.rb
312
286
  - lib/paper_trail/version_concern.rb
313
287
  - lib/paper_trail/version_number.rb
@@ -323,7 +297,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
323
297
  requirements:
324
298
  - - ">="
325
299
  - !ruby/object:Gem::Version
326
- version: 2.2.0
300
+ version: 2.3.0
327
301
  required_rubygems_version: !ruby/object:Gem::Requirement
328
302
  requirements:
329
303
  - - ">="
@@ -331,7 +305,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
331
305
  version: 1.3.6
332
306
  requirements: []
333
307
  rubyforge_project:
334
- rubygems_version: 2.6.13
308
+ rubygems_version: 2.7.6
335
309
  signing_key:
336
310
  specification_version: 4
337
311
  summary: Track changes to your models.
@@ -1,48 +0,0 @@
1
- module PaperTrail
2
- module AttributeSerializers
3
- # Included into model if AR version is < 4.2. Backport Rails 4.2 and later's
4
- # `type_for_attribute` so we can build on a common interface.
5
- module LegacyActiveRecordShim
6
- # An attribute which needs no processing. It is part of our backport (shim)
7
- # of rails 4.2's attribute API. See `type_for_attribute` below.
8
- class NoOpAttribute
9
- def type_cast_for_database(value)
10
- value
11
- end
12
-
13
- def type_cast_from_database(data)
14
- data
15
- end
16
- end
17
- NO_OP_ATTRIBUTE = NoOpAttribute.new
18
-
19
- # An attribute which requires manual (de)serialization to/from what we get
20
- # from the database. It is part of our backport (shim) of rails 4.2's
21
- # attribute API. See `type_for_attribute` below.
22
- class SerializedAttribute
23
- def initialize(coder)
24
- @coder = coder.respond_to?(:dump) ? coder : PaperTrail.serializer
25
- end
26
-
27
- def type_cast_for_database(value)
28
- @coder.dump(value)
29
- end
30
-
31
- def type_cast_from_database(data)
32
- @coder.load(data)
33
- end
34
- end
35
-
36
- def type_for_attribute(attr_name)
37
- serialized_attribute_types[attr_name.to_s] || NO_OP_ATTRIBUTE
38
- end
39
-
40
- def serialized_attribute_types
41
- @attribute_types ||= Hash[serialized_attributes.map do |attr_name, coder|
42
- [attr_name, SerializedAttribute.new(coder)]
43
- end]
44
- end
45
- private :serialized_attribute_types
46
- end
47
- end
48
- end