acts_as_paranoid 0.8.0 → 0.9.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/CHANGELOG.md +22 -0
- data/CONTRIBUTING.md +13 -1
- data/README.md +3 -4
- data/lib/acts_as_paranoid/association_reflection.rb +41 -0
- data/lib/acts_as_paranoid/associations.rb +32 -19
- data/lib/acts_as_paranoid/core.rb +3 -1
- data/lib/acts_as_paranoid/version.rb +1 -1
- data/lib/acts_as_paranoid.rb +5 -3
- metadata +77 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f1ac92694d6049922653950c656bbe2f9f8959045c4fb62ba212402c280f1a4
|
4
|
+
data.tar.gz: fae3cf0d15387eabc253bcaedf768f4920d49394a64eefe451e5a9adc594708d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe97872c256e562f77e719d7ff81f35826ed961ed4b7868950fdf04f743420012ff10d040a8b2776579733d0fc1746cafd34419fe606acdda35a41fd9917e7cf
|
7
|
+
data.tar.gz: 05c347bdd2a2f54160d8aca242a9601e328249111a01f7318fa09dfc64252bdf30dc67e875b5e928a7bada96337ad98f9ea2d2f7c77ae7d364ff6e2ad9098c74
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,26 @@
|
|
2
2
|
|
3
3
|
Notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
+
## 0.9.0
|
6
|
+
|
7
|
+
* Support JRuby 9.4 ([#299] by [Matijs van Zuijlen][mvz])
|
8
|
+
* Add support for Ruby 3.2 ([#300] by [Matijs van Zuijlen][mvz])
|
9
|
+
* Drop support for Ruby 2.6 ([#301] by [Matijs van Zuijlen][mvz])
|
10
|
+
* Support Rails 7.1 ([#312] and [#317] by [Matijs van Zuijlen][mvz])
|
11
|
+
* Drop support for Rails 5.2 and 6.0 ([#315] by [Matijs van Zuijlen][mvz])
|
12
|
+
|
13
|
+
[#299]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/299
|
14
|
+
[#300]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/300
|
15
|
+
[#301]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/301
|
16
|
+
[#312]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/312
|
17
|
+
[#315]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/315
|
18
|
+
[#317]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/317
|
19
|
+
|
20
|
+
## 0.8.1
|
21
|
+
|
22
|
+
* Officially support Ruby 3.1 ([#268], by [Matijs van Zuijlen][mvz])
|
23
|
+
* Fix association building for `belongs_to` with `:with_deleted` option ([#277], by [Matijs van Zuijlen][mvz])
|
24
|
+
|
5
25
|
## 0.8.0
|
6
26
|
|
7
27
|
* Do not set `paranoid_value` when destroying fully ([#238], by [Aymeric Le Dorze][aymeric-ledorze])
|
@@ -134,6 +154,8 @@ Notable changes to this project will be documented in this file.
|
|
134
154
|
|
135
155
|
<!-- issues & pull requests -->
|
136
156
|
|
157
|
+
[#277]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/277
|
158
|
+
[#268]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/268
|
137
159
|
[#262]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/262
|
138
160
|
[#261]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/261
|
139
161
|
[#245]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/245
|
data/CONTRIBUTING.md
CHANGED
@@ -29,7 +29,7 @@ To send pull requests or patches, please follow the instructions below.
|
|
29
29
|
**If you get stuck, please make a pull request anyway and we'll try to
|
30
30
|
help out.**
|
31
31
|
|
32
|
-
- Make sure `rake
|
32
|
+
- Make sure `bundle exec rake` runs without reporting any failures.
|
33
33
|
- Add tests for your feature. Otherwise, we can't see if it works or if we
|
34
34
|
break it later.
|
35
35
|
- Create a separate branch for your feature based off of latest master.
|
@@ -38,6 +38,18 @@ help out.**
|
|
38
38
|
- Keep an eye on the build results in GitHub Actions. If the build fails and it
|
39
39
|
seems due to your changes, please update your pull request with a fix.
|
40
40
|
|
41
|
+
### Testing your changes
|
42
|
+
|
43
|
+
You can run the test suite with the latest version of all dependencies by running the following:
|
44
|
+
|
45
|
+
- Run `bundle install` if you haven't done so already, or `bundle update` to update the dependencies
|
46
|
+
- Run `bundle exec rake` to run the tests
|
47
|
+
|
48
|
+
To run the tests suite for a particular version of ActiveRecord use
|
49
|
+
[appraisal](https://github.com/thoughtbot/appraisal). For example, to run the
|
50
|
+
specs with ActiveRecord 6.1, run `appraisal active_record_61 rake`. See appraisal's
|
51
|
+
documentation for details.
|
52
|
+
|
41
53
|
### The review process
|
42
54
|
|
43
55
|
- We will try to review your pull request as soon as possible but we can make no
|
data/README.md
CHANGED
@@ -9,11 +9,10 @@ recoverable later.
|
|
9
9
|
|
10
10
|
## Support
|
11
11
|
|
12
|
-
**This
|
12
|
+
**This version targets Rails 6.1+ and Ruby 2.7+ only**
|
13
13
|
|
14
|
-
If you're working with Rails
|
15
|
-
please
|
16
|
-
`acts_as_paranoid` gem.
|
14
|
+
If you're working with Rails 6.0 and earlier, or with Ruby 2.6 or earlier,
|
15
|
+
please require an older version of the `acts_as_paranoid` gem.
|
17
16
|
|
18
17
|
### Known issues
|
19
18
|
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActsAsParanoid
|
4
|
+
# Override for ActiveRecord::Reflection::AssociationReflection
|
5
|
+
#
|
6
|
+
# This makes automatic finding of inverse associations work where the
|
7
|
+
# inverse is a belongs_to association with the :with_deleted option set.
|
8
|
+
#
|
9
|
+
# Specifying :with_deleted for the belongs_to association would stop the
|
10
|
+
# inverse from being calculated because it sets scope where there was none,
|
11
|
+
# and normally an association having a scope means ActiveRecord will not
|
12
|
+
# automatically find the inverse association.
|
13
|
+
#
|
14
|
+
# This override adds an exception to that rule only for the case where the
|
15
|
+
# scope was added just to support the :with_deleted option.
|
16
|
+
module AssociationReflection
|
17
|
+
if ActiveRecord::VERSION::MAJOR < 7
|
18
|
+
def can_find_inverse_of_automatically?(reflection)
|
19
|
+
options = reflection.options
|
20
|
+
|
21
|
+
if reflection.macro == :belongs_to && options[:with_deleted]
|
22
|
+
return false if options[:inverse_of] == false
|
23
|
+
return false if options[:foreign_key]
|
24
|
+
|
25
|
+
!options.fetch(:original_scope)
|
26
|
+
else
|
27
|
+
super
|
28
|
+
end
|
29
|
+
end
|
30
|
+
else
|
31
|
+
def scope_allows_automatic_inverse_of?(reflection, inverse_reflection)
|
32
|
+
if reflection.scope
|
33
|
+
options = reflection.options
|
34
|
+
return true if options[:with_deleted] && !options.fetch(:original_scope)
|
35
|
+
end
|
36
|
+
|
37
|
+
super
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -19,32 +19,45 @@ module ActsAsParanoid
|
|
19
19
|
|
20
20
|
with_deleted = options.delete(:with_deleted)
|
21
21
|
if with_deleted
|
22
|
-
|
23
|
-
|
24
|
-
scope = proc do |*args|
|
25
|
-
if old_scope.arity == 0
|
26
|
-
instance_exec(&old_scope).with_deleted
|
27
|
-
else
|
28
|
-
old_scope.call(*args).with_deleted
|
29
|
-
end
|
30
|
-
end
|
31
|
-
else
|
32
|
-
scope = proc do
|
33
|
-
if respond_to? :with_deleted
|
34
|
-
self.with_deleted
|
35
|
-
else
|
36
|
-
all
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
22
|
+
original_scope = scope
|
23
|
+
scope = make_scope_with_deleted(scope)
|
40
24
|
end
|
41
25
|
|
42
26
|
result = belongs_to_without_deleted(target, scope, **options)
|
43
27
|
|
44
|
-
|
28
|
+
if with_deleted
|
29
|
+
options = result.values.last.options
|
30
|
+
options[:with_deleted] = with_deleted
|
31
|
+
options[:original_scope] = original_scope
|
32
|
+
end
|
45
33
|
|
46
34
|
result
|
47
35
|
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def make_scope_with_deleted(scope)
|
40
|
+
if scope
|
41
|
+
old_scope = scope
|
42
|
+
scope = proc do |*args|
|
43
|
+
if old_scope.arity == 0
|
44
|
+
instance_exec(&old_scope).with_deleted
|
45
|
+
else
|
46
|
+
old_scope.call(*args).with_deleted
|
47
|
+
end
|
48
|
+
end
|
49
|
+
else
|
50
|
+
scope = proc do
|
51
|
+
if respond_to? :with_deleted
|
52
|
+
with_deleted
|
53
|
+
else
|
54
|
+
all
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
scope
|
60
|
+
end
|
48
61
|
end
|
49
62
|
end
|
50
63
|
end
|
@@ -74,9 +74,11 @@ module ActsAsParanoid
|
|
74
74
|
"#{table_name}.#{paranoid_column}"
|
75
75
|
end
|
76
76
|
|
77
|
+
DESTROYING_ASSOCIATION_DEPENDENCY_TYPES = [:destroy, :delete_all].freeze
|
78
|
+
|
77
79
|
def dependent_associations
|
78
80
|
reflect_on_all_associations.select do |a|
|
79
|
-
|
81
|
+
DESTROYING_ASSOCIATION_DEPENDENCY_TYPES.include?(a.options[:dependent])
|
80
82
|
end
|
81
83
|
end
|
82
84
|
|
data/lib/acts_as_paranoid.rb
CHANGED
@@ -5,6 +5,7 @@ require "acts_as_paranoid/core"
|
|
5
5
|
require "acts_as_paranoid/associations"
|
6
6
|
require "acts_as_paranoid/validations"
|
7
7
|
require "acts_as_paranoid/relation"
|
8
|
+
require "acts_as_paranoid/association_reflection"
|
8
9
|
|
9
10
|
module ActsAsParanoid
|
10
11
|
def paranoid?
|
@@ -29,9 +30,7 @@ module ActsAsParanoid
|
|
29
30
|
dependent_recovery_window: 2.minutes,
|
30
31
|
double_tap_destroys_fully: true
|
31
32
|
}
|
32
|
-
if options[:column_type] == "string"
|
33
|
-
paranoid_configuration.merge!(deleted_value: "deleted")
|
34
|
-
end
|
33
|
+
paranoid_configuration[:deleted_value] = "deleted" if options[:column_type] == "string"
|
35
34
|
|
36
35
|
paranoid_configuration.merge!(options) # user options
|
37
36
|
|
@@ -63,3 +62,6 @@ ActiveRecord::Relation.include ActsAsParanoid::Relation
|
|
63
62
|
|
64
63
|
# Push the recover callback onto the activerecord callback list
|
65
64
|
ActiveRecord::Callbacks::CALLBACKS.push(:before_recover, :after_recover)
|
65
|
+
|
66
|
+
ActiveRecord::Reflection::AssociationReflection
|
67
|
+
.prepend ActsAsParanoid::AssociationReflection
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_paranoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zachary Scott
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2023-10-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -18,40 +18,54 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
21
|
+
version: '6.1'
|
22
22
|
- - "<"
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: '7.
|
24
|
+
version: '7.2'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
28
|
requirements:
|
29
29
|
- - ">="
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version: '
|
31
|
+
version: '6.1'
|
32
32
|
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '7.
|
34
|
+
version: '7.2'
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: activesupport
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '6.1'
|
42
42
|
- - "<"
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: '7.
|
44
|
+
version: '7.2'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
47
|
version_requirements: !ruby/object:Gem::Requirement
|
48
48
|
requirements:
|
49
49
|
- - ">="
|
50
50
|
- !ruby/object:Gem::Version
|
51
|
-
version: '
|
51
|
+
version: '6.1'
|
52
52
|
- - "<"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '7.
|
54
|
+
version: '7.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: appraisal
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.3'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.3'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: minitest
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +86,14 @@ dependencies:
|
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.3
|
89
|
+
version: '1.3'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.3
|
96
|
+
version: '1.3'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: pry
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,42 +156,84 @@ dependencies:
|
|
142
156
|
requirements:
|
143
157
|
- - "~>"
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version: 1.
|
159
|
+
version: '1.52'
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
164
|
- - "~>"
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: 1.
|
166
|
+
version: '1.52'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: rubocop-minitest
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
156
170
|
requirements:
|
157
171
|
- - "~>"
|
158
172
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
173
|
+
version: 0.32.2
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 0.32.2
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: rubocop-packaging
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 0.5.2
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 0.5.2
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: rubocop-performance
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '1.18'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '1.18'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: rubocop-rake
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: 0.6.0
|
160
216
|
type: :development
|
161
217
|
prerelease: false
|
162
218
|
version_requirements: !ruby/object:Gem::Requirement
|
163
219
|
requirements:
|
164
220
|
- - "~>"
|
165
221
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
222
|
+
version: 0.6.0
|
167
223
|
- !ruby/object:Gem::Dependency
|
168
224
|
name: simplecov
|
169
225
|
requirement: !ruby/object:Gem::Requirement
|
170
226
|
requirements:
|
171
227
|
- - "~>"
|
172
228
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
229
|
+
version: 0.22.0
|
174
230
|
type: :development
|
175
231
|
prerelease: false
|
176
232
|
version_requirements: !ruby/object:Gem::Requirement
|
177
233
|
requirements:
|
178
234
|
- - "~>"
|
179
235
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.
|
236
|
+
version: 0.22.0
|
181
237
|
description: Check the home page for more in-depth information.
|
182
238
|
email:
|
183
239
|
- e@zzak.io
|
@@ -190,6 +246,7 @@ files:
|
|
190
246
|
- LICENSE
|
191
247
|
- README.md
|
192
248
|
- lib/acts_as_paranoid.rb
|
249
|
+
- lib/acts_as_paranoid/association_reflection.rb
|
193
250
|
- lib/acts_as_paranoid/associations.rb
|
194
251
|
- lib/acts_as_paranoid/core.rb
|
195
252
|
- lib/acts_as_paranoid/relation.rb
|
@@ -208,14 +265,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
208
265
|
requirements:
|
209
266
|
- - ">="
|
210
267
|
- !ruby/object:Gem::Version
|
211
|
-
version: 2.
|
268
|
+
version: 2.7.0
|
212
269
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
213
270
|
requirements:
|
214
271
|
- - ">="
|
215
272
|
- !ruby/object:Gem::Version
|
216
273
|
version: '0'
|
217
274
|
requirements: []
|
218
|
-
rubygems_version: 3.
|
275
|
+
rubygems_version: 3.4.20
|
219
276
|
signing_key:
|
220
277
|
specification_version: 4
|
221
278
|
summary: Active Record plugin which allows you to hide and restore records without
|