false_destroy 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/LICENSE.txt ADDED
File without changes
data/README.md ADDED
@@ -0,0 +1,40 @@
1
+ false_destroy
2
+ ======================
3
+
4
+ when mark a record deleted in DB, eg: 0 is not deleted, 1 is deleted
5
+
6
+ we can call `false_destroy`,then will run callback after_false_destroy like after_destroy in rails.
7
+
8
+ ## Install
9
+
10
+ ```ruby
11
+ gem "false_destroy", "0.1.0"
12
+ ```
13
+
14
+ ## Usage
15
+
16
+ ```ruby
17
+ class Orgunit < ActiveRecord::Base
18
+ after_false_destroy do
19
+ # do blabla
20
+ end
21
+ end
22
+
23
+ orgunit = Orgunit.first
24
+ orgunit.false_destroy
25
+ ```
26
+
27
+ ## Config
28
+
29
+ you can config DB column_name and when_name as the db column name
30
+
31
+ column_name: destroyed mark column, default named deleted
32
+
33
+ when_name: false destroy time, default named deleted_at
34
+
35
+ ```ruby
36
+ FalseDestroy.column_name = 'destroyed'
37
+ FalseDestroy.when_name = 'destroyed_at'
38
+ ```
39
+
40
+ That's ALL, Enjoy it!!!
data/Rakefile ADDED
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env rake
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require 'active_model'
4
+ require 'active_record'
5
+ require 'rails'
6
+ require 'false_destroy'
7
+
8
+ begin
9
+ require 'bundler/setup'
10
+ rescue LoadError
11
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
12
+ end
13
+ begin
14
+ require 'rdoc/task'
15
+ rescue LoadError
16
+ require 'rdoc/rdoc'
17
+ require 'rake/rdoctask'
18
+ RDoc::Task = Rake::RDocTask
19
+ end
20
+
21
+ RDoc::Task.new(:rdoc) do |rdoc|
22
+ rdoc.rdoc_dir = 'rdoc'
23
+ rdoc.title = 'FalseDestroy'
24
+ rdoc.options << '--line-numbers'
25
+ rdoc.rdoc_files.include('README.md')
26
+ rdoc.rdoc_files.include('lib/**/*.rb')
27
+ end
28
+
29
+ # Bundler::GemHelper.install_tasks
30
+
31
+ require 'rake/testtask'
32
+
33
+ Rake::TestTask.new(:spec) do |t|
34
+ t.libs << 'lib'
35
+ t.libs << 'spec'
36
+ t.pattern = 'sepc/**/*_spec.rb'
37
+ t.verbose = false
38
+ end
39
+
40
+ task :build do
41
+ system "gem build false_destroy.gemspec"
42
+ end
43
+
44
+ task :install => :build do
45
+ system "gem install false_destroy-#{FalseDestroy::VERSION}.gem"
46
+ end
47
+
48
+ task :release => :build do
49
+ puts "Tagging #{FalseDestroy::VERSION}..."
50
+ system "git tag -a #{FalseDestroy::VERSION} -m 'Tagging #{FalseDestroy::VERSION}'"
51
+ puts "Pushing to Github..."
52
+ system "git push --tags"
53
+ puts "Pushing to rubygems.org..."
54
+ system "gem push false_destroy-#{FalseDestroy::VERSION}.gem"
55
+ end
56
+
57
+ task :default => :spec
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,46 @@
1
+ #encoding:utf-8
2
+ require 'version'
3
+
4
+ module FalseDestroy
5
+
6
+ mattr_accessor :column_name
7
+ self.column_name = 'deleted'
8
+ mattr_accessor :when_name
9
+ self.when_name = 'deleted_at'
10
+
11
+ module Callbacks
12
+ def self.included(base)
13
+ base.extend ClassMethods
14
+ base.class_eval {
15
+ include InstanceMethods
16
+ define_model_callbacks :false_destroy, :only => :after
17
+ }
18
+ end
19
+
20
+ module ClassMethods
21
+ # Nothing
22
+ end
23
+
24
+ module InstanceMethods
25
+ def false_destroy
26
+ name = FalseDestroy.column_name
27
+ _when = FalseDestroy.when_name
28
+ self.send("#{name}=",true) if self.respond_to? name
29
+ self.send("#{_when}=",Time.now) if self.respond_to? _when
30
+ self.save
31
+ run_callbacks :false_destroy
32
+ end
33
+
34
+ def false_destroy!
35
+ name = FalseDestroy.column_name
36
+ _when = FalseDestroy.when_name
37
+ self.send("#{name}=",true) if self.respond_to? name
38
+ self.send("#{_when}=",Time.now) if self.respond_to? _when
39
+ self.save!
40
+ run_callbacks :false_destroy
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ ActiveRecord::Base.send :include, FalseDestroy::Callbacks
data/lib/version.rb ADDED
@@ -0,0 +1,4 @@
1
+ #encoding:utf-8
2
+ module FalseDestroy
3
+ VERSION = File.read File.expand_path("../../VERSION",__FILE__)
4
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: false_destroy
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - wxianfeng
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: when mark a record deleted in DB, then run callback after_false_destroy
31
+ like after_destroy in rails
32
+ email:
33
+ - wang.fl1429@gmail.com
34
+ executables: []
35
+ extensions: []
36
+ extra_rdoc_files: []
37
+ files:
38
+ - README.md
39
+ - VERSION
40
+ - LICENSE.txt
41
+ - Rakefile
42
+ - lib/false_destroy.rb
43
+ - lib/version.rb
44
+ homepage: http://github.com/wxianfeng/false_destroy
45
+ licenses: []
46
+ post_install_message: ! " false_destroy is a tool for ActiveRecord callback.\n when
47
+ mark a record deleted in DB, then run callback after_false_destroy like after_destroy
48
+ in rails, writen in Ruby.\n \n http://github.com/wxianfeng/false_destroy\n\n Enjoy!\n\n
49
+ \ wxianfeng (wang.fl1429@gmail.com)\n\n"
50
+ rdoc_options: []
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
+ version: '0'
59
+ segments:
60
+ - 0
61
+ hash: 2836972165828198916
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: 1.3.6
68
+ requirements: []
69
+ rubyforge_project:
70
+ rubygems_version: 1.8.24
71
+ signing_key:
72
+ specification_version: 3
73
+ summary: after_false_destroy callback
74
+ test_files: []