acts_as_removable 1.0.0 → 3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1fa206ffd887f93f41139a14651c3743e80b5c74
4
- data.tar.gz: 2fb4a88e148d300436f2a24e5bfb8b25ec8f4ba6
2
+ SHA256:
3
+ metadata.gz: e50fc04fd2ee6847e478c891ef359c65b221e3bd95f5bbcb5b7ea10235873219
4
+ data.tar.gz: 4efcf86b9ebd4334e8dba4f8c43a70d45559c671ccb41ec08e43e7bdbe5d4523
5
5
  SHA512:
6
- metadata.gz: 1c56210aa89a186e4ac278302b2cc5ec58c95d86d60879a34b9a1c03f1f703eaa65b9a43701bf03b234362b5096fa1697da3fb3c6d910fac7673e1df5ed09ecc
7
- data.tar.gz: e5893b0432d55638f884d6b6f264746c0cc22632929b76fa5b15e4994cd1327b1a38e699d08ee3be0b8642bc5645067c7ce16cd9d0474ed9d0bf7c93dcf8ea36
6
+ metadata.gz: 0c9fa4c138b9d5e0cfb9759388e7599f3802276554b918bc7688cb572007bc49a6d6f579e2e7de6e87ff7c5d55aa0aae978208c7b0a97d95e265bb338de7e025
7
+ data.tar.gz: dfb8cdee8cb63d370a46f71cc377124b20901cf295e8cfa83468cab6152446fd7757b40b9073cf7e0d096c39461561b0d7df7e837336db5a5c1d1316b6c92005
@@ -0,0 +1,24 @@
1
+ require:
2
+ - rubocop-performance
3
+
4
+ AllCops:
5
+ TargetRubyVersion: 2.4
6
+
7
+ Layout/AlignHash:
8
+ EnforcedHashRocketStyle: table
9
+ EnforcedColonStyle: table
10
+
11
+ Metrics/LineLength:
12
+ Max: 120
13
+
14
+ Metrics/AbcSize:
15
+ Enabled: false
16
+
17
+ Metrics/MethodLength:
18
+ Enabled: false
19
+
20
+ Metrics/BlockLength:
21
+ Enabled: false
22
+
23
+ Style/Documentation:
24
+ Enabled: false
@@ -1,7 +1,25 @@
1
+ sudo: false
2
+
1
3
  language: ruby
4
+
2
5
  rvm:
3
- - 1.9.3
4
- - 2.0.0
5
- - 2.1.0
6
- - 2.1.1
7
- - 2.1.2
6
+ - 2.5.8
7
+ - 2.6.6
8
+ - 2.7.2
9
+
10
+ gemfile:
11
+ - gemfiles/rails52
12
+ - gemfiles/rails60
13
+ - gemfiles/rails61
14
+
15
+ matrix:
16
+ exclude:
17
+ - rvm: 2.5.8
18
+ gemfile: gemfiles/rails61
19
+ - rvm: 2.7.2
20
+ gemfile: gemfiles/rails52
21
+
22
+ script: bundle exec rake spec
23
+
24
+ before_install:
25
+ - gem install bundler -v '~> 2.0'
@@ -0,0 +1,21 @@
1
+ Changelog
2
+ ===
3
+
4
+ #### Unreleased
5
+
6
+ #### 3.1.0 (2020-12-10)
7
+ * Support for Rails 6.1.0
8
+ * Update travis config
9
+ * Reduce travis build matrix to save time and speed up CI
10
+
11
+ #### 3.0.1 (2019-11-06)
12
+ * Fix support for Rails 6.0.X patch level releases
13
+
14
+ #### 3.0.0 (2019-08-26)
15
+ * Support for Rails 6.0.0
16
+ * Drop support for Rails < 5.0.0
17
+ * Unpin bundler gem (development dependency)
18
+ * Cleanup gemspec
19
+ * Remove .ruby-version file
20
+ * Update copyright
21
+ * Add this Changelog
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in acts_as_removable.gemspec
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 SIC! Software GmbH
1
+ Copyright (c) 2019 SIC! Software GmbH
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -37,13 +37,6 @@ class MyModel < ActiveRecord::Base
37
37
  end
