act_with_bag 1.0.4 → 1.1.1
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 +4 -4
- data/.github/workflows/rake.yml +22 -18
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/.watchr +29 -16
- data/Appraisals +12 -12
- data/Gemfile +6 -6
- data/MIT-LICENSE +1 -1
- data/README.md +18 -1
- data/Rakefile +5 -5
- data/act_with_bag.gemspec +20 -19
- data/gemfiles/rails_6.0.gemfile +2 -2
- data/gemfiles/rails_6.1.gemfile +2 -2
- data/lib/act_with_bag/version.rb +10 -10
- data/lib/act_with_bag.rb +27 -21
- data/test/accessor_test.rb +2 -6
- data/test/bag_boolean_test.rb +2 -6
- data/test/bag_test.rb +11 -13
- data/test/boolean_test.rb +5 -7
- data/test/clean_test.rb +2 -6
- data/test/delete_test.rb +6 -10
- data/test/internal/app/models/application_record.rb +3 -0
- data/test/internal/app/models/order.rb +7 -0
- data/test/internal/config/database.yml +3 -0
- data/test/internal/db/schema.rb +19 -0
- data/test/sti_test.rb +11 -15
- data/test/string_test.rb +3 -6
- data/test/test_helper.rb +11 -33
- data/test/type_test.rb +19 -8
- metadata +30 -22
- data/.rubocop.yml +0 -30
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4ecc3541b5c744c54c7f53770c3b7172e4935fb0d5f4b7e7edf39502e334ca6e
|
|
4
|
+
data.tar.gz: da6b991ddd14d98b4b079c258544b9fb4408d24f73553a796a71212c8865e23d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8a5960ac831f6404d46b1843933bdf533203917187244442e0c38f74c41bdcf39b5651d1fde36b02190a757a92ebbe5a4f7fb4ca638a1087b9d2d503c91d4044
|
|
7
|
+
data.tar.gz: 69ec721ff96ccbd202daf926127a2f484e47244af0c9bb6abac5cf799eb175c5ec50ae4c9cb053d6b935165e1494b17b5b8e1f44bee1e1a69a68a3cb51008fb6
|
data/.github/workflows/rake.yml
CHANGED
|
@@ -1,26 +1,30 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# see also https://github.com/whitequark/parser/blob/master/.github/workflows/test.yml
|
|
3
2
|
name: Rake
|
|
4
3
|
|
|
5
|
-
on: push
|
|
4
|
+
#on: [push, pull_request]
|
|
5
|
+
on: [push]
|
|
6
6
|
|
|
7
7
|
jobs:
|
|
8
8
|
test:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
strategy:
|
|
10
|
+
fail-fast: false
|
|
11
|
+
matrix:
|
|
12
|
+
# os: [ubuntu-latest, macos-latest]
|
|
13
|
+
os: [ubuntu-latest]
|
|
14
|
+
# Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
|
|
15
|
+
# ruby: [2.5, 2.6, 2.7, '3.0', head, jruby, jruby-head, truffleruby, truffleruby-head]
|
|
16
|
+
ruby: ["2.7.2", 3.1.0, head]
|
|
17
|
+
test_command: ["bundle exec rake test"]
|
|
18
|
+
runs-on: ${{ matrix.os }}
|
|
12
19
|
|
|
13
20
|
steps:
|
|
14
|
-
- uses: actions/checkout@
|
|
15
|
-
|
|
16
|
-
- name: Setup Ruby
|
|
17
|
-
# uses: actions/setup-ruby@v1
|
|
18
|
-
uses: ruby/setup-ruby@v1
|
|
21
|
+
- uses: actions/checkout@v2
|
|
22
|
+
- uses: ruby/setup-ruby@v1
|
|
19
23
|
with:
|
|
20
|
-
ruby-version:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
ruby-version: ${{ matrix.ruby }}
|
|
25
|
+
- name: Bundle install
|
|
26
|
+
run: |
|
|
27
|
+
bundle config path /home/runner/bundle
|
|
28
|
+
bundle install
|
|
29
|
+
bundle update
|
|
30
|
+
- run: ${{ matrix.test_command }}
|
data/.ruby-gemset
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
rails-
|
|
1
|
+
rails-7.0
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
ruby-
|
|
1
|
+
ruby-3.1.3
|
data/.watchr
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
TESTING = %w[test]
|
|
2
|
+
HH = "#" * 22 unless defined?(HH)
|
|
3
|
+
H = "#" * 5 unless defined?(H)
|
|
3
4
|
|
|
4
5
|
def usage
|
|
5
6
|
puts <<-EOS
|
|
@@ -14,35 +15,47 @@ def run(cmd)
|
|
|
14
15
|
system "/usr/bin/time --format '#{HH} Elapsed time %E' #{cmd}"
|
|
15
16
|
end
|
|
16
17
|
|
|
17
|
-
def run_it(type,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
def run_it(type, files)
|
|
19
|
+
files.split(" ").flatten.each do |file|
|
|
20
|
+
case type
|
|
21
|
+
when "test" then run %(bundle exec ruby -I test #{file})
|
|
22
|
+
# when 'spec'; run %(rspec -X #{file})
|
|
23
|
+
else; puts "#{H} unknown type: #{type}, file: #{file}"
|
|
24
|
+
end
|
|
22
25
|
end
|
|
23
26
|
end
|
|
24
27
|
|
|
25
28
|
def run_all_tests
|
|
26
29
|
puts "\n#{HH} Running all tests #{HH}\n"
|
|
27
|
-
|
|
30
|
+
TESTING.each { |dir| run "bundle exec rake #{dir}" if File.exist?(dir) }
|
|
28
31
|
end
|
|
29
32
|
|
|
30
33
|
def run_matching_files(base)
|
|
31
|
-
base = base.split(
|
|
32
|
-
|
|
34
|
+
base = base.split("_").first
|
|
35
|
+
TESTING.each { |type|
|
|
33
36
|
files = Dir["#{type}/**/*.rb"].select { |file| file =~ /#{base}_.*\.rb/ }
|
|
34
|
-
run_it type, files.join(
|
|
37
|
+
run_it type, files.join(" ") unless files.empty?
|
|
35
38
|
}
|
|
36
39
|
end
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
TESTING.each { |type|
|
|
39
42
|
watch("#{type}/#{type}_helper\.rb") { run_all_tests }
|
|
40
|
-
watch(
|
|
41
|
-
watch("#{type}/.*/*_#{type}\.rb")
|
|
43
|
+
watch("lib/.*\.rb") { run_all_tests }
|
|
44
|
+
watch("#{type}/.*/*_#{type}\.rb") { |match| run_it type, match[0] }
|
|
45
|
+
watch("#{type}/data/(.*)\.rb") { |match|
|
|
46
|
+
m1 = match[1]
|
|
47
|
+
run_matching_files("#{type}/#{m1}/#{m1}_#{type}.rb")
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
%w[rb erb haml slim].each { |type|
|
|
52
|
+
watch(".*/(.*)\.#{type}") { |match|
|
|
53
|
+
run_matching_files(match[1])
|
|
54
|
+
}
|
|
42
55
|
}
|
|
43
56
|
|
|
44
57
|
# Ctrl-\ or ctrl-4
|
|
45
|
-
|
|
58
|
+
Signal.trap("QUIT") { run_all_tests }
|
|
46
59
|
# Ctrl-C
|
|
47
|
-
|
|
60
|
+
Signal.trap("INT") { abort("Interrupted\n") }
|
|
48
61
|
usage
|
data/Appraisals
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
appraise
|
|
2
|
-
gem
|
|
3
|
-
gem
|
|
1
|
+
appraise "rails-6.1" do
|
|
2
|
+
gem "rails", "~> 6.1"
|
|
3
|
+
gem "dryer-config", "~> 6.0"
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
-
appraise
|
|
7
|
-
gem
|
|
8
|
-
gem
|
|
6
|
+
appraise "rails-6.0" do
|
|
7
|
+
gem "rails", "~> 6.0"
|
|
8
|
+
gem "dryer-config", "~> 6.0"
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
#appraise 'rails-5.2' do
|
|
11
|
+
# appraise 'rails-5.2' do
|
|
12
12
|
# gem 'rails', '~> 5.2.0'
|
|
13
13
|
# gem 'dryer-config', '~> 5.2.0'
|
|
14
|
-
#end
|
|
14
|
+
# end
|
|
15
15
|
|
|
16
|
-
#appraise 'rails-5.0' do
|
|
16
|
+
# appraise 'rails-5.0' do
|
|
17
17
|
# gem 'rails', '~> 5.0.0'
|
|
18
18
|
# gem 'dryer-config', '~> 5.0.0'
|
|
19
|
-
#end
|
|
19
|
+
# end
|
|
20
20
|
|
|
21
|
-
#appraise 'rails-4.1' do
|
|
21
|
+
# appraise 'rails-4.1' do
|
|
22
22
|
# gem 'rails', '= 4.1.1'
|
|
23
23
|
## gem 'dryer-config', '~> 5.1.0'
|
|
24
|
-
#end
|
|
24
|
+
# end
|
data/Gemfile
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
source
|
|
1
|
+
source "https://rubygems.org"
|
|
2
2
|
gemspec
|
|
3
3
|
|
|
4
|
-
gem
|
|
4
|
+
gem "rails"
|
|
5
5
|
|
|
6
6
|
group :test do
|
|
7
|
-
gem
|
|
8
|
-
gem
|
|
9
|
-
gem
|
|
10
|
-
gem
|
|
7
|
+
gem "observr"
|
|
8
|
+
gem "standard", require: false
|
|
9
|
+
gem "simplecov", require: false
|
|
10
|
+
gem "ricecream"
|
|
11
11
|
end
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -50,6 +50,23 @@ Using an "add_to_bag" in the subclass obsoletes the "serialize".
|
|
|
50
50
|
Other records are untouched,
|
|
51
51
|
i.e. the value of the field will be kept in the database.
|
|
52
52
|
|
|
53
|
+
3. Keep an eye on YAML, the library to serialize the "bag",
|
|
54
|
+
which for some versions is not tamper-proof
|
|
55
|
+
and may required additional configuration in Rails.
|
|
56
|
+
|
|
57
|
+
See also:
|
|
58
|
+
~~~
|
|
59
|
+
https://stackoverflow.com/questions/72970170/upgrading-to-rails-6-1-6-1-causes-psychdisallowedclass-tried-to-load-unspecif
|
|
60
|
+
~~~
|
|
61
|
+
|
|
62
|
+
The configuration
|
|
63
|
+
"Rails.application.config.active_record.use_yaml_unsafe_load = true"
|
|
64
|
+
is not recommended as it is a patch prone to attacks.
|
|
65
|
+
|
|
66
|
+
The configuration
|
|
67
|
+
"Rails.application.config.active_record.yaml_column_permitted_classes = [Symbol]"
|
|
68
|
+
may be incomplete requiring additional classes like "Time" and "Date".
|
|
69
|
+
(credits to Martin Sch�ttler).
|
|
53
70
|
|
|
54
71
|
Example
|
|
55
72
|
=======
|
|
@@ -91,4 +108,4 @@ Test
|
|
|
91
108
|
|
|
92
109
|
rake
|
|
93
110
|
|
|
94
|
-
Copyright (c) 2009-
|
|
111
|
+
Copyright (c) 2009-2022 [Dittmar Krall], released under the MIT license
|
data/Rakefile
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "rake/testtask"
|
|
2
2
|
|
|
3
|
-
desc
|
|
3
|
+
desc "Run the tests."
|
|
4
4
|
Rake::TestTask.new do |t|
|
|
5
|
-
t.libs <<
|
|
6
|
-
t.libs <<
|
|
7
|
-
t.pattern =
|
|
5
|
+
t.libs << "lib"
|
|
6
|
+
t.libs << "test"
|
|
7
|
+
t.pattern = "test/**/*_test.rb"
|
|
8
8
|
t.verbose = false
|
|
9
9
|
end
|
|
10
10
|
|
data/act_with_bag.gemspec
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
lib = File.expand_path(
|
|
1
|
+
lib = File.expand_path("../lib", __FILE__)
|
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
-
require
|
|
3
|
+
require "act_with_bag/version"
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |s|
|
|
6
|
-
s.name
|
|
7
|
-
s.version
|
|
8
|
-
s.summary
|
|
9
|
-
s.description =
|
|
10
|
-
s.authors
|
|
11
|
-
s.email
|
|
12
|
-
s.homepage
|
|
6
|
+
s.name = "act_with_bag"
|
|
7
|
+
s.version = ActWithBag::VERSION
|
|
8
|
+
s.summary = "act_with_bag (baggies) gem"
|
|
9
|
+
s.description = "Add a bag to a Rails model"
|
|
10
|
+
s.authors = ["Dittmar Krall"]
|
|
11
|
+
s.email = ["dittmar.krall@matiq.com"]
|
|
12
|
+
s.homepage = "http://matiq.com"
|
|
13
|
+
s.license = "MIT"
|
|
14
|
+
s.platform = Gem::Platform::RUBY
|
|
13
15
|
|
|
14
|
-
s.
|
|
15
|
-
s.platform = Gem::Platform::RUBY
|
|
16
|
+
s.metadata["source_code_uri"] = "https://github.com/matique/act_with_bag"
|
|
16
17
|
|
|
17
|
-
s.files
|
|
18
|
-
s.
|
|
19
|
-
s.require_paths = ['lib']
|
|
18
|
+
s.files = `git ls-files -z`.split("\x0")
|
|
19
|
+
s.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
-
s.add_development_dependency
|
|
22
|
-
s.add_development_dependency
|
|
23
|
-
s.add_development_dependency
|
|
21
|
+
s.add_development_dependency "bundler"
|
|
22
|
+
s.add_development_dependency "rake"
|
|
23
|
+
s.add_development_dependency "appraisal"
|
|
24
|
+
s.add_development_dependency "combustion"
|
|
24
25
|
|
|
25
|
-
s.add_development_dependency
|
|
26
|
-
s.add_development_dependency
|
|
26
|
+
s.add_development_dependency "minitest"
|
|
27
|
+
s.add_development_dependency "sqlite3"
|
|
27
28
|
end
|
data/gemfiles/rails_6.0.gemfile
CHANGED
data/gemfiles/rails_6.1.gemfile
CHANGED
data/lib/act_with_bag/version.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
# rubocop: disable all
|
|
2
|
-
|
|
3
1
|
module ActWithBag
|
|
4
|
-
VERSION =
|
|
5
|
-
# VERSION =
|
|
6
|
-
# VERSION =
|
|
7
|
-
# VERSION =
|
|
8
|
-
# VERSION =
|
|
9
|
-
# VERSION =
|
|
10
|
-
# VERSION =
|
|
11
|
-
# VERSION =
|
|
2
|
+
VERSION = "1.1.1" # 2022-12-11
|
|
3
|
+
# VERSION = "1.1.0" # 2022-08-07
|
|
4
|
+
# VERSION = "1.0.4" # 2021-06-17
|
|
5
|
+
# VERSION = "1.0.3" # 2021-05-18
|
|
6
|
+
# VERSION = "1.0.2" # 2020-07-16
|
|
7
|
+
# VERSION = "1.0.1" # 2020-04-27
|
|
8
|
+
# VERSION = "1.0.0" # 2019-09-27
|
|
9
|
+
# VERSION = "0.5.7" # 2019-03-05
|
|
10
|
+
# VERSION = "0.5.6" # 2019-02-15
|
|
11
|
+
# VERSION = "0.5.5"
|
|
12
12
|
end
|
data/lib/act_with_bag.rb
CHANGED
|
@@ -6,10 +6,12 @@ class << ActiveRecord::Base
|
|
|
6
6
|
serialize :bag, Hash
|
|
7
7
|
|
|
8
8
|
class_eval %{
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
unless method_defined?(:bag=)
|
|
10
|
+
def bag=(x)
|
|
11
|
+
#bag changes disabled as it must be handled by Bag himself
|
|
12
|
+
end
|
|
11
13
|
end
|
|
12
|
-
}
|
|
14
|
+
}, __FILE__, __LINE__ - 4
|
|
13
15
|
|
|
14
16
|
@baggies_date ||= {}
|
|
15
17
|
baglets.each { |b|
|
|
@@ -38,7 +40,7 @@ class << ActiveRecord::Base
|
|
|
38
40
|
end
|
|
39
41
|
}
|
|
40
42
|
end
|
|
41
|
-
}
|
|
43
|
+
}, __FILE__, __LINE__ - 12
|
|
42
44
|
end
|
|
43
45
|
|
|
44
46
|
def merge(_bag, params)
|
|
@@ -60,23 +62,28 @@ class << ActiveRecord::Base
|
|
|
60
62
|
next unless found
|
|
61
63
|
|
|
62
64
|
## weird Timestamp, Hash and YAML problem
|
|
63
|
-
res = [0]
|
|
64
|
-
res[0] = 0
|
|
65
|
+
res = [0] if res == []
|
|
66
|
+
res[0] = 0 unless res[0] >= 0
|
|
65
67
|
|
|
66
|
-
value =
|
|
68
|
+
value = begin
|
|
69
|
+
Date.new(*res)
|
|
70
|
+
rescue
|
|
71
|
+
nil
|
|
72
|
+
end
|
|
67
73
|
params[model][baggie] = value
|
|
68
74
|
}
|
|
69
75
|
params
|
|
70
76
|
end
|
|
71
77
|
|
|
72
|
-
|
|
78
|
+
protected
|
|
79
|
+
|
|
73
80
|
def accessor_present?(accessor)
|
|
74
81
|
accessor_sym = accessor.to_sym
|
|
75
82
|
res = false
|
|
76
83
|
|
|
77
|
-
res = true
|
|
78
|
-
res = true
|
|
79
|
-
|
|
84
|
+
res = true if method_defined?(accessor_sym)
|
|
85
|
+
res = true if respond_to?(:attribute_names) &&
|
|
86
|
+
attribute_names.include?(accessor)
|
|
80
87
|
if res
|
|
81
88
|
# logger.info "** Already defined #{self.to_s}.#{accessor}"
|
|
82
89
|
# p "** act_to_bag: untouched accessor '#{self.to_s}.#{accessor}'"
|
|
@@ -86,7 +93,7 @@ class << ActiveRecord::Base
|
|
|
86
93
|
|
|
87
94
|
def add_accessor(baggie, type)
|
|
88
95
|
accessor = baggie.to_s
|
|
89
|
-
return
|
|
96
|
+
return if accessor_present?(accessor)
|
|
90
97
|
|
|
91
98
|
# MARS patch, new:
|
|
92
99
|
#
|
|
@@ -103,11 +110,11 @@ class << ActiveRecord::Base
|
|
|
103
110
|
# END
|
|
104
111
|
|
|
105
112
|
type_sym = type.to_sym
|
|
106
|
-
typing = {integer:
|
|
107
|
-
string:
|
|
113
|
+
typing = {integer: ".to_i", float: ".to_f",
|
|
114
|
+
string: ".to_s"}[type_sym] || ""
|
|
108
115
|
# p "add_accessor #{self.to_s} #{baggie.inspect} #{type_sym.inspect}"
|
|
109
116
|
|
|
110
|
-
@baggies_date[baggie] = type
|
|
117
|
+
@baggies_date[baggie] = type if type_sym == :date
|
|
111
118
|
|
|
112
119
|
if type_sym == :boolean
|
|
113
120
|
class_eval %(
|
|
@@ -116,9 +123,8 @@ class << ActiveRecord::Base
|
|
|
116
123
|
return res if res.class == FalseClass
|
|
117
124
|
return res if res.class == TrueClass
|
|
118
125
|
return res.to_i != 0
|
|
119
|
-
res
|
|
120
126
|
end
|
|
121
|
-
)
|
|
127
|
+
), __FILE__, __LINE__ - 7
|
|
122
128
|
|
|
123
129
|
class_eval %(
|
|
124
130
|
def #{accessor}=(value)
|
|
@@ -131,13 +137,13 @@ class << ActiveRecord::Base
|
|
|
131
137
|
nil
|
|
132
138
|
end
|
|
133
139
|
end
|
|
134
|
-
)
|
|
140
|
+
), __FILE__, __LINE__ - 11
|
|
135
141
|
|
|
136
142
|
class_eval %(
|
|
137
143
|
def #{accessor}?
|
|
138
144
|
#{accessor}
|
|
139
145
|
end
|
|
140
|
-
)
|
|
146
|
+
), __FILE__, __LINE__ - 4
|
|
141
147
|
|
|
142
148
|
else
|
|
143
149
|
|
|
@@ -145,7 +151,7 @@ class << ActiveRecord::Base
|
|
|
145
151
|
def #{accessor}
|
|
146
152
|
self.bag && self.bag[:#{baggie}]
|
|
147
153
|
end
|
|
148
|
-
)
|
|
154
|
+
), __FILE__, __LINE__ - 4
|
|
149
155
|
|
|
150
156
|
class_eval %(
|
|
151
157
|
def #{accessor}=(value)
|
|
@@ -157,7 +163,7 @@ class << ActiveRecord::Base
|
|
|
157
163
|
nil
|
|
158
164
|
end
|
|
159
165
|
end
|
|
160
|
-
)
|
|
166
|
+
), __FILE__, __LINE__ - 10
|
|
161
167
|
end
|
|
162
168
|
end
|
|
163
169
|
end
|
data/test/accessor_test.rb
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
require
|
|
2
|
-
|
|
1
|
+
require "test_helper"
|
|
3
2
|
|
|
4
3
|
class Order < ActiveRecord::Base
|
|
5
4
|
add_to_bag :category
|
|
6
5
|
end
|
|
7
6
|
|
|
8
|
-
|
|
9
7
|
class AccessorTest < ActiveSupport::TestCase
|
|
10
|
-
|
|
11
8
|
def setup
|
|
12
9
|
@order = Order.new
|
|
13
10
|
end
|
|
14
11
|
|
|
15
12
|
test "should reject overwriting of column category" do
|
|
16
|
-
value =
|
|
13
|
+
value = "abc"
|
|
17
14
|
assert @order.respond_to?(:category)
|
|
18
15
|
@order.category = value
|
|
19
16
|
assert_equal false, @order.bag.has_key?(:category)
|
|
20
17
|
end
|
|
21
|
-
|
|
22
18
|
end
|
data/test/bag_boolean_test.rb
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
require
|
|
2
|
-
|
|
1
|
+
require "test_helper"
|
|
3
2
|
|
|
4
3
|
class Order < ActiveRecord::Base
|
|
5
4
|
add_to_bag bool: :boolean
|
|
6
5
|
end
|
|
7
6
|
|
|
8
|
-
|
|
9
7
|
class BagBooleanTest < ActiveSupport::TestCase
|
|
10
|
-
|
|
11
8
|
def setup
|
|
12
9
|
@order = Order.new
|
|
13
10
|
end
|
|
@@ -22,7 +19,7 @@ class BagBooleanTest < ActiveSupport::TestCase
|
|
|
22
19
|
assert_equal false, @order.bag.has_key?(:bool)
|
|
23
20
|
@order.bool = 0
|
|
24
21
|
assert_equal false, @order.bag.has_key?(:bool)
|
|
25
|
-
@order.bool =
|
|
22
|
+
@order.bool = "0"
|
|
26
23
|
assert_equal false, @order.bag.has_key?(:bool)
|
|
27
24
|
end
|
|
28
25
|
|
|
@@ -37,5 +34,4 @@ class BagBooleanTest < ActiveSupport::TestCase
|
|
|
37
34
|
@order.bool = false
|
|
38
35
|
assert_equal false, @order.bag.has_key?(:bool)
|
|
39
36
|
end
|
|
40
|
-
|
|
41
37
|
end
|
data/test/bag_test.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "test_helper"
|
|
2
2
|
|
|
3
3
|
class BagTest < ActiveSupport::TestCase
|
|
4
|
-
|
|
5
4
|
def setup
|
|
6
5
|
@order = Order.new
|
|
7
6
|
end
|
|
@@ -15,38 +14,37 @@ class BagTest < ActiveSupport::TestCase
|
|
|
15
14
|
assert @order.respond_to?(:flag)
|
|
16
15
|
assert @order.respond_to?(:at)
|
|
17
16
|
|
|
18
|
-
assert @order.respond_to?(
|
|
19
|
-
assert @order.respond_to?(
|
|
20
|
-
assert @order.respond_to?(
|
|
21
|
-
assert @order.respond_to?(
|
|
17
|
+
assert @order.respond_to?(:field=)
|
|
18
|
+
assert @order.respond_to?(:flag=)
|
|
19
|
+
assert @order.respond_to?(:flag?)
|
|
20
|
+
assert @order.respond_to?(:at=)
|
|
22
21
|
end
|
|
23
22
|
|
|
24
23
|
test "string access to field" do
|
|
25
|
-
value =
|
|
24
|
+
value = "abc"
|
|
26
25
|
@order.field = value
|
|
27
26
|
assert_equal value, @order.field
|
|
28
|
-
assert_not_equal
|
|
27
|
+
assert_not_equal "def", @order.field
|
|
29
28
|
end
|
|
30
29
|
|
|
31
30
|
test "date access to at" do
|
|
32
31
|
value = DateTime.now
|
|
33
32
|
@order.at = value
|
|
34
33
|
assert_equal value, @order.at
|
|
35
|
-
assert_not_equal
|
|
34
|
+
assert_not_equal "def", @order.at
|
|
36
35
|
end
|
|
37
36
|
|
|
38
37
|
test "bag is hidden" do
|
|
39
|
-
value =
|
|
38
|
+
value = "abc"
|
|
40
39
|
@order.field = value
|
|
41
|
-
@order.bag =
|
|
40
|
+
@order.bag = "bad thing"
|
|
42
41
|
assert_equal value, @order.field
|
|
43
42
|
end
|
|
44
43
|
|
|
45
44
|
test "merge for :at :date" do
|
|
46
45
|
model = :order
|
|
47
|
-
params = {model => {
|
|
46
|
+
params = {model => {"at(1i)" => "1", "at(2i)" => "2", "at(3i)" => "3"}}
|
|
48
47
|
res = Order.merge({}, params)
|
|
49
48
|
assert_equal Date.new(1, 2, 3), res[model][:at]
|
|
50
49
|
end
|
|
51
|
-
|
|
52
50
|
end
|
data/test/boolean_test.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "test_helper"
|
|
2
2
|
|
|
3
3
|
class BooleanTest < ActiveSupport::TestCase
|
|
4
|
-
|
|
5
4
|
def setup
|
|
6
5
|
@order = Order.new
|
|
7
6
|
end
|
|
@@ -39,10 +38,10 @@ class BooleanTest < ActiveSupport::TestCase
|
|
|
39
38
|
end
|
|
40
39
|
|
|
41
40
|
test "string 1/0 returns a boolean" do
|
|
42
|
-
@order.flag =
|
|
41
|
+
@order.flag = "1"
|
|
43
42
|
assert_equal true, @order.flag
|
|
44
43
|
|
|
45
|
-
@order.flag =
|
|
44
|
+
@order.flag = "0"
|
|
46
45
|
assert_equal false, @order.flag
|
|
47
46
|
|
|
48
47
|
@order.flag = nil
|
|
@@ -50,13 +49,12 @@ class BooleanTest < ActiveSupport::TestCase
|
|
|
50
49
|
end
|
|
51
50
|
|
|
52
51
|
test "'false' returns a boolean" do
|
|
53
|
-
@order.flag =
|
|
52
|
+
@order.flag = "false"
|
|
54
53
|
assert_equal false, @order.flag
|
|
55
54
|
end
|
|
56
55
|
|
|
57
56
|
test "'true' returns a boolean" do
|
|
58
|
-
@order.flag =
|
|
57
|
+
@order.flag = "true"
|
|
59
58
|
assert_equal true, @order.flag
|
|
60
59
|
end
|
|
61
|
-
|
|
62
60
|
end
|
data/test/clean_test.rb
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
require
|
|
2
|
-
|
|
1
|
+
require "test_helper"
|
|
3
2
|
|
|
4
3
|
class Order < ActiveRecord::Base
|
|
5
4
|
add_to_bag :name
|
|
6
5
|
add_to_bag :name2
|
|
7
6
|
end
|
|
8
7
|
|
|
9
|
-
|
|
10
8
|
class CleanTest < ActiveSupport::TestCase
|
|
11
|
-
|
|
12
9
|
def setup
|
|
13
10
|
@order = Order.new
|
|
14
11
|
end
|
|
15
12
|
|
|
16
13
|
test "assigning nil removes field from bag" do
|
|
17
|
-
value =
|
|
14
|
+
value = "abc"
|
|
18
15
|
assert_equal false, @order.bag.has_key?(:name)
|
|
19
16
|
@order.name = value
|
|
20
17
|
assert_equal true, @order.bag.has_key?(:name)
|
|
@@ -27,5 +24,4 @@ class CleanTest < ActiveSupport::TestCase
|
|
|
27
24
|
@order.name2 = nil
|
|
28
25
|
assert_equal false, @order.bag.has_key?(:name2)
|
|
29
26
|
end
|
|
30
|
-
|
|
31
27
|
end
|
data/test/delete_test.rb
CHANGED
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
require
|
|
2
|
-
|
|
1
|
+
require "test_helper"
|
|
3
2
|
|
|
4
3
|
class Order < ActiveRecord::Base
|
|
5
4
|
add_to_bag :aa, :bb, :cc
|
|
6
5
|
delete_from_bag :bb
|
|
7
6
|
end
|
|
8
7
|
|
|
9
|
-
|
|
10
8
|
class DeleteTest < ActiveSupport::TestCase
|
|
11
|
-
|
|
12
9
|
def setup
|
|
13
10
|
@order = Order.new
|
|
14
11
|
end
|
|
15
12
|
|
|
16
13
|
test "delete a field" do
|
|
17
|
-
@order.aa =
|
|
18
|
-
@order.bb =
|
|
19
|
-
@order.cc =
|
|
14
|
+
@order.aa = "aa"
|
|
15
|
+
@order.bb = "bb"
|
|
16
|
+
@order.cc = "cc"
|
|
20
17
|
@order.save
|
|
21
|
-
assert_equal
|
|
18
|
+
assert_equal "aa", @order.aa
|
|
22
19
|
assert_nil @order.bb
|
|
23
|
-
assert_equal
|
|
20
|
+
assert_equal "cc", @order.cc
|
|
24
21
|
end
|
|
25
|
-
|
|
26
22
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
ActiveRecord::Schema.define(version: 202208) do
|
|
4
|
+
create_table "orders", force: true do |t|
|
|
5
|
+
t.string :category
|
|
6
|
+
t.text :bag
|
|
7
|
+
|
|
8
|
+
t.datetime "created_at", null: false
|
|
9
|
+
t.datetime "updated_at", null: false
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
create_table "users", force: true do |t|
|
|
13
|
+
t.string :type
|
|
14
|
+
t.text :bag
|
|
15
|
+
|
|
16
|
+
t.datetime "created_at", null: false
|
|
17
|
+
t.datetime "updated_at", null: false
|
|
18
|
+
end
|
|
19
|
+
end
|
data/test/sti_test.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
require
|
|
2
|
-
|
|
1
|
+
require "test_helper"
|
|
3
2
|
|
|
4
3
|
class User < ActiveRecord::Base
|
|
5
4
|
add_to_bag :name
|
|
@@ -9,9 +8,7 @@ class Administrator < User
|
|
|
9
8
|
add_to_bag :key
|
|
10
9
|
end
|
|
11
10
|
|
|
12
|
-
|
|
13
11
|
class StiTest < ActiveSupport::TestCase
|
|
14
|
-
|
|
15
12
|
def setup
|
|
16
13
|
@user = User.new
|
|
17
14
|
@admin = Administrator.new
|
|
@@ -24,7 +21,7 @@ class StiTest < ActiveSupport::TestCase
|
|
|
24
21
|
|
|
25
22
|
test "STI field type" do
|
|
26
23
|
assert_nil @user.type
|
|
27
|
-
assert_equal
|
|
24
|
+
assert_equal "Administrator", @admin.type
|
|
28
25
|
end
|
|
29
26
|
|
|
30
27
|
test "have bag" do
|
|
@@ -37,30 +34,29 @@ class StiTest < ActiveSupport::TestCase
|
|
|
37
34
|
assert @admin.respond_to?(:name)
|
|
38
35
|
assert @admin.respond_to?(:key)
|
|
39
36
|
|
|
40
|
-
assert @user.respond_to?(
|
|
41
|
-
assert @admin.respond_to?(
|
|
42
|
-
assert @admin.respond_to?(
|
|
37
|
+
assert @user.respond_to?(:name=)
|
|
38
|
+
assert @admin.respond_to?(:name=)
|
|
39
|
+
assert @admin.respond_to?(:key=)
|
|
43
40
|
|
|
44
41
|
assert_equal false, @user.respond_to?(:key)
|
|
45
|
-
assert_equal false, @user.respond_to?(
|
|
42
|
+
assert_equal false, @user.respond_to?(:key=)
|
|
46
43
|
end
|
|
47
44
|
|
|
48
45
|
test "access to name & key" do
|
|
49
|
-
name =
|
|
50
|
-
key =
|
|
46
|
+
name = "name"
|
|
47
|
+
key = "key"
|
|
51
48
|
@admin.name = name
|
|
52
49
|
@admin.key = key
|
|
53
50
|
assert_equal name, @admin.name
|
|
54
51
|
assert_equal key, @admin.key
|
|
55
|
-
assert_not_equal
|
|
56
|
-
assert_not_equal
|
|
52
|
+
assert_not_equal "def", @admin.name
|
|
53
|
+
assert_not_equal "def", @admin.key
|
|
57
54
|
end
|
|
58
55
|
|
|
59
56
|
test "merge" do
|
|
60
57
|
model = :administrator
|
|
61
|
-
params = {model => {
|
|
58
|
+
params = {model => {"at(1i)" => "1", "at(2i)" => "2", "at(3i)" => "3"}}
|
|
62
59
|
res = Administrator.merge({}, params)
|
|
63
60
|
assert_nil res[model][:at]
|
|
64
61
|
end
|
|
65
|
-
|
|
66
62
|
end
|
data/test/string_test.rb
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "test_helper"
|
|
2
2
|
|
|
3
3
|
class Order < ActiveRecord::Base
|
|
4
4
|
add_to_bag string: :string
|
|
5
5
|
end
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
class StringTest < ActiveSupport::TestCase
|
|
9
|
-
|
|
10
8
|
def setup
|
|
11
9
|
@order = Order.new
|
|
12
10
|
end
|
|
@@ -14,10 +12,9 @@ class StringTest < ActiveSupport::TestCase
|
|
|
14
12
|
test "assigning boolean to string" do
|
|
15
13
|
value = false
|
|
16
14
|
@order.string = value
|
|
17
|
-
assert_equal
|
|
15
|
+
assert_equal "false", @order.string
|
|
18
16
|
value = true
|
|
19
17
|
@order.string = value
|
|
20
|
-
assert_equal
|
|
18
|
+
assert_equal "true", @order.string
|
|
21
19
|
end
|
|
22
|
-
|
|
23
20
|
end
|
data/test/test_helper.rb
CHANGED
|
@@ -1,39 +1,17 @@
|
|
|
1
|
-
if ENV[
|
|
2
|
-
require
|
|
1
|
+
if ENV["COVERAGE"]
|
|
2
|
+
require "simplecov"
|
|
3
3
|
SimpleCov.start do
|
|
4
|
-
add_filter
|
|
4
|
+
add_filter "/test/"
|
|
5
5
|
end
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
require 'active_record'
|
|
14
|
-
|
|
15
|
-
ActiveRecord::Base.establish_connection({
|
|
16
|
-
adapter: 'sqlite3',
|
|
17
|
-
database: 'bag.sqlite3'
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
ActiveRecord::Schema.define do
|
|
21
|
-
create_table 'orders', :force => true do |t|
|
|
22
|
-
t.string :category
|
|
23
|
-
t.column 'bag', :text
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
ActiveRecord::Schema.define do
|
|
28
|
-
create_table 'users', :force => true do |t|
|
|
29
|
-
t.string :type
|
|
30
|
-
t.text :bag
|
|
31
|
-
end
|
|
8
|
+
require "combustion"
|
|
9
|
+
Combustion.path = "test/internal"
|
|
10
|
+
Combustion.initialize! :active_record do
|
|
11
|
+
config.active_record.yaml_column_permitted_classes = [Symbol, Time, Date]
|
|
32
12
|
end
|
|
33
13
|
|
|
34
|
-
require
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
add_to_bag :field, flag: :boolean, at: :date
|
|
39
|
-
end
|
|
14
|
+
require "rails/test_help"
|
|
15
|
+
require "minitest/autorun"
|
|
16
|
+
require "minitest/benchmark"
|
|
17
|
+
# require 'capybara/rails'
|
data/test/type_test.rb
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "test_helper"
|
|
2
2
|
|
|
3
3
|
class Order < ActiveRecord::Base
|
|
4
4
|
add_to_bag({i: :integer}, {f: :float})
|
|
5
5
|
end
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
class TypeTest < ActiveSupport::TestCase
|
|
9
|
-
|
|
10
8
|
def setup
|
|
11
9
|
@order = Order.new
|
|
12
10
|
end
|
|
13
11
|
|
|
14
12
|
test "miscellaneous values" do
|
|
13
|
+
[123, 2.3, "abc", nil, {a: 1}, [1, 2]].each { |value|
|
|
14
|
+
@order.field = value
|
|
15
|
+
assert_value value, @order.field
|
|
16
|
+
|
|
17
|
+
@order.save
|
|
18
|
+
id = @order.id
|
|
19
|
+
order = Order.find(id)
|
|
20
|
+
assert_value value, order.field
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test "Time & Date" do
|
|
15
25
|
time = Time.now
|
|
16
|
-
|
|
26
|
+
today = Date.today
|
|
27
|
+
[time, today].each { |value|
|
|
17
28
|
@order.field = value
|
|
18
29
|
assert_value value, @order.field
|
|
19
30
|
|
|
@@ -38,10 +49,10 @@ class TypeTest < ActiveSupport::TestCase
|
|
|
38
49
|
assert_kind_of Float, @order.f
|
|
39
50
|
end
|
|
40
51
|
|
|
41
|
-
|
|
52
|
+
private
|
|
53
|
+
|
|
42
54
|
def assert_value(expect, actual)
|
|
43
|
-
assert_equal expect, actual
|
|
44
|
-
assert_nil
|
|
55
|
+
assert_equal expect, actual if expect
|
|
56
|
+
assert_nil actual unless expect
|
|
45
57
|
end
|
|
46
|
-
|
|
47
58
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: act_with_bag
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dittmar Krall
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-12-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -42,16 +42,30 @@ dependencies:
|
|
|
42
42
|
name: appraisal
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - "
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '0'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - "
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: combustion
|
|
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'
|
|
55
69
|
- !ruby/object:Gem::Dependency
|
|
56
70
|
name: minitest
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -82,14 +96,13 @@ dependencies:
|
|
|
82
96
|
version: '0'
|
|
83
97
|
description: Add a bag to a Rails model
|
|
84
98
|
email:
|
|
85
|
-
- dittmar.krall@
|
|
99
|
+
- dittmar.krall@matiq.com
|
|
86
100
|
executables: []
|
|
87
101
|
extensions: []
|
|
88
102
|
extra_rdoc_files: []
|
|
89
103
|
files:
|
|
90
104
|
- ".github/workflows/rake.yml"
|
|
91
105
|
- ".gitignore"
|
|
92
|
-
- ".rubocop.yml"
|
|
93
106
|
- ".ruby-gemset"
|
|
94
107
|
- ".ruby-version"
|
|
95
108
|
- ".watchr"
|
|
@@ -109,14 +122,19 @@ files:
|
|
|
109
122
|
- test/boolean_test.rb
|
|
110
123
|
- test/clean_test.rb
|
|
111
124
|
- test/delete_test.rb
|
|
125
|
+
- test/internal/app/models/application_record.rb
|
|
126
|
+
- test/internal/app/models/order.rb
|
|
127
|
+
- test/internal/config/database.yml
|
|
128
|
+
- test/internal/db/schema.rb
|
|
112
129
|
- test/sti_test.rb
|
|
113
130
|
- test/string_test.rb
|
|
114
131
|
- test/test_helper.rb
|
|
115
132
|
- test/type_test.rb
|
|
116
|
-
homepage: http://
|
|
133
|
+
homepage: http://matiq.com
|
|
117
134
|
licenses:
|
|
118
135
|
- MIT
|
|
119
|
-
metadata:
|
|
136
|
+
metadata:
|
|
137
|
+
source_code_uri: https://github.com/matique/act_with_bag
|
|
120
138
|
post_install_message:
|
|
121
139
|
rdoc_options: []
|
|
122
140
|
require_paths:
|
|
@@ -132,18 +150,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
132
150
|
- !ruby/object:Gem::Version
|
|
133
151
|
version: '0'
|
|
134
152
|
requirements: []
|
|
135
|
-
rubygems_version: 3.
|
|
153
|
+
rubygems_version: 3.3.26
|
|
136
154
|
signing_key:
|
|
137
155
|
specification_version: 4
|
|
138
156
|
summary: act_with_bag (baggies) gem
|
|
139
|
-
test_files:
|
|
140
|
-
- test/accessor_test.rb
|
|
141
|
-
- test/bag_boolean_test.rb
|
|
142
|
-
- test/bag_test.rb
|
|
143
|
-
- test/boolean_test.rb
|
|
144
|
-
- test/clean_test.rb
|
|
145
|
-
- test/delete_test.rb
|
|
146
|
-
- test/sti_test.rb
|
|
147
|
-
- test/string_test.rb
|
|
148
|
-
- test/test_helper.rb
|
|
149
|
-
- test/type_test.rb
|
|
157
|
+
test_files: []
|
data/.rubocop.yml
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
inherit_from:
|
|
2
|
-
- ~/configs/.rubocop.yml
|
|
3
|
-
|
|
4
|
-
AllCops:
|
|
5
|
-
Include:
|
|
6
|
-
- 'lib/**/*.rb'
|
|
7
|
-
Exclude:
|
|
8
|
-
- 'test/**/*'
|
|
9
|
-
|
|
10
|
-
Layout/AccessModifierIndentation:
|
|
11
|
-
Enabled: false
|
|
12
|
-
Layout/EmptyLinesAroundAccessModifier:
|
|
13
|
-
Enabled: false
|
|
14
|
-
Layout/ExtraSpacing:
|
|
15
|
-
Enabled: false
|
|
16
|
-
|
|
17
|
-
Metrics/AbcSize:
|
|
18
|
-
Enabled: false
|
|
19
|
-
Metrics/CyclomaticComplexity:
|
|
20
|
-
Enabled: false
|
|
21
|
-
Metrics/MethodLength:
|
|
22
|
-
Enabled: false
|
|
23
|
-
Metrics/PerceivedComplexity:
|
|
24
|
-
Enabled: false
|
|
25
|
-
|
|
26
|
-
Style/EvalWithLocation:
|
|
27
|
-
Enabled: false
|
|
28
|
-
Style/RescueModifier:
|
|
29
|
-
Exclude:
|
|
30
|
-
- 'lib/act_with_bag.rb'
|