paranoia 2.6.0 → 3.0.1
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/.github/workflows/build.yml +13 -34
- data/CHANGELOG.md +38 -1
- data/Gemfile +1 -1
- data/README.md +37 -1
- data/lib/paranoia/version.rb +1 -1
- data/lib/paranoia.rb +116 -38
- data/paranoia.gemspec +3 -3
- metadata +9 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e7ad759d079b1e2bea13d47f092005677c98dee88423a12666fc77db15e8249
|
4
|
+
data.tar.gz: f95c4af13b076d6d235d3b6d0b7057595742a8dcd177e71b0ada70cb11674f91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b42a61dde0a3e2c417f2d7a0c71c23ad4b1c6980fe4a0a232313625017fe5c5e24065405a28e202bb3751d34e379753ae70a908d552f6704c7b1e78fb18862a
|
7
|
+
data.tar.gz: 45fc5b4fe5c4705f29e9bd208dd18d1fcec907c79649167467dc76ae883e002da9b2db93ac41148ab7a47872a39aa3c7545c754e7627dd8b5348e519654806ee
|
data/.github/workflows/build.yml
CHANGED
@@ -15,45 +15,24 @@ jobs:
|
|
15
15
|
strategy:
|
16
16
|
fail-fast: false
|
17
17
|
matrix:
|
18
|
-
|
19
|
-
|
20
|
-
- '3.0'
|
21
|
-
- 2.7
|
22
|
-
- 2.6
|
23
|
-
- 2.5
|
24
|
-
# - jruby-9.2.19.0
|
25
|
-
# - jruby-9.3.1.0
|
26
|
-
rails:
|
27
|
-
- '~> 5.1.0'
|
28
|
-
- '~> 5.2.0'
|
29
|
-
- '~> 6.0.0'
|
30
|
-
- '~> 6.1.0'
|
31
|
-
- '~> 7.0.0'
|
32
|
-
- 'edge'
|
18
|
+
rails: ["~> 7.2.0", "~> 7.1.0", "~> 7.0.0", "~> 6.1.0"]
|
19
|
+
ruby: ["3.3","3.2", "3.1", "3.0", "2.7"]
|
33
20
|
exclude:
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
- rails: '~> 5.1.0'
|
45
|
-
ruby: '3.0'
|
46
|
-
- rails: '~> 5.2.0'
|
47
|
-
ruby: '3.0'
|
48
|
-
- rails: '~> 5.1.0'
|
49
|
-
ruby: 3.1
|
50
|
-
- rails: '~> 5.2.0'
|
51
|
-
ruby: 3.1
|
21
|
+
- rails: "~> 7.2.0"
|
22
|
+
ruby: "3.0"
|
23
|
+
- rails: "~> 7.2.0"
|
24
|
+
ruby: "2.7"
|
25
|
+
- rails: "edge"
|
26
|
+
ruby: "3.0"
|
27
|
+
- rails: "edge"
|
28
|
+
ruby: "2.7"
|
29
|
+
|
30
|
+
|
52
31
|
|
53
32
|
env:
|
54
33
|
RAILS: ${{ matrix.rails }}
|
55
34
|
steps:
|
56
|
-
- uses: actions/checkout@
|
35
|
+
- uses: actions/checkout@v4
|
57
36
|
- uses: ruby/setup-ruby@v1
|
58
37
|
with:
|
59
38
|
ruby-version: ${{ matrix.ruby }}
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,43 @@
|
|
1
1
|
# paranoia Changelog
|
2
2
|
|
3
|
-
##
|
3
|
+
## 3.0.1 - January 19, 2025
|
4
|
+
|
5
|
+
- [#566](https://github.com/rubysherpas/paranoia/pull/566) Handle #delete_all
|
6
|
+
- [#559](https://github.com/rubysherpas/paranoia/pull/559) Trigger an after_commit callback when restoring a record
|
7
|
+
- [#567](https://github.com/rubysherpas/paranoia/pull/567) Fix typo in newly added readme
|
8
|
+
|
9
|
+
## 3.0.0 - August 13, 2024
|
10
|
+
|
11
|
+
_Tagged as 3.0 as Ruby + Rails version constraints have been modernised._
|
12
|
+
|
13
|
+
- [#564](https://github.com/rubysherpas/paranoia/pull/564) Support Rails edge
|
14
|
+
- [#563](https://github.com/rubysherpas/paranoia/pull/563) Support Rails 7.2
|
15
|
+
|
16
|
+
## 2.6.4 - July 20, 2024
|
17
|
+
|
18
|
+
* [#554](https://github.com/rubysherpas/paranoia/pull/554) Support prebuilt counter cache association list (#554)
|
19
|
+
[Joé Dupuis](https://github.com/JoeDupuis)
|
20
|
+
* [#551](https://github.com/rubysherpas/paranoia/pull/551) Fix: restore has_one with scope (#551)
|
21
|
+
[Paweł Charyło](https://github.com/zygzagZ)
|
22
|
+
* [#555](https://github.com/rubysherpas/paranoia/pull/555) 📝 Add Yard documentation for Paranoia::Query (#555)
|
23
|
+
[Clément Prod'homme](https://github.com/cprodhomme)
|
24
|
+
|
25
|
+
## 2.6.3 - Oct 12, 2023
|
26
|
+
|
27
|
+
* [#548](https://github.com/rubysherpas/paranoia/pull/548) Add support for [Rails 7.1](https://github.com/rails/rails/releases/tag/v7.1.0) (#548)
|
28
|
+
[Indyarocks](https://github.com/indyarocks)
|
29
|
+
|
30
|
+
## 2.6.2 - Jun 6, 2023
|
31
|
+
|
32
|
+
* [#441](https://github.com/rubysherpas/paranoia/pull/441) Recursive restore with has_many/one through assocs (#441)
|
33
|
+
[Emil Ong](https://github.com/emilong)
|
34
|
+
|
35
|
+
## 2.6.1 - Nov 16, 2022
|
36
|
+
|
37
|
+
* [#535](https://github.com/rubysherpas/paranoia/pull/535) Allow to skip updating paranoia_destroy_attributes for records while really_destroy!
|
38
|
+
[Anton Bogdanov](https://github.com/kortirso)
|
39
|
+
|
40
|
+
## 2.6.0 - Mar 23, 2022
|
4
41
|
|
5
42
|
* [#512](https://github.com/rubysherpas/paranoia/pull/512) Quote table names; Mysql 8 has keywords that might match table names which cause an exception.
|
6
43
|
* [#476](https://github.com/rubysherpas/paranoia/pull/476) Fix syntax error in documentation.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
[](https://badge.fury.io/rb/paranoia)
|
2
2
|
[](https://github.com/rubysherpas/paranoia/actions/workflows/build.yml)
|
3
3
|
|
4
|
-
**Notice:**
|
4
|
+
**Notice:**
|
5
5
|
|
6
6
|
`paranoia` has some surprising behaviour (like overriding ActiveRecord's `delete` and `destroy`) and is not recommended for new projects. See [`discard`'s README](https://github.com/jhawthorn/discard#why-not-paranoia-or-acts_as_paranoid) for more details.
|
7
7
|
|
@@ -103,6 +103,14 @@ If you really want it gone *gone*, call `really_destroy!`:
|
|
103
103
|
# => client
|
104
104
|
```
|
105
105
|
|
106
|
+
If you need skip updating timestamps for deleting records, call `really_destroy!(update_destroy_attributes: false)`.
|
107
|
+
When we call `really_destroy!(update_destroy_attributes: false)` on the parent `client`, then each child `email` will also have `really_destroy!(update_destroy_attributes: false)` called.
|
108
|
+
|
109
|
+
``` ruby
|
110
|
+
>> client.really_destroy!(update_destroy_attributes: false)
|
111
|
+
# => client
|
112
|
+
```
|
113
|
+
|
106
114
|
If you want to use a column other than `deleted_at`, you can pass it as an option:
|
107
115
|
|
108
116
|
``` ruby
|
@@ -198,6 +206,19 @@ Client.restore(id, :recursive => true, :recovery_window => 2.minutes)
|
|
198
206
|
client.restore(:recursive => true, :recovery_window => 2.minutes)
|
199
207
|
```
|
200
208
|
|
209
|
+
If you want to trigger an after_commit callback when restoring a record:
|
210
|
+
|
211
|
+
``` ruby
|
212
|
+
class Client < ActiveRecord::Base
|
213
|
+
acts_as_paranoid after_restore_commit: true
|
214
|
+
|
215
|
+
after_commit :commit_called, on: :restore
|
216
|
+
# or
|
217
|
+
after_restore_commit :commit_called
|
218
|
+
...
|
219
|
+
end
|
220
|
+
```
|
221
|
+
|
201
222
|
Note that by default paranoia will not prevent that a soft destroyed object can't be associated with another object of a different model.
|
202
223
|
A Rails validator is provided should you require this functionality:
|
203
224
|
``` ruby
|
@@ -340,6 +361,21 @@ end
|
|
340
361
|
# => NoMethodError: undefined method `with_deleted' for #<Class:0x0123456>
|
341
362
|
```
|
342
363
|
|
364
|
+
#### delete_all:
|
365
|
+
|
366
|
+
The gem supports `delete_all` method, however it is disabled by default, to enable it add this in your `environment` file
|
367
|
+
|
368
|
+
``` ruby
|
369
|
+
Paranoia.delete_all_enabled = true
|
370
|
+
```
|
371
|
+
alternatively, you can enable/disable it for specific models as follow:
|
372
|
+
|
373
|
+
``` ruby
|
374
|
+
class User < ActiveRecord::Base
|
375
|
+
acts_as_paranoid(delete_all_enabled: true)
|
376
|
+
end
|
377
|
+
```
|
378
|
+
|
343
379
|
## Acts As Paranoid Migration
|
344
380
|
|
345
381
|
You can replace the older `acts_as_paranoid` methods as follows:
|
data/lib/paranoia/version.rb
CHANGED
data/lib/paranoia.rb
CHANGED
@@ -6,15 +6,11 @@ if [ActiveRecord::VERSION::MAJOR, ActiveRecord::VERSION::MINOR] == [5, 2] ||
|
|
6
6
|
end
|
7
7
|
|
8
8
|
module Paranoia
|
9
|
-
@@default_sentinel_value = nil
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
def self.default_sentinel_value
|
17
|
-
@@default_sentinel_value
|
10
|
+
class << self
|
11
|
+
# Change default values in a rails initializer
|
12
|
+
attr_accessor :default_sentinel_value,
|
13
|
+
:delete_all_enabled
|
18
14
|
end
|
19
15
|
|
20
16
|
def self.included(klazz)
|
@@ -24,6 +20,7 @@ module Paranoia
|
|
24
20
|
module Query
|
25
21
|
def paranoid? ; true ; end
|
26
22
|
|
23
|
+
# If you want to find all records, even those which are deleted
|
27
24
|
def with_deleted
|
28
25
|
if ActiveRecord::VERSION::STRING >= "4.1"
|
29
26
|
return unscope where: paranoia_column
|
@@ -31,6 +28,7 @@ module Paranoia
|
|
31
28
|
all.tap { |x| x.default_scoped = false }
|
32
29
|
end
|
33
30
|
|
31
|
+
# If you want to find only the deleted records
|
34
32
|
def only_deleted
|
35
33
|
if paranoia_sentinel_value.nil?
|
36
34
|
return with_deleted.where.not(paranoia_column => paranoia_sentinel_value)
|
@@ -45,6 +43,7 @@ module Paranoia
|
|
45
43
|
end
|
46
44
|
alias_method :deleted, :only_deleted
|
47
45
|
|
46
|
+
# If you want to restore a record
|
48
47
|
def restore(id_or_ids, opts = {})
|
49
48
|
ids = Array(id_or_ids).flatten
|
50
49
|
any_object_instead_of_id = ids.any? { |id| ActiveRecord::Base === id }
|
@@ -55,12 +54,22 @@ module Paranoia
|
|
55
54
|
end
|
56
55
|
ids.map { |id| only_deleted.find(id).restore!(opts) }
|
57
56
|
end
|
57
|
+
|
58
|
+
def paranoia_destroy_attributes
|
59
|
+
{
|
60
|
+
paranoia_column => current_time_from_proper_timezone
|
61
|
+
}.merge(timestamp_attributes_with_current_time)
|
62
|
+
end
|
63
|
+
|
64
|
+
def timestamp_attributes_with_current_time
|
65
|
+
timestamp_attributes_for_update_in_model.each_with_object({}) { |attr,hash| hash[attr] = current_time_from_proper_timezone }
|
66
|
+
end
|
58
67
|
end
|
59
68
|
|
60
69
|
def paranoia_destroy
|
61
70
|
with_transaction_returning_status do
|
62
71
|
result = run_callbacks(:destroy) do
|
63
|
-
@_disable_counter_cache =
|
72
|
+
@_disable_counter_cache = paranoia_destroyed?
|
64
73
|
result = paranoia_delete
|
65
74
|
next result unless result && ActiveRecord::VERSION::STRING >= '4.2'
|
66
75
|
each_counter_cached_associations do |association|
|
@@ -73,7 +82,7 @@ module Paranoia
|
|
73
82
|
@_disable_counter_cache = false
|
74
83
|
result
|
75
84
|
end
|
76
|
-
raise ActiveRecord::Rollback, "Not destroyed" unless
|
85
|
+
raise ActiveRecord::Rollback, "Not destroyed" unless paranoia_destroyed?
|
77
86
|
result
|
78
87
|
end || false
|
79
88
|
end
|
@@ -85,7 +94,16 @@ module Paranoia
|
|
85
94
|
end
|
86
95
|
|
87
96
|
def trigger_transactional_callbacks?
|
88
|
-
super || @_trigger_destroy_callback && paranoia_destroyed?
|
97
|
+
super || @_trigger_destroy_callback && paranoia_destroyed? ||
|
98
|
+
@_trigger_restore_callback && !paranoia_destroyed?
|
99
|
+
end
|
100
|
+
|
101
|
+
def transaction_include_any_action?(actions)
|
102
|
+
super || actions.any? do |action|
|
103
|
+
if action == :restore
|
104
|
+
paranoia_after_restore_commit && @_trigger_restore_callback
|
105
|
+
end
|
106
|
+
end
|
89
107
|
end
|
90
108
|
|
91
109
|
def paranoia_delete
|
@@ -112,6 +130,10 @@ module Paranoia
|
|
112
130
|
if within_recovery_window?(recovery_window_range) && ((noop_if_frozen && !@attributes.frozen?) || !noop_if_frozen)
|
113
131
|
@_disable_counter_cache = !paranoia_destroyed?
|
114
132
|
write_attribute paranoia_column, paranoia_sentinel_value
|
133
|
+
if paranoia_after_restore_commit
|
134
|
+
@_trigger_restore_callback = true
|
135
|
+
add_to_transaction
|
136
|
+
end
|
115
137
|
update_columns(paranoia_restore_attributes)
|
116
138
|
each_counter_cached_associations do |association|
|
117
139
|
if send(association.reflection.name)
|
@@ -125,6 +147,10 @@ module Paranoia
|
|
125
147
|
end
|
126
148
|
|
127
149
|
self
|
150
|
+
ensure
|
151
|
+
if paranoia_after_restore_commit
|
152
|
+
@_trigger_restore_callback = false
|
153
|
+
end
|
128
154
|
end
|
129
155
|
alias :restore :restore!
|
130
156
|
|
@@ -144,7 +170,7 @@ module Paranoia
|
|
144
170
|
end
|
145
171
|
alias :deleted? :paranoia_destroyed?
|
146
172
|
|
147
|
-
def really_destroy!
|
173
|
+
def really_destroy!(update_destroy_attributes: true)
|
148
174
|
with_transaction_returning_status do
|
149
175
|
run_callbacks(:real_destroy) do
|
150
176
|
@_disable_counter_cache = paranoia_destroyed?
|
@@ -158,12 +184,14 @@ module Paranoia
|
|
158
184
|
# .paranoid? will work for both instances and classes
|
159
185
|
next unless association_data && association_data.paranoid?
|
160
186
|
if reflection.collection?
|
161
|
-
next association_data.with_deleted.
|
187
|
+
next association_data.with_deleted.find_each { |record|
|
188
|
+
record.really_destroy!(update_destroy_attributes: update_destroy_attributes)
|
189
|
+
}
|
162
190
|
end
|
163
|
-
association_data.really_destroy!
|
191
|
+
association_data.really_destroy!(update_destroy_attributes: update_destroy_attributes)
|
164
192
|
end
|
165
193
|
end
|
166
|
-
update_columns(paranoia_destroy_attributes)
|
194
|
+
update_columns(paranoia_destroy_attributes) if update_destroy_attributes
|
167
195
|
destroy_without_paranoia
|
168
196
|
end
|
169
197
|
end
|
@@ -171,24 +199,43 @@ module Paranoia
|
|
171
199
|
|
172
200
|
private
|
173
201
|
|
202
|
+
def counter_cache_disabled?
|
203
|
+
defined?(@_disable_counter_cache) && @_disable_counter_cache
|
204
|
+
end
|
205
|
+
|
206
|
+
def counter_cached_association_names
|
207
|
+
return [] if counter_cache_disabled?
|
208
|
+
super
|
209
|
+
end
|
210
|
+
|
174
211
|
def each_counter_cached_associations
|
175
|
-
|
212
|
+
return [] if counter_cache_disabled?
|
213
|
+
|
214
|
+
if defined?(super)
|
215
|
+
super
|
216
|
+
else
|
217
|
+
counter_cached_association_names.each do |name|
|
218
|
+
yield association(name)
|
219
|
+
end
|
220
|
+
end
|
176
221
|
end
|
177
222
|
|
178
223
|
def paranoia_restore_attributes
|
179
224
|
{
|
180
225
|
paranoia_column => paranoia_sentinel_value
|
181
|
-
}.merge(timestamp_attributes_with_current_time)
|
226
|
+
}.merge(self.class.timestamp_attributes_with_current_time)
|
182
227
|
end
|
183
228
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
229
|
+
delegate :paranoia_destroy_attributes, to: 'self.class'
|
230
|
+
|
231
|
+
def paranoia_find_has_one_target(association)
|
232
|
+
association_foreign_key = association.options[:through].present? ? association.klass.primary_key : association.foreign_key
|
233
|
+
association_find_conditions = { association_foreign_key => self.id }
|
234
|
+
association_find_conditions[association.type] = self.class.name if association.type
|
189
235
|
|
190
|
-
|
191
|
-
|
236
|
+
scope = association.klass.only_deleted.where(association_find_conditions)
|
237
|
+
scope = scope.merge(association.scope) if association.scope
|
238
|
+
scope.first
|
192
239
|
end
|
193
240
|
|
194
241
|
# restore associated records that have been soft deleted when
|
@@ -214,19 +261,8 @@ module Paranoia
|
|
214
261
|
end
|
215
262
|
|
216
263
|
if association_data.nil? && association.macro.to_s == "has_one"
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
if association.type
|
221
|
-
association_polymorphic_type = association.type
|
222
|
-
association_find_conditions = { association_polymorphic_type => self.class.name.to_s, association_foreign_key => self.id }
|
223
|
-
else
|
224
|
-
association_find_conditions = { association_foreign_key => self.id }
|
225
|
-
end
|
226
|
-
|
227
|
-
association_class = association_class_name.constantize
|
228
|
-
if association_class.paranoid?
|
229
|
-
association_class.only_deleted.where(association_find_conditions).first
|
264
|
+
if association.klass.paranoid?
|
265
|
+
paranoia_find_has_one_target(association)
|
230
266
|
.try!(:restore, recursive: true, :recovery_window_range => recovery_window_range)
|
231
267
|
end
|
232
268
|
end
|
@@ -241,6 +277,31 @@ module Paranoia
|
|
241
277
|
end
|
242
278
|
end
|
243
279
|
|
280
|
+
module ActiveRecord
|
281
|
+
module Transactions
|
282
|
+
module RestoreSupport
|
283
|
+
def self.included(base)
|
284
|
+
base::ACTIONS << :restore unless base::ACTIONS.include?(:restore)
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
module ClassMethods
|
289
|
+
def after_restore_commit(*args, &block)
|
290
|
+
set_options_for_callbacks!(args, on: :restore)
|
291
|
+
set_callback(:commit, :after, *args, &block)
|
292
|
+
end
|
293
|
+
end
|
294
|
+
end
|
295
|
+
end
|
296
|
+
|
297
|
+
module Paranoia::Relation
|
298
|
+
def paranoia_delete_all
|
299
|
+
update_all(klass.paranoia_destroy_attributes)
|
300
|
+
end
|
301
|
+
|
302
|
+
alias_method :delete_all, :paranoia_delete_all
|
303
|
+
end
|
304
|
+
|
244
305
|
ActiveSupport.on_load(:active_record) do
|
245
306
|
class ActiveRecord::Base
|
246
307
|
def self.acts_as_paranoid(options={})
|
@@ -255,12 +316,15 @@ ActiveSupport.on_load(:active_record) do
|
|
255
316
|
alias_method :really_destroyed?, :destroyed?
|
256
317
|
alias_method :really_delete, :delete
|
257
318
|
alias_method :destroy_without_paranoia, :destroy
|
319
|
+
class << self; delegate :really_delete_all, to: :all end
|
258
320
|
|
259
321
|
include Paranoia
|
260
|
-
class_attribute :paranoia_column, :paranoia_sentinel_value
|
322
|
+
class_attribute :paranoia_column, :paranoia_sentinel_value, :paranoia_after_restore_commit,
|
323
|
+
:delete_all_enabled
|
261
324
|
|
262
325
|
self.paranoia_column = (options[:column] || :deleted_at).to_s
|
263
326
|
self.paranoia_sentinel_value = options.fetch(:sentinel_value) { Paranoia.default_sentinel_value }
|
327
|
+
self.paranoia_after_restore_commit = options.fetch(:after_restore_commit) { false }
|
264
328
|
def self.paranoia_scope
|
265
329
|
where(paranoia_column => paranoia_sentinel_value)
|
266
330
|
end
|
@@ -276,6 +340,20 @@ ActiveSupport.on_load(:active_record) do
|
|
276
340
|
after_restore {
|
277
341
|
self.class.notify_observers(:after_restore, self) if self.class.respond_to?(:notify_observers)
|
278
342
|
}
|
343
|
+
|
344
|
+
if paranoia_after_restore_commit
|
345
|
+
ActiveRecord::Transactions.send(:include, ActiveRecord::Transactions::RestoreSupport)
|
346
|
+
end
|
347
|
+
|
348
|
+
self.delete_all_enabled = options[:delete_all_enabled] || Paranoia.delete_all_enabled
|
349
|
+
|
350
|
+
if self.delete_all_enabled
|
351
|
+
"#{self}::ActiveRecord_Relation".constantize.class_eval do
|
352
|
+
alias_method :really_delete_all, :delete_all
|
353
|
+
|
354
|
+
include Paranoia::Relation
|
355
|
+
end
|
356
|
+
end
|
279
357
|
end
|
280
358
|
|
281
359
|
# Please do not use this method in production.
|
data/paranoia.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.license = 'MIT'
|
12
12
|
s.summary = "Paranoia is a re-implementation of acts_as_paranoid for Rails 3, 4, and 5, using much, much, much less code."
|
13
13
|
s.description = <<-DSC
|
14
|
-
Paranoia is a re-implementation of acts_as_paranoid for Rails
|
14
|
+
Paranoia is a re-implementation of acts_as_paranoid for Rails 5, 6, and 7,
|
15
15
|
using much, much, much less code. You would use either plugin / gem if you
|
16
16
|
wished that when you called destroy on an Active Record object that it
|
17
17
|
didn't actually destroy it, but just "hid" the record. Paranoia does this
|
@@ -22,9 +22,9 @@ Gem::Specification.new do |s|
|
|
22
22
|
|
23
23
|
s.required_rubygems_version = ">= 1.3.6"
|
24
24
|
|
25
|
-
s.required_ruby_version = '>= 2.
|
25
|
+
s.required_ruby_version = '>= 2.7'
|
26
26
|
|
27
|
-
s.add_dependency 'activerecord', '>=
|
27
|
+
s.add_dependency 'activerecord', '>= 6', '< 8.1'
|
28
28
|
|
29
29
|
s.add_development_dependency "bundler", ">= 1.0.0"
|
30
30
|
s.add_development_dependency "rake"
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paranoia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- radarlistener@gmail.com
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-01-19 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: activerecord
|
@@ -16,20 +15,20 @@ dependencies:
|
|
16
15
|
requirements:
|
17
16
|
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
18
|
+
version: '6'
|
20
19
|
- - "<"
|
21
20
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
21
|
+
version: '8.1'
|
23
22
|
type: :runtime
|
24
23
|
prerelease: false
|
25
24
|
version_requirements: !ruby/object:Gem::Requirement
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
28
|
+
version: '6'
|
30
29
|
- - "<"
|
31
30
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
31
|
+
version: '8.1'
|
33
32
|
- !ruby/object:Gem::Dependency
|
34
33
|
name: bundler
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,7 +58,7 @@ dependencies:
|
|
59
58
|
- !ruby/object:Gem::Version
|
60
59
|
version: '0'
|
61
60
|
description: |2
|
62
|
-
Paranoia is a re-implementation of acts_as_paranoid for Rails
|
61
|
+
Paranoia is a re-implementation of acts_as_paranoid for Rails 5, 6, and 7,
|
63
62
|
using much, much, much less code. You would use either plugin / gem if you
|
64
63
|
wished that when you called destroy on an Active Record object that it
|
65
64
|
didn't actually destroy it, but just "hid" the record. Paranoia does this
|
@@ -91,7 +90,6 @@ homepage: https://github.com/rubysherpas/paranoia
|
|
91
90
|
licenses:
|
92
91
|
- MIT
|
93
92
|
metadata: {}
|
94
|
-
post_install_message:
|
95
93
|
rdoc_options: []
|
96
94
|
require_paths:
|
97
95
|
- lib
|
@@ -99,15 +97,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
97
|
requirements:
|
100
98
|
- - ">="
|
101
99
|
- !ruby/object:Gem::Version
|
102
|
-
version: '2.
|
100
|
+
version: '2.7'
|
103
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
102
|
requirements:
|
105
103
|
- - ">="
|
106
104
|
- !ruby/object:Gem::Version
|
107
105
|
version: 1.3.6
|
108
106
|
requirements: []
|
109
|
-
rubygems_version: 3.
|
110
|
-
signing_key:
|
107
|
+
rubygems_version: 3.6.2
|
111
108
|
specification_version: 4
|
112
109
|
summary: Paranoia is a re-implementation of acts_as_paranoid for Rails 3, 4, and 5,
|
113
110
|
using much, much, much less code.
|