acts_as_removable 0.9.4 → 0.9.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dcc13acf0ef4676070b9c1b58df18af874be7940
4
- data.tar.gz: f25399054b7cab95fd0489cd0e88a6685a90997d
3
+ metadata.gz: b2e52df51683c7203a4a78ed2f72ce9b5c72d464
4
+ data.tar.gz: 9a39dbee521544bdcdae76250996c6dcb12e1fbf
5
5
  SHA512:
6
- metadata.gz: d390b4ccf8503d4554d1efb90a750675d83af09a65cb25b578d04996031f328ef904f3a82721bbde4727f4919a7b06d28ab97f87b2d3869a9693bc80088e8daa
7
- data.tar.gz: 0e79c8d9d8ec1ac4d9e56aa111b16965aaa4455d734e0c057ca8dda37d541073ea3226d81093a231f6b2da1ad5d28375b18a71040b899117f4d035f38d58ffda
6
+ metadata.gz: 6f16a0de9785d79ffd75790c7b4872e6d7119fc9afc474547fa3aaaa6815e95e2de6e0bc5dbe12384d43864c29e44d6c064649c2fe6cc3ebac76358f103cc9a7
7
+ data.tar.gz: 4e0651c43989baa13f8624f58513ce2df8adbd8c2b55a75e99f983006c6669a9e9448168e5570cea926c2e131ad4d32ecd835fa6b4b7eef8f24647a6122bf1ed
@@ -1,3 +1,3 @@
1
1
  module ActsAsRemovable
2
- VERSION = '0.9.4'
2
+ VERSION = '0.9.5'
3
3
  end
@@ -5,12 +5,7 @@ require "acts_as_removable/version"
5
5
  module ActsAsRemovable
6
6
  extend ActiveSupport::Concern
7
7
 
8
- included do
9
- extend(ClassMethods)
10
- end
11
-
12
8
  module ClassMethods
13
-
14
9
  # Add ability to remove ActiveRecord instances
15
10
  #
16
11
  # acts_as_removable
@@ -21,29 +16,26 @@ module ActsAsRemovable
21
16
  #
22
17
  # * <tt>:column_name</tt> - A symbol or string with the column to use for removal timestamp.
23
18
  # * <tt>:without_default_scope</tt> - A boolean indicating to not set a default scope.
24
- def acts_as_removable(options={})
25
- self.class_eval do
26
- @_acts_as_removable_column_name = (options[:column_name] || 'removed_at').to_s
27
- def self._acts_as_removable_column_name
28
- @_acts_as_removable_column_name
29
- end
19
+ def acts_as_removable(options = {})
20
+ _acts_as_removable_options.merge!(options)
30
21
 
31
- scope :removed, -> {
32
- removed_at_column_name = self._acts_as_removable_column_name
33
- query = where(all.table[removed_at_column_name].not_eq(nil).to_sql)
34
- ::ActsAsRemovable.removable_where_values(query, removed_at_column_name, all.table[removed_at_column_name].eq(nil).to_sql)
35
- }
22
+ scope :removed, -> {
23
+ removed_at_column_name = _acts_as_removable_options[:column_name]
24
+ query = where(all.table[removed_at_column_name].not_eq(nil).to_sql)
25
+ _removable_where_values(query, removed_at_column_name, all.table[removed_at_column_name].eq(nil).to_sql)
26
+ }
36
27
 
37
- scope :actives, -> {
38
- removed_at_column_name = self._acts_as_removable_column_name
39
- query = where(all.table[removed_at_column_name].eq(nil).to_sql)
40
- ::ActsAsRemovable.removable_where_values(query, removed_at_column_name, all.table[removed_at_column_name].not_eq(nil).to_sql)
41
- }
28
+ scope :actives, -> {
29
+ removed_at_column_name = _acts_as_removable_options[:column_name]
30
+ query = where(all.table[removed_at_column_name].eq(nil).to_sql)
31
+ _removable_where_values(query, removed_at_column_name, all.table[removed_at_column_name].not_eq(nil).to_sql)
32
+ }
42
33
 
43
- default_scope -> {where(all.table[self._acts_as_removable_column_name].eq(nil).to_sql)} unless options[:without_default_scope]
34
+ default_scope -> {where(all.table[_acts_as_removable_options[:column_name]].eq(nil).to_sql)} unless _acts_as_removable_options[:without_default_scope]
44
35
 
