mark_only 1.0.1 → 1.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.
- 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.
|