acts_as_paranoid 0.6.0 → 0.6.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 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