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 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.3
1
+ 3.1.4
@@ -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 nil }
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 "#{table_name}.deleted_at IS NOT NULL"
178
+ where arel_table[:deleted_at].not_eq(nil)
167
179
  end
168
180
 
169
181
  def not_deleted
170
- where "#{table_name}.deleted_at IS NULL"
182
+ where arel_table[:deleted_at].eq(nil)
171
183
  end
172
184
  end
173
185
 
@@ -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
@@ -12,6 +12,8 @@ ActiveRecord::Schema.define(:version => 1) do
12
12
 
13
13
  create_table :holes, :force => true do |t|
14
14
  t.integer :number
15
+ t.text :options
16
+ t.text :properties
15
17
  t.references :dirt
16
18
  t.datetime :deleted_at
17
19
  end
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.3
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-04-01 00:00:00.000000000 Z
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: '0'
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: '0'
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: 1.8.24
95
+ rubygems_version: 2.0.3
105
96
  signing_key:
106
97
  specification_version: 3
107
98
  summary: Soft-delete your ActiveRecord records