soft_delete 0.1.0
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.
- data/Manifest +5 -0
- data/README.rdoc +3 -0
- data/Rakefile +14 -0
- data/lib/soft_deletable.rb +23 -0
- data/lib/soft_delete.rb +17 -0
- data/soft_delete.gemspec +30 -0
- metadata +80 -0
data/Manifest
ADDED
data/README.rdoc
ADDED
data/Rakefile
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'rake'
|
|
3
|
+
require 'echoe'
|
|
4
|
+
|
|
5
|
+
Echoe.new('soft_delete', '0.1.0') do |p|
|
|
6
|
+
p.description = "Overwrites default destroy behaviour by setting a deleted_at field."
|
|
7
|
+
p.url = "http://github.com/smoku/soft_delete"
|
|
8
|
+
p.author = "Paweł Smoczyk"
|
|
9
|
+
p.email = "pawel@smoczyk.pl"
|
|
10
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
|
11
|
+
p.development_dependencies = []
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module SoftDeletable
|
|
2
|
+
|
|
3
|
+
def self.included(base)
|
|
4
|
+
base.instance_eval do
|
|
5
|
+
default_scope where(:deleted_at => nil)
|
|
6
|
+
alias_method :destroy!, :destroy
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def destroy
|
|
11
|
+
if persisted?
|
|
12
|
+
with_transaction_returning_status do
|
|
13
|
+
_run_destroy_callbacks do
|
|
14
|
+
self.class.unscoped.update_all({:deleted_at => Time.now.utc}, {:id => self.id})
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
@destroyed = true
|
|
20
|
+
freeze
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
data/lib/soft_delete.rb
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'soft_deletable'
|
|
2
|
+
|
|
3
|
+
module SoftDelete
|
|
4
|
+
|
|
5
|
+
def self.included(base)
|
|
6
|
+
base.extend ClassMethods
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
module ClassMethods
|
|
10
|
+
def soft_deletable
|
|
11
|
+
include SoftDeletable
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
ActiveRecord::Base.send(:include, SoftDelete)
|
data/soft_delete.gemspec
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
Gem::Specification.new do |s|
|
|
4
|
+
s.name = %q{soft_delete}
|
|
5
|
+
s.version = "0.1.0"
|
|
6
|
+
|
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
|
8
|
+
s.authors = ["Pawe\305\202 Smoczyk"]
|
|
9
|
+
s.date = %q{2010-09-02}
|
|
10
|
+
s.description = %q{Overwrites default destroy behaviour by setting a deleted_at field.}
|
|
11
|
+
s.email = %q{pawel@smoczyk.pl}
|
|
12
|
+
s.extra_rdoc_files = ["README.rdoc", "lib/soft_deletable.rb", "lib/soft_delete.rb"]
|
|
13
|
+
s.files = ["README.rdoc", "Rakefile", "lib/soft_deletable.rb", "lib/soft_delete.rb", "Manifest", "soft_delete.gemspec"]
|
|
14
|
+
s.homepage = %q{http://github.com/smoku/soft_delete}
|
|
15
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Soft_delete", "--main", "README.rdoc"]
|
|
16
|
+
s.require_paths = ["lib"]
|
|
17
|
+
s.rubyforge_project = %q{soft_delete}
|
|
18
|
+
s.rubygems_version = %q{1.3.7}
|
|
19
|
+
s.summary = %q{Overwrites default destroy behaviour by setting a deleted_at field.}
|
|
20
|
+
|
|
21
|
+
if s.respond_to? :specification_version then
|
|
22
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
23
|
+
s.specification_version = 3
|
|
24
|
+
|
|
25
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
26
|
+
else
|
|
27
|
+
end
|
|
28
|
+
else
|
|
29
|
+
end
|
|
30
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: soft_delete
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
hash: 27
|
|
5
|
+
prerelease: false
|
|
6
|
+
segments:
|
|
7
|
+
- 0
|
|
8
|
+
- 1
|
|
9
|
+
- 0
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
platform: ruby
|
|
12
|
+
authors:
|
|
13
|
+
- "Pawe\xC5\x82 Smoczyk"
|
|
14
|
+
autorequire:
|
|
15
|
+
bindir: bin
|
|
16
|
+
cert_chain: []
|
|
17
|
+
|
|
18
|
+
date: 2010-09-02 00:00:00 +02:00
|
|
19
|
+
default_executable:
|
|
20
|
+
dependencies: []
|
|
21
|
+
|
|
22
|
+
description: Overwrites default destroy behaviour by setting a deleted_at field.
|
|
23
|
+
email: pawel@smoczyk.pl
|
|
24
|
+
executables: []
|
|
25
|
+
|
|
26
|
+
extensions: []
|
|
27
|
+
|
|
28
|
+
extra_rdoc_files:
|
|
29
|
+
- README.rdoc
|
|
30
|
+
- lib/soft_deletable.rb
|
|
31
|
+
- lib/soft_delete.rb
|
|
32
|
+
files:
|
|
33
|
+
- README.rdoc
|
|
34
|
+
- Rakefile
|
|
35
|
+
- lib/soft_deletable.rb
|
|
36
|
+
- lib/soft_delete.rb
|
|
37
|
+
- Manifest
|
|
38
|
+
- soft_delete.gemspec
|
|
39
|
+
has_rdoc: true
|
|
40
|
+
homepage: http://github.com/smoku/soft_delete
|
|
41
|
+
licenses: []
|
|
42
|
+
|
|
43
|
+
post_install_message:
|
|
44
|
+
rdoc_options:
|
|
45
|
+
- --line-numbers
|
|
46
|
+
- --inline-source
|
|
47
|
+
- --title
|
|
48
|
+
- Soft_delete
|
|
49
|
+
- --main
|
|
50
|
+
- README.rdoc
|
|
51
|
+
require_paths:
|
|
52
|
+
- lib
|
|
53
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
54
|
+
none: false
|
|
55
|
+
requirements:
|
|
56
|
+
- - ">="
|
|
57
|
+
- !ruby/object:Gem::Version
|
|
58
|
+
hash: 3
|
|
59
|
+
segments:
|
|
60
|
+
- 0
|
|
61
|
+
version: "0"
|
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
|
+
none: false
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
hash: 11
|
|
68
|
+
segments:
|
|
69
|
+
- 1
|
|
70
|
+
- 2
|
|
71
|
+
version: "1.2"
|
|
72
|
+
requirements: []
|
|
73
|
+
|
|
74
|
+
rubyforge_project: soft_delete
|
|
75
|
+
rubygems_version: 1.3.7
|
|
76
|
+
signing_key:
|
|
77
|
+
specification_version: 3
|
|
78
|
+
summary: Overwrites default destroy behaviour by setting a deleted_at field.
|
|
79
|
+
test_files: []
|
|
80
|
+
|