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.
- checksums.yaml +5 -5
- data/lib/generators/paper_trail/install_generator.rb +3 -1
- data/lib/paper_trail.rb +151 -84
- data/lib/paper_trail/attribute_serializers/attribute_serializer_factory.rb +27 -0
- data/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb +7 -4
- data/lib/paper_trail/attribute_serializers/object_attribute.rb +2 -0
- data/lib/paper_trail/attribute_serializers/object_changes_attribute.rb +2 -0
- data/lib/paper_trail/cleaner.rb +2 -0
- data/lib/paper_trail/config.rb +33 -8
- data/lib/paper_trail/frameworks/active_record.rb +2 -0
- data/lib/paper_trail/frameworks/active_record/models/paper_trail/version.rb +2 -0
- data/lib/paper_trail/frameworks/active_record/models/paper_trail/version_association.rb +2 -0
- data/lib/paper_trail/frameworks/cucumber.rb +5 -3
- data/lib/paper_trail/frameworks/rails.rb +2 -0
- data/lib/paper_trail/frameworks/rails/controller.rb +30 -15
- data/lib/paper_trail/frameworks/rails/engine.rb +2 -0
- data/lib/paper_trail/frameworks/rspec.rb +5 -3
- data/lib/paper_trail/frameworks/rspec/helpers.rb +2 -0
- data/lib/paper_trail/has_paper_trail.rb +2 -2
- data/lib/paper_trail/model_config.rb +77 -22
- data/lib/paper_trail/queries/versions/where_object.rb +2 -0
- data/lib/paper_trail/queries/versions/where_object_changes.rb +3 -1
- data/lib/paper_trail/record_history.rb +2 -0
- data/lib/paper_trail/record_trail.rb +189 -55
- data/lib/paper_trail/reifier.rb +4 -2
- data/lib/paper_trail/reifiers/belongs_to.rb +3 -1
- data/lib/paper_trail/reifiers/has_and_belongs_to_many.rb +3 -1
- data/lib/paper_trail/reifiers/has_many.rb +3 -1
- data/lib/paper_trail/reifiers/has_many_through.rb +3 -1
- data/lib/paper_trail/reifiers/has_one.rb +52 -4
- data/lib/paper_trail/request.rb +183 -0
- data/lib/paper_trail/serializers/json.rb +2 -2
- data/lib/paper_trail/serializers/yaml.rb +10 -5
- data/lib/paper_trail/type_serializers/postgres_array_serializer.rb +49 -0
- data/lib/paper_trail/version_association_concern.rb +1 -1
- data/lib/paper_trail/version_concern.rb +2 -6
- data/lib/paper_trail/version_number.rb +3 -1
- metadata +55 -81
- 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 =
|
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:
|
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:
|
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.
|
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.
|
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.
|
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.
|
62
|
+
version: '2.2'
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
64
|
+
name: byebug
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
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: '
|
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.
|
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.
|
90
|
+
version: '2.7'
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
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.
|
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.
|
104
|
+
version: 0.9.4
|
125
105
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
106
|
+
name: mysql2
|
127
107
|
requirement: !ruby/object:Gem::Requirement
|
128
108
|
requirements:
|
129
109
|
- - "~>"
|
130
110
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
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:
|
118
|
+
version: 0.4.10
|
139
119
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
120
|
+
name: pg
|
141
121
|
requirement: !ruby/object:Gem::Requirement
|
142
122
|
requirements:
|
143
123
|
- - "~>"
|
144
124
|
- !ruby/object:Gem::Version
|
145
|
-
version: 0.
|
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.
|
132
|
+
version: 0.21.0
|
153
133
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
134
|
+
name: rack-test
|
155
135
|
requirement: !ruby/object:Gem::Requirement
|
156
136
|
requirements:
|
157
|
-
- - "
|
137
|
+
- - ">="
|
158
138
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
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: '
|
152
|
+
version: '0.9'
|
167
153
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
154
|
+
name: rake
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
170
156
|
requirements:
|
171
157
|
- - "~>"
|
172
158
|
- !ruby/object:Gem::Version
|
173
|
-
version: '3
|
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
|
166
|
+
version: '12.3'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
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:
|
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:
|
180
|
+
version: 3.7.2
|
209
181
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
182
|
+
name: rubocop
|
211
183
|
requirement: !ruby/object:Gem::Requirement
|
212
184
|
requirements:
|
213
185
|
- - "~>"
|
214
186
|
- !ruby/object:Gem::Version
|
215
|
-
version: 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.
|
194
|
+
version: 0.51.0
|
223
195
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
196
|
+
name: rubocop-rspec
|
225
197
|
requirement: !ruby/object:Gem::Requirement
|
226
198
|
requirements:
|
227
199
|
- - "~>"
|
228
200
|
- !ruby/object:Gem::Version
|
229
|
-
version:
|
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:
|
208
|
+
version: 1.19.0
|
237
209
|
- !ruby/object:Gem::Dependency
|
238
|
-
name:
|
210
|
+
name: sqlite3
|
239
211
|
requirement: !ruby/object:Gem::Requirement
|
240
212
|
requirements:
|
241
213
|
- - "~>"
|
242
214
|
- !ruby/object:Gem::Version
|
243
|
-
version:
|
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:
|
222
|
+
version: '1.3'
|
251
223
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
224
|
+
name: timecop
|
253
225
|
requirement: !ruby/object:Gem::Requirement
|
254
226
|
requirements:
|
255
227
|
- - "~>"
|
256
228
|
- !ruby/object:Gem::Version
|
257
|
-
version: 0.
|
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.
|
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:
|
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.
|
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
|
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
|