38
38
  ```
39
39
 
40
- It's possible to add a default scope with the active (not removed) records:
41
- ```ruby
42
- class MyModel < ActiveRecord::Base
43
- acts_as_removable with_default_scope: true
44
- end
45
- ```
46
-
47
40
  And you can use callbacks:
48
41
  ```ruby
49
42
  class MyModel < ActiveRecord::Base
data/Rakefile CHANGED
@@ -1,7 +1,9 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
2
4
 
3
5
  require 'rspec/core'
4
6
  require 'rspec/core/rake_task'
5
7
  RSpec::Core::RakeTask.new(:spec)
6
8
 
7
- task :default => :spec
9
+ task default: :spec
@@ -1,28 +1,32 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'English'
4
6
  require 'acts_as_removable/version'
5
7
 
6
8
  Gem::Specification.new do |spec|
7
- spec.name = "acts_as_removable"
9
+ spec.name = 'acts_as_removable'
8
10
  spec.version = ActsAsRemovable::VERSION
9
- spec.authors = ["Florian Schwab", "Erik Ernst"]
10
- spec.email = ["florian.schwab@sic-software.com"]
11
- spec.description = %q{Simplifies handling of pseudo removed records}
12
- spec.summary = %q{Simplifies handling of pseudo removed records}
13
- spec.homepage = "https://github.com/SICSoftwareGmbH/acts_as_removable"
14
- spec.license = "MIT"
11
+ spec.authors = ['Florian Schwab', 'Erik-B. Ernst']
12
+ spec.email = ['florian.schwab@sic.software', 'erik.ernst@sic.software']
13
+ spec.description = 'Simplifies handling of pseudo removed records.'
14
+ spec.summary = 'Simplifies handling of pseudo removed records.'
15
+ spec.homepage = 'https://github.com/SICSoftwareGmbH/acts_as_removable'
16
+ spec.license = 'MIT'
15
17
 
16
- spec.files = `git ls-files`.split($/)
18
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
19
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
21
+ spec.require_paths = ['lib']
20
22
 
21
- spec.add_dependency 'activesupport', '> 4.0.0'
22
- spec.add_dependency 'activerecord', '> 4.0.0'
23
+ spec.add_dependency 'activerecord', '>= 5.0', '< 6.2'
24
+ spec.add_dependency 'activesupport', '>= 5.0', '< 6.2'
23
25
 
24
- spec.add_development_dependency 'bundler', '~> 1.3'
26
+ spec.add_development_dependency 'bundler', '~> 2.0'
25
27
  spec.add_development_dependency 'rake'
26
28
  spec.add_development_dependency 'rspec'
29
+ spec.add_development_dependency 'rubocop'
30
+ spec.add_development_dependency 'rubocop-performance'
27
31
  spec.add_development_dependency 'sqlite3'
28
32
  end
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rails-menu-manager.gemspec
4
+ gemspec path: '..'
5
+
6
+
7
+ gem 'railties', '~> 5.2'
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rails-menu-manager.gemspec
4
+ gemspec path: '..'
5
+
6
+
7
+ gem 'railties', '~> 6.0'
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rails-menu-manager.gemspec
4
+ gemspec path: '..'
5
+
6
+
7
+ gem 'railties', '~> 6.1'
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support/concern'
2
4
  require 'active_record'
3
- require "acts_as_removable/version"
5
+ require 'acts_as_removable/version'
4
6
 
5
7
  module ActsAsRemovable
6
8
  extend ActiveSupport::Concern
@@ -10,88 +12,73 @@ module ActsAsRemovable
10
12
  #
11
13
  # acts_as_removable
12
14
  # acts_as_removable column_name: 'other_column_name'
13
- # acts_as_removable with_default_scope: true
14
15
  #
15
16
  # ===== Options
16
17
  #
17
18
  # * <tt>:column_name</tt> - A symbol or string with the column to use for removal timestamp.
18
- # * <tt>:with_default_scope</tt> - A boolean indicating to set a default scope with only active (not removed) records
19
19
  def acts_as_removable(options = {})
20
20
  _acts_as_removable_options.merge!(options)
21
21
 
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)
22
+ scope :removed, lambda {
23
+ where(all.table[_acts_as_removable_options[:column_name]].not_eq(nil).to_sql)
26
24
  }
27
25
 
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)
26
+ scope :actives, lambda {
27
+ where(all.table[_acts_as_removable_options[:column_name]].eq(nil).to_sql)
32
28
  }
33
29
 
