permanent_records 4.1.5 → 4.1.6

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
  SHA1:
3
- metadata.gz: 653264c14471c15f5b24a60821927d23e67bf12e
4
- data.tar.gz: 0d7b3cb1a5772bd55bc3a573e4007ba278eb96c7
3
+ metadata.gz: ea46f013888d1a6a86b72d48dc0695d6e8c001aa
4
+ data.tar.gz: d881533bfce2762905a83a6ad2255333cae14197
5
5
  SHA512:
6
- metadata.gz: 8c89b0d0a913ca7d245e906143123f7af4b85dd4e9fc4ed7bf4a2c714942b4caea5f0e6b50309fe94c33cfe9e1a6b5212a6ed6c3331a5757c42e566b1ddf92d8
7
- data.tar.gz: bbbe06aac87b420d7b6f63fc3c59200cd3633534302f6ec69b56874f98e95338075021b3f29198fa53f0ff5da8501679465ce9eb5ef27d2b18dc881f3ab0ebb4
6
+ metadata.gz: 179fa785989872e008a059d1d1fcbc00b3aa1dbb04039f1a79a9900b048fc21f9ac790e21880a9e96d3da6ef7c279cfe8305da30086bf4bc2bb62177d2687e23
7
+ data.tar.gz: a4d4bf79adb1284f10ad2229dfb3edd54ec318a6ca9fa858d68a46df57f92f24617393105bfea710b9238f667afee62b4eb2ded835053180fac6b09dfd83114f
data/.gitignore CHANGED
@@ -1,3 +1,6 @@
1
1
  spec/support/debug.log
2
2
  Gemfile.lock
3
3
  pkg
4
+
5
+ *.swp
6
+ .bundle
data/.rubocop.yml ADDED
@@ -0,0 +1,3 @@
1
+ AllCops:
2
+ Exclude:
3
+ - bin/*
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.1.5
1
+ 4.1.6
data/bin/rspec ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # This file was generated by Bundler.
5
+ #
6
+ # The application 'rspec' is installed as part of a gem, and
7
+ # this file is here to facilitate running it.
8
+ #
9
+
10
+ require "pathname"
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
+ Pathname.new(__FILE__).realpath)
13
+
14
+ require "rubygems"
15
+ require "bundler/setup"
16
+
17
+ load Gem.bin_path("rspec-core", "rspec")
@@ -66,6 +66,10 @@ module PermanentRecords
66
66
  lambda do |validate|
67
67
  run_callbacks(:revive) do
68
68
  set_deleted_at(nil, validate)
69
+ # increment all associated counters for counter cache
70
+ each_counter_cache do |assoc_class, counter_cache_column, assoc_id|
71
+ assoc_class.increment_counter counter_cache_column, assoc_id
72
+ end
69
73
  true
70
74
  end
71
75
  end
@@ -91,6 +95,7 @@ module PermanentRecords
91
95
  else
92
96
  record.save!
93
97
  end
98
+
94
99
  @attributes = record.instance_variable_get('@attributes')
95
100
  rescue => e
96
101
  # trigger dependent record destruction (they were revived before this
@@ -100,9 +105,27 @@ module PermanentRecords
100
105
  end
101
106
  end
102
107
 
108
+ def each_counter_cache
109
+ _reflections.each do |name, reflection|
110
+ associated_class = association(name).reflection.class_name.constantize
111
+ next unless reflection.belongs_to? && reflection.counter_cache_column
112
+ yield(associated_class,
113
+ reflection.counter_cache_column,
114
+ send(reflection.foreign_key))
115
+ end
116
+ end
117
+
103
118
  def destroy_with_permanent_records(force = nil)
104
119
  run_callbacks(:destroy) do
105
- deleted? || new_record? ? save : set_deleted_at(Time.now, force)
120
+ if deleted? || new_record?
121
+ save
122
+ else
123
+ set_deleted_at(Time.now, force)
124
+ # decrement all associated counters for counter cache
125
+ each_counter_cache do |assoc_class, counter_cache_column, assoc_id|
126
+ assoc_class.decrement_counter counter_cache_column, assoc_id
127
+ end
128
+ end
106
129
  true
107
130
  end
108
131
  deleted? ? self : false
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: permanent_records
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.5
4
+ version: 4.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jack Danger Canty
@@ -16,90 +16,90 @@ authors:
16
16
  autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
- date: 2016-04-19 00:00:00.000000000 Z
19
+ date: 2016-06-06 00:00:00.000000000 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: activerecord
23
23
  requirement: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 4.2.0
28
28
  type: :runtime
29
29
  prerelease: false
30
30
  version_requirements: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: 4.2.0
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
41
  version: 4.2.0
42
42
  type: :runtime
43
43
  prerelease: false
44
44
  version_requirements: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: 4.2.0
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: database_cleaner
51
51
  requirement: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: 1.5.1
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
62
  version: 1.5.1
63
63
  - !ruby/object:Gem::Dependency
64
64
  name: pry-byebug
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
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
76
  version: '0'
77
77
  - !ruby/object:Gem::Dependency
78
78
  name: rake
79
79
  requirement: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
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
90
  version: '0'
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rspec
93
93
  requirement: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: 2.14.1
98
98
  type: :development
99
99
  prerelease: false
100
100
  version_requirements: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ~>
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
104
  version: 2.14.1
105
105
  - !ruby/object:Gem::Dependency
@@ -120,14 +120,14 @@ dependencies:
120
120
  name: sqlite3
121
121
  requirement: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - '>='
123
+ - - ">="
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  type: :development
127
127
  prerelease: false
128
128
  version_requirements: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - '>='
130
+ - - ">="
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
133
  description: |
@@ -140,15 +140,17 @@ extra_rdoc_files:
140
140
  - LICENSE
141
141
  - README.md
142
142
  files:
143
- - .document
144
- - .gitignore
145
- - .travis.yml
143
+ - ".document"
144
+ - ".gitignore"
145
+ - ".rubocop.yml"
146
+ - ".travis.yml"
146
147
  - CONTRIBUTORS.md
147
148
  - Gemfile
148
149
  - LICENSE
149
150
  - README.md
150
151
  - Rakefile
151
152
  - VERSION
153
+ - bin/rspec
152
154
  - ci
153
155
  - lib/permanent_records.rb
154
156
  - permanent_records.gemspec
@@ -162,17 +164,17 @@ require_paths:
162
164
  - lib
163
165
  required_ruby_version: !ruby/object:Gem::Requirement
164
166
  requirements:
165
- - - '>='
167
+ - - ">="
166
168
  - !ruby/object:Gem::Version
167
169
  version: '0'
168
170
  required_rubygems_version: !ruby/object:Gem::Requirement
169
171
  requirements:
170
- - - '>='
172
+ - - ">="
171
173
  - !ruby/object:Gem::Version
172
174
  version: '0'
173
175
  requirements: []
174
176
  rubyforge_project:
175
- rubygems_version: 2.0.14.1
177
+ rubygems_version: 2.5.1
176
178
  signing_key:
177
179
  specification_version: 4
178
180
  summary: Soft-delete your ActiveRecord records