mark_only 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/README.md +10 -0
- data/Rakefile +7 -6
- data/lib/mark_only/version.rb +1 -1
- data/lib/mark_only.rb +11 -1
- metadata +20 -50
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
YjBlODY0NmU1MWMxM2JmNTdiNTY5ZmRhMmI4ZTE2ZDRlYjhiZTExMjc4NDgz
|
10
|
-
MDUyNDJmYTdiYTJhNDdjMDA2NmE4ODk4N2UxZTdmNjBkMmJlZmYxODFhMGQ4
|
11
|
-
MzI5YjhkYmRmMjU4ZTM1ZTU4Mjk2ZWU2MjExNzE4NGNjZmQyYzQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YjdjOGViMjkwNGFjNTJhMDMzOTZkMTNiYWRhYWRiYzg4NWNlNTYwNTNkNTkz
|
14
|
-
OTE1YTRkMmIzMTgyNTE4MjBhYjFiYTg4NGY5NDQ4ODNhZWIzMzk4ZTFlZTMz
|
15
|
-
ODRkN2I1YzYyMDA5MzcyMzdmN2E4MmNjNmQ1NjM5NTNmNjZmYWI=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 741113cdd65de5a996c22b1bcbe5ab641334c9ef
|
4
|
+
data.tar.gz: 58cae292abdadb6e024a721795e3bef565a36abd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: da3d79917fea6c5e8f31c1241e109839deadd66d92fde220c97189d845f93c49cde808a9b1efe25675b9a77d157c0210a0b0fba3ea3e010298741c1f30995955
|
7
|
+
data.tar.gz: 6a8e0952471a6cc9ab2964b6cebaf7ba7c1d3a31b078b3f8a688580639d32889990692acda27b08fb34a026d7a09a8d0b44a7b51ec320d145cc5205cc26a0b8f
|
data/README.md
CHANGED
@@ -71,6 +71,16 @@ class Client < ActiveRecord::Base
|
|
71
71
|
end
|
72
72
|
```
|
73
73
|
|
74
|
+
#### Disabling Globally
|
75
|
+
|
76
|
+
If you need to globally disable temporarily so that everything marked as mark_only will destroy/delete instead of work normally, which might be useful in a data cleanup script, use:
|
77
|
+
|
78
|
+
```ruby
|
79
|
+
MarkOnly.enabled = false
|
80
|
+
```
|
81
|
+
|
82
|
+
Note: that is an application-wide setting affecting all models that use mark_only, and may allow destruction of data you did not intend to destroy. Please be careful!
|
83
|
+
|
74
84
|
## Upgrading
|
75
85
|
|
76
86
|
* v0.0.1 -> v1.0.x: `restore!` no longer supported; the workaround is to use SQL to change a record's mark column to some value other than MarkOnly.deleted_value. Similarly, if you need to really delete or destroy a row in the database corresponding to the record, use SQL.
|
data/Rakefile
CHANGED
@@ -2,14 +2,15 @@ require 'bundler/setup'
|
|
2
2
|
require 'bundler/gem_tasks'
|
3
3
|
require 'appraisal'
|
4
4
|
|
5
|
-
|
5
|
+
# Override the default task
|
6
|
+
task :default => [] # Just in case it hasn't already been set
|
7
|
+
Rake::Task[:default].clear
|
8
|
+
task :default => :appraise
|
9
|
+
|
10
|
+
task :appraise do |t|
|
6
11
|
if ENV['BUNDLE_GEMFILE'] =~ /gemfiles/
|
7
12
|
load 'test/mark_only_test.rb'
|
8
13
|
else
|
9
|
-
exec '
|
14
|
+
exec 'rake appraisal:install && rake appraisal'
|
10
15
|
end
|
11
16
|
end
|
12
|
-
|
13
|
-
task :appraise => ['appraisal:install'] do |t|
|
14
|
-
exec 'bundle install && bundle exec rake appraisal'
|
15
|
-
end
|
data/lib/mark_only/version.rb
CHANGED
data/lib/mark_only.rb
CHANGED
@@ -2,7 +2,7 @@ require 'mark_only/version'
|
|
2
2
|
|
3
3
|
module MarkOnly
|
4
4
|
class << self
|
5
|
-
attr_accessor :debug, :deleted_value
|
5
|
+
attr_accessor :debug, :deleted_value, :enabled
|
6
6
|
def configure(&blk)
|
7
7
|
class_eval(&blk)
|
8
8
|
end
|
@@ -16,6 +16,7 @@ module MarkOnly
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def delete(id_or_array)
|
19
|
+
return super(id_or_array) unless !!::MarkOnly.enabled
|
19
20
|
logger.debug("will not #{self}.delete #{id_or_array.inspect}", e) if MarkOnly.debug
|
20
21
|
c = "#{quoted_table_name}.#{connection.quote_column_name self.mark_only_column}"
|
21
22
|
self.
|
@@ -25,6 +26,7 @@ module MarkOnly
|
|
25
26
|
end
|
26
27
|
|
27
28
|
def delete_all(conditions = nil)
|
29
|
+
return super(conditions) unless !!::MarkOnly.enabled
|
28
30
|
logger.debug("will not #{self}.delete_all", e) if MarkOnly.debug
|
29
31
|
c = "#{quoted_table_name}.#{connection.quote_column_name self.mark_only_column}"
|
30
32
|
(conditions ? self.where(conditions) : self).
|
@@ -34,17 +36,20 @@ module MarkOnly
|
|
34
36
|
end
|
35
37
|
|
36
38
|
def destroy
|
39
|
+
return super unless !!::MarkOnly.enabled
|
37
40
|
logger.debug("will not delete #{self}", e) if MarkOnly.debug
|
38
41
|
update_mark_only_attribute_or_column(self.mark_only_column, MarkOnly.deleted_value) if !deleted? && persisted?
|
39
42
|
run_callbacks(:destroy) { delete }
|
40
43
|
end
|
41
44
|
|
42
45
|
def delete
|
46
|
+
return super unless !!::MarkOnly.enabled
|
43
47
|
logger.debug("will not delete #{self}", e) if MarkOnly.debug
|
44
48
|
update_mark_only_attribute_or_column(self.mark_only_column, MarkOnly.deleted_value) if !deleted? && persisted?
|
45
49
|
end
|
46
50
|
|
47
51
|
def destroyed?
|
52
|
+
return super unless !!::MarkOnly.enabled
|
48
53
|
self.send(self.mark_only_column.to_sym) == MarkOnly.deleted_value
|
49
54
|
end
|
50
55
|
alias :deleted? :destroyed?
|
@@ -55,6 +60,7 @@ module MarkOnlyRails4Extensions
|
|
55
60
|
extend ActiveSupport::Concern
|
56
61
|
|
57
62
|
def destroy!
|
63
|
+
return super unless !!::MarkOnly.enabled
|
58
64
|
update_mark_only_attribute_or_column(self.mark_only_column, MarkOnly.deleted_value) if !deleted? && persisted?
|
59
65
|
raise ActiveRecord::RecordNotDestroyed.new("#{self} is mark_only")
|
60
66
|
end
|
@@ -63,12 +69,14 @@ end
|
|
63
69
|
MarkOnly.configure do
|
64
70
|
self.debug = false
|
65
71
|
self.deleted_value = 'deleted'
|
72
|
+
self.enabled = true
|
66
73
|
end
|
67
74
|
|
68
75
|
class ActiveRecord::Relation
|
69
76
|
# don't use generic naming to try to avoid conflicts, since this isn't model class specific
|
70
77
|
alias_method :mark_only_orig_relation_delete_all, :delete_all
|
71
78
|
def delete_all(*args, &block)
|
79
|
+
return mark_only_orig_relation_delete_all(*args, &block) unless !!::MarkOnly.enabled
|
72
80
|
if klass.respond_to?(:mark_only?) && klass.mark_only?
|
73
81
|
logger.debug("will not #{self}.delete_all", e) if MarkOnly.debug
|
74
82
|
if args.length > 0 && block_given?
|
@@ -89,6 +97,7 @@ class ActiveRecord::Relation
|
|
89
97
|
# don't use generic naming to try to avoid conflicts, since this isn't model class specific
|
90
98
|
alias_method :mark_only_orig_relation_destroy_all, :destroy_all
|
91
99
|
def destroy_all(*args, &block)
|
100
|
+
return mark_only_orig_relation_destroy_all(*args, &block) unless !!::MarkOnly.enabled
|
92
101
|
if klass.respond_to?(:mark_only?) && klass.mark_only?
|
93
102
|
logger.debug("will not #{self}.destroy_all", e) if MarkOnly.debug
|
94
103
|
if args.length > 0 && block_given?
|
@@ -120,6 +129,7 @@ class ActiveRecord::Base
|
|
120
129
|
end
|
121
130
|
alias_method :mark_only_orig_delete, :delete
|
122
131
|
alias_method :mark_only_orig_destroy, :destroy
|
132
|
+
alias_method :mark_only_orig_destroyed?, :destroyed?
|
123
133
|
include MarkOnly
|
124
134
|
if defined?(ActiveRecord::VERSION::MAJOR) && ActiveRecord::VERSION::MAJOR > 3
|
125
135
|
alias_method :mark_only_orig_destroy!, :destroy!
|
metadata
CHANGED
@@ -1,85 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mark_only
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gary S. Weaver
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.1'
|
20
|
+
- - <
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '3.1'
|
30
|
+
- - <
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: activesupport
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- -
|
37
|
+
- - '>='
|
32
38
|
- !ruby/object:Gem::Version
|
33
39
|
version: '3.1'
|
40
|
+
- - <
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '5'
|
34
43
|
type: :runtime
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
|
-
- -
|
47
|
+
- - '>='
|
39
48
|
- !ruby/object:Gem::Version
|
40
49
|
version: '3.1'
|
41
|
-
-
|
42
|
-
name: appraisal
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ! '>='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ! '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: sqlite3
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ! '>='
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: bundler
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ! '>='
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ! '>='
|
50
|
+
- - <
|
81
51
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
52
|
+
version: '5'
|
83
53
|
description: Updates a specified column with an pre-configured value on delete/destroy.
|
84
54
|
Supports destroy hooks.
|
85
55
|
email:
|
@@ -102,17 +72,17 @@ require_paths:
|
|
102
72
|
- lib
|
103
73
|
required_ruby_version: !ruby/object:Gem::Requirement
|
104
74
|
requirements:
|
105
|
-
- -
|
75
|
+
- - '>='
|
106
76
|
- !ruby/object:Gem::Version
|
107
77
|
version: '0'
|
108
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
79
|
requirements:
|
110
|
-
- -
|
80
|
+
- - '>='
|
111
81
|
- !ruby/object:Gem::Version
|
112
82
|
version: 1.3.6
|
113
83
|
requirements: []
|
114
84
|
rubyforge_project:
|
115
|
-
rubygems_version: 2.
|
85
|
+
rubygems_version: 2.1.11
|
116
86
|
signing_key:
|
117
87
|
specification_version: 4
|
118
88
|
summary: Updates a specified column with an pre-configured value on delete/destroy.
|