34
- default_scope -> {where(all.table[_acts_as_removable_options[:column_name]].eq(nil).to_sql)} if _acts_as_removable_options[:with_default_scope]
35
-
36
30
  define_model_callbacks :remove, :unremove
37
31
 
38
32
  class_eval do
39
33
  def self.before_remove(*args, &block)
40
- set_callback :remove, :before, *args, &block
34
+ set_callback(:remove, :before, *args, &block)
41
35
  end
42
36
 
43
37
  def self.after_remove(*args, &block)
44
- set_callback :remove, :after, *args, &block
38
+ set_callback(:remove, :after, *args, &block)
45
39
  end
46
40
 
47
41
  def self.before_unremove(*args, &block)
48
- set_callback :unremove, :before, *args, &block
42
+ set_callback(:unremove, :before, *args, &block)
49
43
  end
50
44
 
51
45
  def self.after_unremove(*args, &block)
52
- set_callback :unremove, :after, *args, &block
46
+ set_callback(:unremove, :after, *args, &block)
53
47
  end
54
48
 
55
49
  def removed?
56
50
  send(self.class._acts_as_removable_options[:column_name]).present?
57
51
  end
58
52
 
59
- def remove(options={})
53
+ def remove(options = {})
60
54
  _update_remove_attribute(:remove, Time.now, false, options)
61
55
  end
62
56
 
63
- def remove!(options={})
57
+ def remove!(options = {})
64
58
  _update_remove_attribute(:remove, Time.now, true, options)
65
59
  end
66
60
 
67
- def unremove(options={})
61
+ def unremove(options = {})
68
62
  _update_remove_attribute(:unremove, nil, false, options)
69
63
  end
70
64
 
71
- def unremove!(options={})
65
+ def unremove!(options = {})
72
66
  _update_remove_attribute(:unremove, nil, true, options)
73
67
  end
74
68
 
75
- def _update_remove_attribute(callback, value, with_bang=false, options={})
76
- run_callbacks callback.to_sym do
77
- send("#{self.class._acts_as_removable_options[:column_name]}=", value)
78
- with_bang ? save!(options) : save(options)
69
+ def _update_remove_attribute(callback, value, with_bang = false, options = {})
70
+ self.class.transaction do
71
+ run_callbacks callback.to_sym do
72
+ send("#{self.class._acts_as_removable_options[:column_name]}=", value)
73
+ with_bang ? save!(options) : save(options)
74
+ end
79
75
  end
80
76
  end
81
77
  end
82
78
  end
83
79
 
84
80
  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
81
+ @_acts_as_removable_options ||= { column_name: 'removed_at' }
95
82
  end
96
83
  end
97
84
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActsAsRemovable
2
- VERSION = '1.0.0'
4
+ VERSION = '3.1.0'
3
5
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'acts_as_removable' do
4
6
  class MyModel < ActiveRecord::Base
5
- acts_as_removable with_default_scope: true
7
+ acts_as_removable
6
8
  attr_accessor :callback_before_remove, :callback_after_remove, :callback_before_unremove, :callback_after_unremove
7
9
  before_remove do |r|
8
10
  r.callback_before_remove = true
@@ -26,10 +28,10 @@ describe 'acts_as_removable' do
26
28
  before do
27
29
  # setup database
28
30
  db_file = File.expand_path(File.join(File.dirname(__FILE__), '..', 'tmp', 'acts_as_removable.db'))
29
- Dir::mkdir(File.dirname(db_file)) unless File.exists?(File.dirname(db_file))
31
+ Dir.mkdir(File.dirname(db_file)) unless File.exist?(File.dirname(db_file))
30
32
  ActiveRecord::Base.establish_connection(
31
- :adapter => 'sqlite3',
32
- :database => "#{File.expand_path(File.join(File.dirname(__FILE__), '..'))}/tmp/acts_as_removable.db"
33
+ adapter: 'sqlite3',
34
+ database: "#{File.expand_path(File.join(File.dirname(__FILE__), '..'))}/tmp/acts_as_removable.db"
33
35
  )
34
36
  ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS 'my_models'")
35
37
  ActiveRecord::Base.connection.create_table(:my_models) do |t|
@@ -62,7 +64,7 @@ describe 'acts_as_removable' do
62
64
  MySecondModel.create!
63
65
  MySecondModel.create!.remove!
