permanent_records 3.1.3 → 3.1.4

Sign up to get free protection for your applications and to get access to all the features.
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