acts_as_paranoid 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 45239a76ba68990d6273016fdba8c582ecd44d93475ebabf5ae6717b5c58ddcc
4
- data.tar.gz: 330ed8379df4137f3016de1db1def095ae268b3f99a6dce075b4fea8adf4eb42
3
+ metadata.gz: 06cfbf17cb1f8fe737c00e223cc6b02f8ea1159d751c3e6c1bfba1fd077ca6ac
4
+ data.tar.gz: b887b92760729053b6286412ee861e9677c7d418bcf28bdfdc996c4e9474ed30
5
5
  SHA512:
6
- metadata.gz: a2f9c1437125d81959809addcdbee54003711ad8f339b2d1f78987b81aaab3766ac813563c110879f594b127ca90d59186ba84ca0079eeec5e69005b9e0dae08
7
- data.tar.gz: 51f5f32565a0ae3f90de5f7afe517372a55c63c887c9de7ed07791f196b03e568f9cc275586c43f9e19806c5f45ef1431de4f446c819344cfebda64c0608d997
6
+ metadata.gz: 699e32ad650195f1d4b34ef89e266a379ef35f450d6434d753227788fe214c3af9ebe410397799117b8b6527a240d769e768cc1a60b49f8abd663d8e1ab81ff9
7
+ data.tar.gz: a5e7745201cfe1fb5689726ca93cff4fb24a594373a10c2fb7777541f9ca7dcb2681a20ddd91692eff6dae3149b80e6a962b56dc4fecd86d10b87e77f9be1221
@@ -0,0 +1,32 @@
1
+ # CHANGELOG
2
+
3
+ Notable changes to this project will be documented in this file.
4
+
5
+ ## 0.6.1
6
+
7
+ * Add support for Rails 6 ([#124], by [Daniel Rice](danielricecodes),
8
+ [Josh Bryant](jbryant92), and [Romain Alexandre](RomainAlexandre))
9
+ * Add support for incrementing and decrementing counter cache columns on
10
+ associated objects ([#119], by [Dimitar Lukanov][shadydealer])
11
+ * Add `:double_tap_destroys_fully` option, with default `true` ([#116],
12
+ by [Michael Riviera][ri4a]).
13
+ * Officially support Ruby 2.6 ([#114], by [Matijs van Zuijlen][mvz]).
14
+
15
+ ## 0.6.0 and earlier
16
+
17
+ (To be added)
18
+
19
+ <!-- Contributors -->
20
+
21
+ [ri4a]: https://github.com/ri4a
22
+ [mvz]: https://github.com/mvz
23
+ [shadydealer]: https://github.com/shadydealer
24
+ [danielricecodes]: https://github.com/danielricecodes
25
+ [jbryant92]: https://github.com/jbryant92
26
+ [RomainAlexandre]: https://github.com/RomainAlexandre
27
+
28
+ <!-- issues & pull requests -->
29
+
30
+ [#119]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/119
31
+ [#116]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/116
32
+ [#114]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/114
data/README.md CHANGED
@@ -9,12 +9,12 @@ recoverable later.
9
9
 
10
10
  ## Support
11
11
 
12
- **This branch targets Rails 4.2, 5.0 and 5.1, with experimental support for 5.2**
12
+ **This branch targets Rails 4.2, 5.0 and 5.1, with experimental support for 5.2+**
13
13
 
14
- If you're working with another version, switch to the corresponding branch, or
14
+ If you're working with Rails 4.1-, switch to the corresponding branch, or
15
15
  require an older version of the `acts_as_paranoid` gem.
16
16
 
17
- ### Known issues with Rails 5.2
17
+ ### Known issues with Rails 5.2+
18
18
 
19
19
  * Using acts_as_paranoid and ActiveStorage on the same model
20
20
  [leads to a SystemStackError](https://github.com/ActsAsParanoid/acts_as_paranoid/issues/103).
@@ -114,6 +114,10 @@ p.destroy # does NOT delete the first record, just hides it
114
114
  Paranoiac.only_deleted.where(:id => p.id).first.destroy # deletes the first record from the database
115
115
  ```
116
116
 
117
+ This behaviour can be disabled by setting the configuration option. In a future version, `false` will be the default setting.
118
+
119
+ - `:double_tap_destroys_fully => false`
120
+
117
121
  ### Recovery
118
122
 
119
123
  Recovery is easy. Just invoke `recover` on it, like this:
@@ -263,7 +267,6 @@ child.parent_including_deleted #=> Parent (it works!)
263
267
 
264
268
  Watch out for these caveats:
265
269
 
266
-
267
270
  - You cannot use scopes named `with_deleted` and `only_deleted`
268
271
  - You cannot use scopes named `deleted_inside_time_window`, `deleted_before_time`, `deleted_after_time` **if** your paranoid column's type is `time`
269
272
  - You cannot name association `*_with_deleted`
@@ -283,5 +286,6 @@ Watch out for these caveats:
283
286
  * To [Jean Boussier](https://github.com/byroot) for initial Rails 4.0.0 support
284
287
  * To [Matijs van Zuijlen](https://github.com/mvz) for Rails 4.1 and 4.2 support
285
288
  * To [Andrey Ponomarenko](https://github.com/sjke) for Rails 5 support
289
+ * To [Daniel Rice](https://github.com/danielricecodes), [Josh Bryant](https://github.com/jbryant92), and [Romain Alexandre](https://github.com/RomainAlexandre) for Rails 6.0 support.
286
290
 
287
291
  See `LICENSE`.
@@ -19,7 +19,7 @@ module ActsAsParanoid
19
19
 
20
20
  class_attribute :paranoid_configuration, :paranoid_column_reference
21
21
 
22
- self.paranoid_configuration = { :column => "deleted_at", :column_type => "time", :recover_dependent_associations => true, :dependent_recovery_window => 2.minutes, :recovery_value => nil }
22
+ self.paranoid_configuration = { :column => "deleted_at", :column_type => "time", :recover_dependent_associations => true, :dependent_recovery_window => 2.minutes, :recovery_value => nil, double_tap_destroys_fully: true }
23
23
  self.paranoid_configuration.merge!({ :deleted_value => "deleted" }) if options[:column_type] == "string"
24
24
  self.paranoid_configuration.merge!({ :allow_nulls => true }) if options[:column_type] == "boolean"
25
25
  self.paranoid_configuration.merge!(options) # user options
@@ -31,7 +31,7 @@ module ActsAsParanoid
31
31
  association = association(:#{target})
32
32
  return nil if association.options[:polymorphic] && association.klass.nil?
33
33
  return #{target}_without_unscoped(*args) unless association.klass.paranoid?
34
- association.klass.with_deleted.scoping { #{target}_without_unscoped(*args) }
34
+ association.klass.with_deleted.scoping { association.klass.unscoped { #{target}_without_unscoped(*args) } }
35
35
  end
36
36
  alias_method :#{target}_without_unscoped, :#{target}
37
37
  alias_method :#{target}, :#{target}_with_unscoped
@@ -116,8 +116,14 @@ module ActsAsParanoid
116
116
  with_transaction_returning_status do
117
117
  run_callbacks :destroy do
118
118
  destroy_dependent_associations!
119
- # Handle composite keys, otherwise we would just use `self.class.primary_key.to_sym => self.id`.
120
- self.class.delete_all!(Hash[[Array(self.class.primary_key), Array(self.id)].transpose]) if persisted?
119
+
120
+ if persisted?
121
+ # Handle composite keys, otherwise we would just use `self.class.primary_key.to_sym => self.id`.
122
+ self.class.delete_all!(Hash[[Array(self.class.primary_key), Array(self.id)].transpose])
123
+
124
+ decrement_counters_on_associations
125
+ end
126
+
121
127
  self.paranoid_value = self.class.delete_now_value
122
128
  freeze
123
129
  end
@@ -128,19 +134,24 @@ module ActsAsParanoid
128
134
  if !deleted?
129
135
  with_transaction_returning_status do
130
136
  run_callbacks :destroy do
131
- # Handle composite keys, otherwise we would just use `self.class.primary_key.to_sym => self.id`.
132
- @_trigger_destroy_callback = if persisted?
133
- self.class.delete_all(Hash[[Array(self.class.primary_key), Array(self.id)].transpose])
134
- else
135
- true
136
- end
137
+
138
+ if persisted?
139
+ # Handle composite keys, otherwise we would just use `self.class.primary_key.to_sym => self.id`.
140
+ self.class.delete_all(Hash[[Array(self.class.primary_key), Array(self.id)].transpose])
141
+
142
+ decrement_counters_on_associations
143
+ end
144
+
145
+ @_trigger_destroy_callback = true
137
146
 
138
147
  self.paranoid_value = self.class.delete_now_value
139
148
  self
140
149
  end
141
150
  end
142
151
  else
143
- destroy_fully!
152
+ if paranoid_configuration[:double_tap_destroys_fully]
153
+ destroy_fully!
154
+ end
144
155
  end
145
156
  end
146
157
 
@@ -155,7 +166,7 @@ module ActsAsParanoid
155
166
  self.class.transaction do
156
167
  run_callbacks :recover do
157
168
  recover_dependent_associations(options[:recovery_window], options) if options[:recursive]
158
-
169
+ increment_counters_on_associations
159
170
  self.paranoid_value = self.class.paranoid_configuration[:recovery_value]
160
171
  self.save
161
172
  end
@@ -169,7 +180,11 @@ module ActsAsParanoid
169
180
  scope = klass.only_deleted
170
181
 
171
182
  # Merge in the association's scope
172
- scope = scope.merge(association(reflection.name).association_scope)
183
+ scope = if ActiveRecord::VERSION::MAJOR >= 6
184
+ scope.merge(ActiveRecord::Associations::AssociationScope.scope(association(reflection.name)))
185
+ else
186
+ scope.merge(association(reflection.name).association_scope)
187
+ end
173
188
 
174
189
  # We can only recover by window if both parent and dependant have a
175
190
  # paranoid column type of :time.
@@ -190,7 +205,11 @@ module ActsAsParanoid
190
205
  scope = klass.only_deleted
191
206
 
192
207
  # Merge in the association's scope
193
- scope = scope.merge(association(reflection.name).association_scope)
208
+ scope = if ActiveRecord::VERSION::MAJOR >= 6
209
+ scope.merge(ActiveRecord::Associations::AssociationScope.scope(association(reflection.name)))
210
+ else
211
+ scope.merge(association(reflection.name).association_scope)
212
+ end
194
213
 
195
214
  scope.each do |object|
196
215
  object.destroy!
@@ -223,5 +242,30 @@ module ActsAsParanoid
223
242
  def paranoid_value=(value)
224
243
  self.send("#{self.class.paranoid_column}=", value)
225
244
  end
245
+
246
+ def update_counters_on_associations method_sym
247
+
248
+ return unless [:decrement_counter, :increment_counter].include? method_sym
249
+
250
+ each_counter_cached_association_reflection do |assoc_reflection|
251
+ associated_object = send(assoc_reflection.name)
252
+ counter_cache_column = assoc_reflection.counter_cache_column
253
+ associated_object.class.send(method_sym, counter_cache_column, associated_object.id)
254
+ end
255
+ end
256
+
257
+ def each_counter_cached_association_reflection
258
+ _reflections.each do |name, reflection|
259
+ yield reflection if reflection.belongs_to? && reflection.counter_cache_column == "#{self.class.name.underscore.pluralize}_count"
260
+ end
261
+ end
262
+
263
+ def increment_counters_on_associations
264
+ update_counters_on_associations :increment_counter
265
+ end
266
+
267
+ def decrement_counters_on_associations
268
+ update_counters_on_associations :decrement_counter
269
+ end
226
270
  end
227
271
  end
@@ -8,10 +8,9 @@ module ActsAsParanoid
8
8
 
9
9
  class UniquenessWithoutDeletedValidator
10
10
  def self.[](version)
11
- version = version.to_s
12
- name = "V#{version.tr('.', '_')}"
11
+ name = "V#{version.to_s.tr('.', '_')}"
13
12
  unless constants.include? name.to_sym
14
- raise "Unknown validator version #{version.inspect}; expected one of #{constants.sort.join(', ')}"
13
+ raise "Unknown validator version #{name.inspect}; expected one of #{constants.sort.join(', ')}"
15
14
  end
16
15
  const_get name
17
16
  end
@@ -38,8 +37,11 @@ module ActsAsParanoid
38
37
  protected
39
38
 
40
39
  def build_relation(klass, attribute, value)
41
- return super(klass, klass.arel_table, attribute, value) if ActiveRecord::VERSION::MINOR == 0
42
- super
40
+ if ActiveRecord::VERSION::MINOR == 0 && ActiveRecord::VERSION::MAJOR == 5
41
+ return super(klass, klass.arel_table, attribute, value)
42
+ else
43
+ super
44
+ end
43
45
  end
44
46
  end
45
47
 
@@ -75,6 +77,9 @@ module ActsAsParanoid
75
77
  end
76
78
  end
77
79
  end
80
+
81
+ class V6 < V5
82
+ end
78
83
  end
79
84
 
80
85
  module ClassMethods
@@ -1,3 +1,3 @@
1
1
  module ActsAsParanoid
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
@@ -41,6 +41,48 @@ class AssociationsTest < ParanoidBaseTest
41
41
  includes_values = ParanoidTime.includes(:not_paranoid).includes_values
42
42
 
43
43
  assert_equal includes_values, paranoid_has_many_dependant.association(:paranoid_time_with_scope).scope.includes_values
44
+
45
+ paranoid_time = ParanoidTime.create(name: 'not-hello')
46
+ paranoid_has_many_dependant.paranoid_time = paranoid_time
47
+ paranoid_has_many_dependant.save!
48
+
49
+ assert_nil paranoid_has_many_dependant.paranoid_time_with_scope
50
+
51
+ paranoid_time.update(name: 'hello')
52
+
53
+ paranoid_has_many_dependant.reload
54
+
55
+ assert_equal paranoid_time, paranoid_has_many_dependant.paranoid_time_with_scope
56
+
57
+ paranoid_time.destroy
58
+
59
+ paranoid_has_many_dependant.reload
60
+
61
+ assert_nil paranoid_has_many_dependant.paranoid_time_with_scope
62
+ end
63
+
64
+ def test_belongs_to_with_scope_and_deleted_option
65
+ paranoid_has_many_dependant = ParanoidHasManyDependant.new
66
+ includes_values = ParanoidTime.includes(:not_paranoid).includes_values
67
+
68
+ assert_equal includes_values, paranoid_has_many_dependant
69
+ .association(:paranoid_time_with_scope_with_deleted).scope.includes_values
70
+
71
+ paranoid_time = ParanoidTime.create(name: 'not-hello')
72
+ paranoid_has_many_dependant.paranoid_time = paranoid_time
73
+ paranoid_has_many_dependant.save!
74
+
75
+ assert_nil paranoid_has_many_dependant.paranoid_time_with_scope_with_deleted
76
+
77
+ paranoid_time.update(name: 'hello')
78
+ paranoid_has_many_dependant.reload
79
+
80
+ assert_equal paranoid_time, paranoid_has_many_dependant.paranoid_time_with_scope_with_deleted
81
+
82
+ paranoid_time.destroy
83
+ paranoid_has_many_dependant.reload
84
+
85
+ assert_equal paranoid_time, paranoid_has_many_dependant.paranoid_time_with_scope_with_deleted
44
86
  end
45
87
 
46
88
  def test_belongs_to_with_deleted
@@ -51,9 +93,10 @@ class AssociationsTest < ParanoidBaseTest
51
93
  assert_equal paranoid_time, paranoid_has_many_dependant.paranoid_time_with_deleted
52
94
 
53
95
  paranoid_time.destroy
96
+ paranoid_has_many_dependant.reload
54
97
 
55
- assert_nil paranoid_has_many_dependant.reload.paranoid_time
56
- assert_equal paranoid_time, paranoid_has_many_dependant.reload.paranoid_time_with_deleted
98
+ assert_nil paranoid_has_many_dependant.paranoid_time
99
+ assert_equal paranoid_time, paranoid_has_many_dependant.paranoid_time_with_deleted
57
100
  end
58
101
 
59
102
  def test_belongs_to_polymorphic_with_deleted
@@ -228,7 +271,7 @@ class AssociationsTest < ParanoidBaseTest
228
271
  end
229
272
 
230
273
  def test_mass_assignment_of_paranoid_column_enabled
231
- if ActiveRecord::VERSION::MAJOR > 4 && ActiveRecord::VERSION::MINOR > 1
274
+ if Gem.loaded_specs['activerecord'].version >= Gem::Version.new('5.2.0')
232
275
  skip 'Creation as deleted is not supported with Rails >= 5.2'
233
276
  end
234
277
  now = Time.now
@@ -437,4 +437,47 @@ class ParanoidTest < ParanoidBaseTest
437
437
  2.times { ps.destroy }
438
438
  assert_equal 0, ParanoidBooleanNotNullable.with_deleted.where(:id => ps).count
439
439
  end
440
+
441
+ def test_no_double_tap_destroys_fully
442
+ ps = ParanoidNoDoubleTapDestroysFully.create!()
443
+ 2.times { ps.destroy }
444
+ assert_equal 1, ParanoidNoDoubleTapDestroysFully.with_deleted.where(:id => ps).count
445
+ end
446
+
447
+ def test_decrement_counters
448
+ paranoid_boolean = ParanoidBoolean.create!()
449
+ paranoid_with_counter_cache = ParanoidWithCounterCache.create!(paranoid_boolean: paranoid_boolean)
450
+
451
+ assert_equal 1, paranoid_boolean.paranoid_with_counter_caches_count
452
+
453
+ paranoid_with_counter_cache.destroy
454
+
455
+ assert_equal 0, paranoid_boolean.reload.paranoid_with_counter_caches_count
456
+ end
457
+
458
+ def test_hard_destroy_decrement_counters
459
+ paranoid_boolean = ParanoidBoolean.create!()
460
+ paranoid_with_counter_cache = ParanoidWithCounterCache.create!(paranoid_boolean: paranoid_boolean)
461
+
462
+ assert_equal 1, paranoid_boolean.paranoid_with_counter_caches_count
463
+
464
+ paranoid_with_counter_cache.destroy_fully!
465
+
466
+ assert_equal 0, paranoid_boolean.reload.paranoid_with_counter_caches_count
467
+ end
468
+
469
+ def test_increment_counters
470
+ paranoid_boolean = ParanoidBoolean.create!()
471
+ paranoid_with_counter_cache = ParanoidWithCounterCache.create!(paranoid_boolean: paranoid_boolean)
472
+
473
+ assert_equal 1, paranoid_boolean.paranoid_with_counter_caches_count
474
+
475
+ paranoid_with_counter_cache.destroy
476
+
477
+ assert_equal 0, paranoid_boolean.reload.paranoid_with_counter_caches_count
478
+
479
+ paranoid_with_counter_cache.recover
480
+
481
+ assert_equal 1, paranoid_boolean.reload.paranoid_with_counter_caches_count
482
+ end
440
483
  end
@@ -4,7 +4,6 @@ class MultipleDefaultScopesTest < ParanoidBaseTest
4
4
  def setup
5
5
  setup_db
6
6
 
7
- # Naturally, the default scope for humans is male. Sexism++
8
7
  ParanoidPolygon.create! :sides => 3
9
8
  ParanoidPolygon.create! :sides => 3
10
9
  ParanoidPolygon.create! :sides => 3
@@ -31,7 +31,7 @@ def setup_db
31
31
  t.string :name
32
32
  t.boolean :is_deleted
33
33
  t.integer :paranoid_time_id
34
-
34
+ t.integer :paranoid_with_counter_caches_count
35
35
  timestamps t
36
36
  end
37
37
 
@@ -148,7 +148,7 @@ def setup_db
148
148
  timestamps t
149
149
  end
150
150
 
151
- create_table :paranoid_forests do |t|
151
+ create_table :paranoid_forests do |t|
152
152
  t.string :name
153
153
  t.boolean :rainforest
154
154
  t.datetime :deleted_at
@@ -208,6 +208,18 @@ def setup_db
208
208
 
209
209
  timestamps t
210
210
  end
211
+
212
+ create_table :paranoid_no_double_tap_destroys_fullies do |t|
213
+ t.datetime :deleted_at
214
+ end
215
+
216
+ create_table :paranoid_with_counter_caches do |t|
217
+ t.string :name
218
+ t.datetime :deleted_at
219
+ t.integer :paranoid_boolean_id
220
+
221
+ timestamps t
222
+ end
211
223
  end
212
224
  end
213
225
 
@@ -247,6 +259,7 @@ class ParanoidBoolean < ActiveRecord::Base
247
259
 
248
260
  belongs_to :paranoid_time
249
261
  has_one :paranoid_has_one_dependant, :dependent => :destroy
262
+ has_many :paranoid_with_counter_cache, :dependent => :destroy
250
263
  end
251
264
 
252
265
  class ParanoidString < ActiveRecord::Base
@@ -256,6 +269,10 @@ end
256
269
  class NotParanoid < ActiveRecord::Base
257
270
  end
258
271
 
272
+ class ParanoidNoDoubleTapDestroysFully < ActiveRecord::Base
273
+ acts_as_paranoid :double_tap_destroys_fully => false
274
+ end
275
+
259
276
  class HasOneNotParanoid < ActiveRecord::Base
260
277
  belongs_to :paranoid_time, :with_deleted => true
261
278
  end
@@ -265,11 +282,17 @@ class DoubleHasOneNotParanoid < HasOneNotParanoid
265
282
  belongs_to :paranoid_time, :with_deleted => true
266
283
  end
267
284
 
285
+ class ParanoidWithCounterCache < ActiveRecord::Base
286
+ acts_as_paranoid
287
+ belongs_to :paranoid_boolean, :counter_cache => true
288
+ end
289
+
268
290
  class ParanoidHasManyDependant < ActiveRecord::Base
269
291
  acts_as_paranoid
270
292
  belongs_to :paranoid_time
271
- belongs_to :paranoid_time_with_scope, -> { includes(:not_paranoid) }, :class_name => 'ParanoidTime', :foreign_key => :paranoid_time_id
293
+ belongs_to :paranoid_time_with_scope, -> { where(name: 'hello').includes(:not_paranoid) }, :class_name => 'ParanoidTime', :foreign_key => :paranoid_time_id
272
294
  belongs_to :paranoid_time_with_deleted, :class_name => 'ParanoidTime', :foreign_key => :paranoid_time_id, :with_deleted => true
295
+ belongs_to :paranoid_time_with_scope_with_deleted, -> { where(name: 'hello').includes(:not_paranoid) }, :class_name => 'ParanoidTime', :foreign_key => :paranoid_time_id, :with_deleted => true
273
296
  belongs_to :paranoid_time_polymorphic_with_deleted, :class_name => 'ParanoidTime', :foreign_key => :paranoid_time_id, :polymorphic => true, :with_deleted => true
274
297
 
275
298
  belongs_to :paranoid_belongs_dependant, :dependent => :destroy
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.6.0
4
+ version: 0.6.1
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: 2018-06-07 00:00:00.000000000 Z
13
+ date: 2019-09-13 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: '6.0'
24
+ version: '7.0'
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: '6.0'
34
+ version: '7.0'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: activesupport
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -41,7 +41,7 @@ dependencies:
41
41
  version: '4.2'
42
42
  - - "<"
43
43
  - !ruby/object:Gem::Version
44
- version: '6.0'
44
+ version: '7.0'
45
45
  type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
@@ -51,21 +51,27 @@ dependencies:
51
51
  version: '4.2'
52
52
  - - "<"
53
53
  - !ruby/object:Gem::Version
54
- version: '6.0'
54
+ version: '7.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.5'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '3.0'
62
65
  type: :development
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
65
68
  requirements:
66
- - - "~>"
69
+ - - ">="
67
70
  - !ruby/object:Gem::Version
68
71
  version: '1.5'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.0'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: rake
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -114,6 +120,20 @@ dependencies:
114
120
  - - "<="
115
121
  - !ruby/object:Gem::Version
116
122
  version: '6.0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: pry
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
117
137
  description: Check the home page for more in-depth information.
118
138
  email:
119
139
  - e@zzak.io
@@ -121,6 +141,7 @@ executables: []
121
141
  extensions: []
122
142
  extra_rdoc_files: []
123
143
  files:
144
+ - CHANGELOG.md
124
145
  - LICENSE
125
146
  - README.md
126
147
  - lib/acts_as_paranoid.rb
@@ -157,8 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
178
  - !ruby/object:Gem::Version
158
179
  version: '0'
159
180
  requirements: []
160
- rubyforge_project:
161
- rubygems_version: 2.7.6
181
+ rubygems_version: 3.0.6
162
182
  signing_key:
163
183
  specification_version: 4
164
184
  summary: Active Record plugin which allows you to hide and restore records without