cloudelete 0.0.2

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/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in cloudelete.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "cloudelete/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "cloudelete"
7
+ s.version = Cloudelete::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Eli Fox-Epstein"]
10
+ s.email = ["eli@redhyphen.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{AR3 soft deletion}
13
+ s.description = %q{AR3 soft deletion}
14
+
15
+ s.rubyforge_project = "cloudelete"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ end
data/lib/cloudelete.rb ADDED
@@ -0,0 +1,66 @@
1
+ module Cloudelete
2
+ module ActiveRecord
3
+
4
+ def self.included(base)
5
+ base.send :extend, ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ def is_soft_deleted
10
+ default_scope where(deleted_at: nil)
11
+ scope :deleted, where('deleted_at IS NOT NULL')
12
+ scope :including_deleted, unscoped
13
+
14
+ send :include, InstanceMethods
15
+ end
16
+ end
17
+
18
+ module InstanceMethods
19
+ def self.included(base)
20
+ base.send :alias_method, :delete!, :delete
21
+ base.send :before_destroy, :delete_or_not
22
+ end
23
+
24
+ def delete_or_not
25
+ if @really_delete
26
+ true
27
+ else
28
+ touch(:deleted_at)
29
+ false
30
+ end
31
+ end
32
+
33
+ def delete
34
+ update_attributes deleted_at: DateTime.now
35
+ end
36
+
37
+ def destroy
38
+ super
39
+ self
40
+ end
41
+
42
+ def destroy!
43
+ @really_delete = true
44
+ destroy
45
+ @really_delete = false
46
+ self
47
+ end
48
+
49
+ def deleted?
50
+ !deleted_at.nil?
51
+ end
52
+
53
+ def restore
54
+ update_attributes deleted_at: nil
55
+ self
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+
62
+ module ActiveRecord
63
+ class Base
64
+ include Cloudelete::ActiveRecord
65
+ end
66
+ end
@@ -0,0 +1,3 @@
1
+ module Cloudelete
2
+ VERSION = "0.0.2"
3
+ end
data/rails/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'cloudelete'
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cloudelete
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 2
9
+ version: 0.0.2
10
+ platform: ruby
11
+ authors:
12
+ - Eli Fox-Epstein
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-02-06 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: AR3 soft deletion
22
+ email:
23
+ - eli@redhyphen.com
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - .gitignore
32
+ - Gemfile
33
+ - Rakefile
34
+ - cloudelete.gemspec
35
+ - lib/cloudelete.rb
36
+ - lib/cloudelete/version.rb
37
+ - rails/init.rb
38
+ has_rdoc: true
39
+ homepage: ""
40
+ licenses: []
41
+
42
+ post_install_message:
43
+ rdoc_options: []
44
+
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ none: false
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ segments:
53
+ - 0
54
+ version: "0"
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ requirements: []
64
+
65
+ rubyforge_project: cloudelete
66
+ rubygems_version: 1.3.7
67
+ signing_key:
68
+ specification_version: 3
69
+ summary: AR3 soft deletion
70
+ test_files: []
71
+