45
- define_model_callbacks :remove, :unremove
36
+ define_model_callbacks :remove, :unremove
46
37
 
38
+ class_eval do
47
39
  def self.before_remove(*args, &block)
48
40
  set_callback :remove, :before, *args, &block
49
41
  end
@@ -61,7 +53,7 @@ module ActsAsRemovable
61
53
  end
62
54
 
63
55
  def removed?
64
- self.send(self.class._acts_as_removable_column_name).present?
56
+ send(self.class._acts_as_removable_options[:column_name]).present?
65
57
  end
66
58
 
67
59
  def remove(options={})
@@ -80,23 +72,27 @@ module ActsAsRemovable
80
72
  _update_remove_attribute(:unremove, nil, true, options)
81
73
  end
82
74
 
83
- private
84
-
85
75
  def _update_remove_attribute(callback, value, with_bang=false, options={})
86
76
  run_callbacks callback.to_sym do
87
- self.send("#{self.class._acts_as_removable_column_name}=", value)
88
- with_bang ? self.save!(options) : self.save(options)
77
+ send("#{self.class._acts_as_removable_options[:column_name]}=", value)
78
+ with_bang ? save!(options) : save(options)
89
79
  end
90
80
  end
91
81
  end
92
82
  end
93
- end
94
83
 
95
- # Helps deleting where statements from query
96
- def self.removable_where_values(query, column_name, remove_where)
97
- query = query.with_default_scope if query.respond_to?(:with_default_scope)
98
- query.where_values.delete(remove_where)
99
- query
84
+ def _acts_as_removable_options
85
+ @_acts_as_removable_options ||= {
86
+ column_name: 'removed_at'
87
+ }
88
+ end
89
+
90
+ # Delete where statements from query
91
+ def _removable_where_values(query, column_name, remove_where)
92
+ query = query.with_default_scope if query.respond_to?(:with_default_scope)
93
+ query.where_values.delete(remove_where)
94
+ query
95
+ end
100
96
  end
101
97
  end
102
98
 
@@ -28,7 +28,7 @@ describe 'acts_as_removable' do
28
28
  db_file = File.expand_path(File.join(File.dirname(__FILE__), '..', 'tmp', 'acts_as_removable.db'))
29
29
  Dir::mkdir(File.dirname(db_file)) unless File.exists?(File.dirname(db_file))
30
30
  ActiveRecord::Base.establish_connection(
31
- :adapter => "sqlite3",
31
+ :adapter => 'sqlite3',
32
32
  :database => "#{File.expand_path(File.join(File.dirname(__FILE__), '..'))}/tmp/acts_as_removable.db"
33
33
  )
34
34
  ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS 'my_models'")
@@ -42,7 +42,7 @@ describe 'acts_as_removable' do
42
42
  end
43
43
  end
44
44
 
45
- it "test column and check method" do
45
+ it 'test column and check method' do
46
46
  [[MyModel.create!, :removed_at], [MySecondModel.create!, :use_this_column]].each do |r, column_name|
47
47
  r.removed?.should be_false
48
48
  r.send(column_name).should be_nil
@@ -53,7 +53,7 @@ describe 'acts_as_removable' do
53
53
  end
54
54
  end
55
55
 
56
- it "test scopes" do
56
+ it 'test scopes' do
57
57
  MyModel.delete_all
58
58
  MySecondModel.delete_all
59
59
 
@@ -73,7 +73,7 @@ describe 'acts_as_removable' do
73
73
  MySecondModel.unscoped.count.should be(2)
74
74
  end
75
75
 
76
- it "test callbacks" do
76
+ it 'test callbacks' do
77
77
  r = MyModel.create!
78
78
  r.callback_before_remove.should be_false
79
79
  r.callback_after_remove.should be_false
@@ -93,6 +93,5 @@ describe 'acts_as_removable' do
93
93
  r.callback_after_remove.should be_true
94
94
  r.callback_before_unremove.should be_true
95
95
  r.callback_after_unremove.should be_true
96
-
97
96
  end
98
97
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_removable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Schwab
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-12 00:00:00.000000000 Z
12
+ date: 2014-07-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport