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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NmQxYjJjY2RlMjFhM2EzYTg2MjdlYjkyOWRmYjMwZmQxZTZkMTBiOA==
5
- data.tar.gz: !binary |-
6
- Y2Y1MWM5ZjgyOGI1YTcyZGJhZmJjNWVmZmQ4ZDAxNzE1ZDk4NDViMA==
7
- !binary "U0hBNTEy":
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
- task :default do |t|
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 'bundle install && bundle exec rake appraise'
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
@@ -1,3 +1,3 @@
1
1
  module MarkOnly
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
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.1
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-07-31 00:00:00.000000000 Z
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
- - !ruby/object:Gem::Dependency
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: '0'
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.0.6
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.