64
66
 
65
- expect(MyModel.count).to be(1)
67
+ expect(MyModel.count).to be(2)
66
68
  expect(MyModel.actives.count).to be(1)
67
69
  expect(MyModel.removed.count).to be(1)
68
70
  expect(MyModel.unscoped.count).to be(2)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rubygems'
2
4
  require 'bundler/setup'
3
5
 
metadata CHANGED
@@ -1,58 +1,70 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_removable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Schwab
8
- - Erik Ernst
8
+ - Erik-B. Ernst
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-16 00:00:00.000000000 Z
12
+ date: 2020-12-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: activesupport
15
+ name: activerecord
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 4.0.0
20
+ version: '5.0'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '6.2'
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
- - - ">"
28
+ - - ">="
26
29
  - !ruby/object:Gem::Version
27
- version: 4.0.0
30
+ version: '5.0'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '6.2'
28
34
  - !ruby/object:Gem::Dependency
29
- name: activerecord
35
+ name: activesupport
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
32
- - - ">"
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ - - "<"
33
42
  - !ruby/object:Gem::Version
34
- version: 4.0.0
43
+ version: '6.2'
35
44
  type: :runtime
36
45
  prerelease: false
37
46
  version_requirements: !ruby/object:Gem::Requirement
38
47
  requirements:
39
- - - ">"
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '5.0'
51
+ - - "<"
40
52
  - !ruby/object:Gem::Version
41
- version: 4.0.0
53
+ version: '6.2'
42
54
  - !ruby/object:Gem::Dependency
43
55
  name: bundler
44
56
  requirement: !ruby/object:Gem::Requirement
45
57
  requirements:
46
58
  - - "~>"
47
59
  - !ruby/object:Gem::Version
48
- version: '1.3'
60
+ version: '2.0'
49
61
  type: :development
50
62
  prerelease: false
51
63
  version_requirements: !ruby/object:Gem::Requirement
52
64
  requirements:
53
65
  - - "~>"
54
66
  - !ruby/object:Gem::Version
55
- version: '1.3'
67
+ version: '2.0'
56
68
  - !ruby/object:Gem::Dependency
57
69
  name: rake
58
70
  requirement: !ruby/object:Gem::Requirement
@@ -81,6 +93,34 @@ dependencies:
81
93
  - - ">="
82
94
  - !ruby/object:Gem::Version
83
95
  version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rubocop
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rubocop-performance
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
84
124
  - !ruby/object:Gem::Dependency
85
125
  name: sqlite3
86
126
  requirement: !ruby/object:Gem::Requirement
@@ -95,21 +135,26 @@ dependencies:
95
135
  - - ">="
96
136
  - !ruby/object:Gem::Version
97
137
  version: '0'
98
- description: Simplifies handling of pseudo removed records
138
+ description: Simplifies handling of pseudo removed records.
99
139
  email:
100
- - florian.schwab@sic-software.com
140
+ - florian.schwab@sic.software
141
+ - erik.ernst@sic.software
101
142
  executables: []
102
143
  extensions: []
103
144
  extra_rdoc_files: []
104
145
  files:
105
146
  - ".gitignore"
106
- - ".ruby-version"
147
+ - ".rubocop.yml"
107
148
  - ".travis.yml"
149
+ - Changelog.md
108
150
  - Gemfile
109
151
  - LICENSE
110
152
  - README.md
111
153
  - Rakefile
112
154
  - acts_as_removable.gemspec
155
+ - gemfiles/rails52
156
+ - gemfiles/rails60
157
+ - gemfiles/rails61
113
158
  - lib/acts_as_removable.rb
114
159
  - lib/acts_as_removable/version.rb
115
160
  - spec/acts_as_removable_spec.rb
@@ -133,11 +178,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
178
  - !ruby/object:Gem::Version
134
179
  version: '0'
135
180
  requirements: []
136
- rubyforge_project:
137
- rubygems_version: 2.4.3
181
+ rubygems_version: 3.1.4
138
182
  signing_key:
139
183
  specification_version: 4
140
- summary: Simplifies handling of pseudo removed records
184
+ summary: Simplifies handling of pseudo removed records.
141
185
  test_files:
142
186
  - spec/acts_as_removable_spec.rb
143
187
  - spec/spec_helper.rb
@@ -1 +0,0 @@
1
- ruby-2.0.0