permanent_records 3.1.3 → 3.1.4
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 +7 -0
- data/VERSION +1 -1
- data/lib/permanent_records.rb +16 -4
- data/permanent_records.gemspec +3 -3
- data/spec/permanent_records_spec.rb +17 -1
- data/spec/support/hole.rb +3 -0
- data/spec/support/schema.rb +2 -0
- metadata +12 -21
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d9168f3838093ff7964c638791514a76527be17b
|
4
|
+
data.tar.gz: 86a5e9abf2e075d456504a33c0af87f75d18c3b6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2606d84799ba25652b5a422452d25a8a00ec37678e6d115197fdca8fea8a0cb1267a0411c0fd1e2d61333b2be61ba12ad51d06c161a1a4d1b29ad3ebba804ef5
|
7
|
+
data.tar.gz: 651d8c7f6ce729f6dbfab6457ab8432b9204d98a1d9affa4fc7def68e15483192d54ee001c287de9d1e2ce72cdf95ace4a320a9d131a195b209d8e35e892bcb3
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.1.
|
1
|
+
3.1.4
|
data/lib/permanent_records.rb
CHANGED
@@ -28,8 +28,8 @@ module PermanentRecords
|
|
28
28
|
deleted_at if is_permanent?
|
29
29
|
end
|
30
30
|
|
31
|
-
def revive
|
32
|
-
run_callbacks(:revive) { set_deleted_at
|
31
|
+
def revive(validate = nil)
|
32
|
+
run_callbacks(:revive) { set_deleted_at(nil, validate) }
|
33
33
|
self
|
34
34
|
end
|
35
35
|
|
@@ -56,6 +56,18 @@ module PermanentRecords
|
|
56
56
|
record.save!
|
57
57
|
end
|
58
58
|
@attributes, @attributes_cache = record.attributes, record.attributes
|
59
|
+
# workaround for active_record >= 3.2.0: re-wrap values of serialized attributes
|
60
|
+
# (record.attributes returns the plain values but in the instance variables they are expected to be wrapped)
|
61
|
+
if defined?(::ActiveRecord::AttributeMethods::Serialization::Attribute)
|
62
|
+
serialized_attribute_class = ::ActiveRecord::AttributeMethods::Serialization::Attribute
|
63
|
+
self.class.serialized_attributes.each do |key, coder|
|
64
|
+
if @attributes.key?(key)
|
65
|
+
attr = serialized_attribute_class.new(coder, @attributes[key], :unserialized)
|
66
|
+
@attributes[key] = attr
|
67
|
+
@attributes_cache[key] = attr
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
59
71
|
rescue Exception => e
|
60
72
|
# trigger dependent record destruction (they were revived before this record,
|
61
73
|
# which cannot be revived due to validations)
|
@@ -163,11 +175,11 @@ module PermanentRecords
|
|
163
175
|
|
164
176
|
module Scopes
|
165
177
|
def deleted
|
166
|
-
where
|
178
|
+
where arel_table[:deleted_at].not_eq(nil)
|
167
179
|
end
|
168
180
|
|
169
181
|
def not_deleted
|
170
|
-
where
|
182
|
+
where arel_table[:deleted_at].eq(nil)
|
171
183
|
end
|
172
184
|
end
|
173
185
|
|
data/permanent_records.gemspec
CHANGED
@@ -52,14 +52,14 @@ Gem::Specification.new do |s|
|
|
52
52
|
s.specification_version = 3
|
53
53
|
|
54
54
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
55
|
-
s.add_runtime_dependency(%q<activerecord>, [">= 0"])
|
55
|
+
s.add_runtime_dependency(%q<activerecord>, [">= 3.0.0"])
|
56
56
|
s.add_development_dependency(%q<rake>, [">= 0"])
|
57
57
|
else
|
58
|
-
s.add_dependency(%q<activerecord>, [">= 0"])
|
58
|
+
s.add_dependency(%q<activerecord>, [">= 3.0.0"])
|
59
59
|
s.add_dependency(%q<rake>, [">= 0"])
|
60
60
|
end
|
61
61
|
else
|
62
|
-
s.add_dependency(%q<activerecord>, [">= 0"])
|
62
|
+
s.add_dependency(%q<activerecord>, [">= 3.0.0"])
|
63
63
|
s.add_dependency(%q<rake>, [">= 0"])
|
64
64
|
end
|
65
65
|
end
|
@@ -37,6 +37,11 @@ describe PermanentRecords do
|
|
37
37
|
expect { subject }.to_not change { record.class.count }
|
38
38
|
end
|
39
39
|
|
40
|
+
it 'handles serialized attributes correctly' do
|
41
|
+
expect { subject.options }.to_not raise_error
|
42
|
+
expect { subject.size }.to_not raise_error if record.respond_to?(:size)
|
43
|
+
end
|
44
|
+
|
40
45
|
context 'with force argument set to truthy' do
|
41
46
|
let(:should_force) { :force }
|
42
47
|
|
@@ -135,8 +140,9 @@ describe PermanentRecords do
|
|
135
140
|
describe '#revive' do
|
136
141
|
|
137
142
|
let!(:record) { hole.destroy }
|
143
|
+
let(:should_validate) { nil }
|
138
144
|
|
139
|
-
subject { record.revive }
|
145
|
+
subject { record.revive should_validate }
|
140
146
|
|
141
147
|
it 'returns the record' do
|
142
148
|
subject.should == record
|
@@ -159,6 +165,16 @@ describe PermanentRecords do
|
|
159
165
|
it 'raises' do
|
160
166
|
expect { subject }.to raise_error(ActiveRecord::RecordInvalid)
|
161
167
|
end
|
168
|
+
|
169
|
+
context 'with validation opt-out' do
|
170
|
+
let(:should_validate) {{ validate: false }}
|
171
|
+
it 'doesnt raise' do
|
172
|
+
expect { subject }.to_not raise_error
|
173
|
+
end
|
174
|
+
it 'makes deleted? return false' do
|
175
|
+
subject.should_not be_deleted
|
176
|
+
end
|
177
|
+
end
|
162
178
|
end
|
163
179
|
|
164
180
|
context 'with dependent records' do
|
data/spec/support/hole.rb
CHANGED
@@ -11,4 +11,7 @@ class Hole < ActiveRecord::Base
|
|
11
11
|
has_one :unused_model, :dependent => :destroy
|
12
12
|
has_one :difficulty, :dependent => :destroy
|
13
13
|
has_many :comments, :dependent => :destroy
|
14
|
+
|
15
|
+
serialize :options, Hash
|
16
|
+
store :properties, :accessors => [:size] if respond_to?(:store)
|
14
17
|
end
|
data/spec/support/schema.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: permanent_records
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.
|
5
|
-
prerelease:
|
4
|
+
version: 3.1.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jack Danger Canty
|
@@ -12,38 +11,34 @@ authors:
|
|
12
11
|
autorequire:
|
13
12
|
bindir: bin
|
14
13
|
cert_chain: []
|
15
|
-
date: 2013-
|
14
|
+
date: 2013-08-08 00:00:00.000000000 Z
|
16
15
|
dependencies:
|
17
16
|
- !ruby/object:Gem::Dependency
|
18
17
|
name: activerecord
|
19
18
|
requirement: !ruby/object:Gem::Requirement
|
20
|
-
none: false
|
21
19
|
requirements:
|
22
|
-
- -
|
20
|
+
- - '>='
|
23
21
|
- !ruby/object:Gem::Version
|
24
|
-
version:
|
22
|
+
version: 3.0.0
|
25
23
|
type: :runtime
|
26
24
|
prerelease: false
|
27
25
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
26
|
requirements:
|
30
|
-
- -
|
27
|
+
- - '>='
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
29
|
+
version: 3.0.0
|
33
30
|
- !ruby/object:Gem::Dependency
|
34
31
|
name: rake
|
35
32
|
requirement: !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
33
|
requirements:
|
38
|
-
- -
|
34
|
+
- - '>='
|
39
35
|
- !ruby/object:Gem::Version
|
40
36
|
version: '0'
|
41
37
|
type: :development
|
42
38
|
prerelease: false
|
43
39
|
version_requirements: !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
40
|
requirements:
|
46
|
-
- -
|
41
|
+
- - '>='
|
47
42
|
- !ruby/object:Gem::Version
|
48
43
|
version: '0'
|
49
44
|
description: Never Lose Data. Rather than deleting rows this sets Record#deleted_at
|
@@ -80,28 +75,24 @@ files:
|
|
80
75
|
- spec/support/unused_model.rb
|
81
76
|
homepage: https://github.com/JackDanger/permanent_records
|
82
77
|
licenses: []
|
78
|
+
metadata: {}
|
83
79
|
post_install_message:
|
84
80
|
rdoc_options: []
|
85
81
|
require_paths:
|
86
82
|
- lib
|
87
83
|
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
-
none: false
|
89
84
|
requirements:
|
90
|
-
- -
|
85
|
+
- - '>='
|
91
86
|
- !ruby/object:Gem::Version
|
92
87
|
version: '0'
|
93
|
-
segments:
|
94
|
-
- 0
|
95
|
-
hash: 3995586655398578288
|
96
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
89
|
requirements:
|
99
|
-
- -
|
90
|
+
- - '>='
|
100
91
|
- !ruby/object:Gem::Version
|
101
92
|
version: '0'
|
102
93
|
requirements: []
|
103
94
|
rubyforge_project:
|
104
|
-
rubygems_version:
|
95
|
+
rubygems_version: 2.0.3
|
105
96
|
signing_key:
|
106
97
|
specification_version: 3
|
107
98
|
summary: Soft-delete your ActiveRecord records
|