act_with_flags 0.2.4 → 3.0.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 +9 -3
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/.watchr +29 -16
- data/Appraisals +10 -6
- data/Gemfile +7 -6
- data/Gemfile.lock +124 -104
- data/MIT-LICENSE +1 -1
- data/README.md +30 -3
- data/Rakefile +5 -5
- data/TODO +21 -0
- data/act_with_flags.gemspec +20 -20
- data/gemfiles/rails_6.0.gemfile +2 -1
- data/gemfiles/rails_7.0.gemfile +15 -0
- data/lib/act_with_flags/admin.rb +5 -48
- data/lib/act_with_flags/clear.rb +30 -0
- data/lib/act_with_flags/define.rb +6 -35
- data/lib/act_with_flags/flags.rb +67 -0
- data/lib/act_with_flags/print.rb +21 -27
- data/lib/act_with_flags/utils.rb +25 -13
- data/lib/act_with_flags/version.rb +8 -7
- data/lib/act_with_flags.rb +14 -25
- data/test/any_all_none_test.rb +6 -9
- data/test/benchmark_test.rb +73 -0
- data/test/clear_test.rb +5 -7
- data/test/coding_check_add_test.rb +29 -0
- data/test/coding_coverage_test.rb +19 -0
- data/test/coding_mask2d_test.rb +25 -0
- data/test/coding_null_test.rb +29 -0
- data/test/coding_one_test.rb +26 -0
- data/test/coding_reset_test.rb +18 -0
- data/test/inheritance_any_test.rb +9 -33
- data/test/inheritance_test.rb +7 -10
- data/test/internal/app/controllers/orders_controller.rb +1 -3
- data/test/internal/app/models/order.rb +1 -5
- data/test/internal/config/routes.rb +1 -1
- data/test/internal/db/schema.rb +6 -7
- data/test/legacy_test.rb +8 -9
- data/test/mask_test.rb +6 -7
- data/test/null_test.rb +3 -5
- data/test/one_test.rb +7 -9
- data/test/origin_test.rb +7 -26
- data/test/origins_test.rb +57 -0
- data/test/remove_from_test.rb +3 -4
- data/test/test_helper.rb +8 -8
- metadata +21 -41
- data/.rubocop.yml +0 -9
- data/test/internal_benchmark_test.rb +0 -52
- data/test/internal_check_add_test.rb +0 -36
- data/test/internal_null_test.rb +0 -29
- data/test/internal_one_test.rb +0 -27
- data/test/reset_test.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 743598329586132b56037a7f83e282e0a23f7f7ebcf33c0281ca29ac9285b50f
|
4
|
+
data.tar.gz: 108e19ed8834782c421e247e76713bc4129113bef80a3389cb469a69d7fc8982
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c37311aab7060cf9f57063e5e60c74840042180aea327a5a3d224b62e687bee59b31876d9367ecb44978cf868df93e778f760fe6a74f8fd6610df9e44bc451cb
|
7
|
+
data.tar.gz: 040b721cbc34321535dbdf281c3778fed4876c4f9cfe074c0c36ef38c9bd1b64ec5a3ae13db7b67517f396bdc826d0146e1acd88cc074845952fbd0e55c0a27c
|
data/.github/workflows/rake.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# see also https://github.com/whitequark/parser/blob/master/.github/workflows/test.yml
|
1
2
|
name: Rake
|
2
3
|
|
3
4
|
#on: [push, pull_request]
|
@@ -12,7 +13,8 @@ jobs:
|
|
12
13
|
os: [ubuntu-latest]
|
13
14
|
# Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
|
14
15
|
# ruby: [2.5, 2.6, 2.7, '3.0', head, jruby, jruby-head, truffleruby, truffleruby-head]
|
15
|
-
ruby: [2.7]
|
16
|
+
ruby: ["2.7.2", "3.0.1", "3.1.2"]
|
17
|
+
test_command: ["bundle exec rake test"]
|
16
18
|
runs-on: ${{ matrix.os }}
|
17
19
|
|
18
20
|
steps:
|
@@ -20,5 +22,9 @@ jobs:
|
|
20
22
|
- uses: ruby/setup-ruby@v1
|
21
23
|
with:
|
22
24
|
ruby-version: ${{ matrix.ruby }}
|
23
|
-
|
24
|
-
|
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.2
|
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("app/.*/(.*)\.#{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,11 +1,15 @@
|
|
1
|
-
appraise
|
2
|
-
gem
|
1
|
+
appraise "rails-7.0" do
|
2
|
+
gem "rails", "~> 7.0"
|
3
3
|
end
|
4
4
|
|
5
|
-
appraise
|
6
|
-
|
5
|
+
# appraise "rails-6.1" do
|
6
|
+
# gem "rails", "~> 6.0"
|
7
|
+
# end
|
8
|
+
|
9
|
+
appraise "rails-6.0" do
|
10
|
+
gem "rails", "~> 6.0.0"
|
7
11
|
end
|
8
12
|
|
9
|
-
#appraise 'rails-5.2' do
|
13
|
+
# appraise 'rails-5.2' do
|
10
14
|
# gem 'rails', '~> 5.2.0'
|
11
|
-
#end
|
15
|
+
# end
|
data/Gemfile
CHANGED
@@ -1,11 +1,12 @@
|
|
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 "rubocop", require: false
|
9
|
+
gem "simplecov", require: false
|
10
|
+
gem "benchmark-ips"
|
11
|
+
gem "ricecream"
|
11
12
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,173 +1,192 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
act_with_flags (0.
|
4
|
+
act_with_flags (3.0.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
actioncable (
|
10
|
-
actionpack (=
|
11
|
-
activesupport (=
|
9
|
+
actioncable (7.0.3.1)
|
10
|
+
actionpack (= 7.0.3.1)
|
11
|
+
activesupport (= 7.0.3.1)
|
12
12
|
nio4r (~> 2.0)
|
13
13
|
websocket-driver (>= 0.6.1)
|
14
|
-
actionmailbox (
|
15
|
-
actionpack (=
|
16
|
-
activejob (=
|
17
|
-
activerecord (=
|
18
|
-
activestorage (=
|
19
|
-
activesupport (=
|
14
|
+
actionmailbox (7.0.3.1)
|
15
|
+
actionpack (= 7.0.3.1)
|
16
|
+
activejob (= 7.0.3.1)
|
17
|
+
activerecord (= 7.0.3.1)
|
18
|
+
activestorage (= 7.0.3.1)
|
19
|
+
activesupport (= 7.0.3.1)
|
20
20
|
mail (>= 2.7.1)
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
21
|
+
net-imap
|
22
|
+
net-pop
|
23
|
+
net-smtp
|
24
|
+
actionmailer (7.0.3.1)
|
25
|
+
actionpack (= 7.0.3.1)
|
26
|
+
actionview (= 7.0.3.1)
|
27
|
+
activejob (= 7.0.3.1)
|
28
|
+
activesupport (= 7.0.3.1)
|
26
29
|
mail (~> 2.5, >= 2.5.4)
|
30
|
+
net-imap
|
31
|
+
net-pop
|
32
|
+
net-smtp
|
27
33
|
rails-dom-testing (~> 2.0)
|
28
|
-
actionpack (
|
29
|
-
actionview (=
|
30
|
-
activesupport (=
|
31
|
-
rack (~> 2.0, >= 2.0
|
34
|
+
actionpack (7.0.3.1)
|
35
|
+
actionview (= 7.0.3.1)
|
36
|
+
activesupport (= 7.0.3.1)
|
37
|
+
rack (~> 2.0, >= 2.2.0)
|
32
38
|
rack-test (>= 0.6.3)
|
33
39
|
rails-dom-testing (~> 2.0)
|
34
40
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
35
|
-
actiontext (
|
36
|
-
actionpack (=
|
37
|
-
activerecord (=
|
38
|
-
activestorage (=
|
39
|
-
activesupport (=
|
41
|
+
actiontext (7.0.3.1)
|
42
|
+
actionpack (= 7.0.3.1)
|
43
|
+
activerecord (= 7.0.3.1)
|
44
|
+
activestorage (= 7.0.3.1)
|
45
|
+
activesupport (= 7.0.3.1)
|
46
|
+
globalid (>= 0.6.0)
|
40
47
|
nokogiri (>= 1.8.5)
|
41
|
-
actionview (
|
42
|
-
activesupport (=
|
48
|
+
actionview (7.0.3.1)
|
49
|
+
activesupport (= 7.0.3.1)
|
43
50
|
builder (~> 3.1)
|
44
51
|
erubi (~> 1.4)
|
45
52
|
rails-dom-testing (~> 2.0)
|
46
53
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
47
|
-
activejob (
|
48
|
-
activesupport (=
|
54
|
+
activejob (7.0.3.1)
|
55
|
+
activesupport (= 7.0.3.1)
|
49
56
|
globalid (>= 0.3.6)
|
50
|
-
activemodel (
|
51
|
-
activesupport (=
|
52
|
-
activerecord (
|
53
|
-
activemodel (=
|
54
|
-
activesupport (=
|
55
|
-
activestorage (
|
56
|
-
actionpack (=
|
57
|
-
activejob (=
|
58
|
-
activerecord (=
|
59
|
-
activesupport (=
|
60
|
-
marcel (~> 1.0
|
61
|
-
mini_mime (
|
62
|
-
activesupport (
|
57
|
+
activemodel (7.0.3.1)
|
58
|
+
activesupport (= 7.0.3.1)
|
59
|
+
activerecord (7.0.3.1)
|
60
|
+
activemodel (= 7.0.3.1)
|
61
|
+
activesupport (= 7.0.3.1)
|
62
|
+
activestorage (7.0.3.1)
|
63
|
+
actionpack (= 7.0.3.1)
|
64
|
+
activejob (= 7.0.3.1)
|
65
|
+
activerecord (= 7.0.3.1)
|
66
|
+
activesupport (= 7.0.3.1)
|
67
|
+
marcel (~> 1.0)
|
68
|
+
mini_mime (>= 1.1.0)
|
69
|
+
activesupport (7.0.3.1)
|
63
70
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
64
71
|
i18n (>= 1.6, < 2)
|
65
72
|
minitest (>= 5.1)
|
66
73
|
tzinfo (~> 2.0)
|
67
|
-
|
68
|
-
appraisal (2.4.0)
|
74
|
+
appraisal (2.4.1)
|
69
75
|
bundler
|
70
76
|
rake
|
71
77
|
thor (>= 0.14.0)
|
72
78
|
ast (2.4.2)
|
73
|
-
benchmark-ips (2.
|
79
|
+
benchmark-ips (2.10.0)
|
74
80
|
builder (3.2.4)
|
75
|
-
combustion (1.3.
|
81
|
+
combustion (1.3.7)
|
76
82
|
activesupport (>= 3.0.0)
|
77
83
|
railties (>= 3.0.0)
|
78
84
|
thor (>= 0.14.6)
|
79
|
-
concurrent-ruby (1.1.
|
85
|
+
concurrent-ruby (1.1.10)
|
80
86
|
crass (1.0.6)
|
87
|
+
digest (3.1.0)
|
81
88
|
docile (1.4.0)
|
82
|
-
erubi (1.
|
83
|
-
globalid (0.
|
84
|
-
activesupport (>=
|
85
|
-
i18n (1.
|
89
|
+
erubi (1.11.0)
|
90
|
+
globalid (1.0.0)
|
91
|
+
activesupport (>= 5.0)
|
92
|
+
i18n (1.12.0)
|
86
93
|
concurrent-ruby (~> 1.0)
|
87
|
-
|
94
|
+
json (2.6.2)
|
95
|
+
loofah (2.18.0)
|
88
96
|
crass (~> 1.0.2)
|
89
97
|
nokogiri (>= 1.5.9)
|
90
98
|
mail (2.7.1)
|
91
99
|
mini_mime (>= 0.1.1)
|
92
|
-
marcel (1.0.
|
100
|
+
marcel (1.0.2)
|
93
101
|
method_source (1.0.0)
|
94
|
-
mini_mime (1.
|
95
|
-
minitest (5.
|
96
|
-
|
97
|
-
|
102
|
+
mini_mime (1.1.2)
|
103
|
+
minitest (5.16.2)
|
104
|
+
net-imap (0.2.3)
|
105
|
+
digest
|
106
|
+
net-protocol
|
107
|
+
strscan
|
108
|
+
net-pop (0.1.1)
|
109
|
+
digest
|
110
|
+
net-protocol
|
111
|
+
timeout
|
112
|
+
net-protocol (0.1.3)
|
113
|
+
timeout
|
114
|
+
net-smtp (0.3.1)
|
115
|
+
digest
|
116
|
+
net-protocol
|
117
|
+
timeout
|
118
|
+
nio4r (2.5.8)
|
119
|
+
nokogiri (1.13.8-x86_64-linux)
|
98
120
|
racc (~> 1.4)
|
99
121
|
observr (1.0.5)
|
100
|
-
parallel (1.
|
101
|
-
parser (3.
|
122
|
+
parallel (1.22.1)
|
123
|
+
parser (3.1.2.0)
|
102
124
|
ast (~> 2.4.1)
|
103
|
-
racc (1.
|
104
|
-
rack (2.2.
|
105
|
-
rack-test (
|
106
|
-
rack (>= 1.
|
107
|
-
rails (
|
108
|
-
actioncable (=
|
109
|
-
actionmailbox (=
|
110
|
-
actionmailer (=
|
111
|
-
actionpack (=
|
112
|
-
actiontext (=
|
113
|
-
actionview (=
|
114
|
-
activejob (=
|
115
|
-
activemodel (=
|
116
|
-
activerecord (=
|
117
|
-
activestorage (=
|
118
|
-
activesupport (=
|
125
|
+
racc (1.6.0)
|
126
|
+
rack (2.2.4)
|
127
|
+
rack-test (2.0.2)
|
128
|
+
rack (>= 1.3)
|
129
|
+
rails (7.0.3.1)
|
130
|
+
actioncable (= 7.0.3.1)
|
131
|
+
actionmailbox (= 7.0.3.1)
|
132
|
+
actionmailer (= 7.0.3.1)
|
133
|
+
actionpack (= 7.0.3.1)
|
134
|
+
actiontext (= 7.0.3.1)
|
135
|
+
actionview (= 7.0.3.1)
|
136
|
+
activejob (= 7.0.3.1)
|
137
|
+
activemodel (= 7.0.3.1)
|
138
|
+
activerecord (= 7.0.3.1)
|
139
|
+
activestorage (= 7.0.3.1)
|
140
|
+
activesupport (= 7.0.3.1)
|
119
141
|
bundler (>= 1.15.0)
|
120
|
-
railties (=
|
121
|
-
sprockets-rails (>= 2.0.0)
|
142
|
+
railties (= 7.0.3.1)
|
122
143
|
rails-dom-testing (2.0.3)
|
123
144
|
activesupport (>= 4.2.0)
|
124
145
|
nokogiri (>= 1.6)
|
125
|
-
rails-html-sanitizer (1.3
|
146
|
+
rails-html-sanitizer (1.4.3)
|
126
147
|
loofah (~> 2.3)
|
127
|
-
railties (
|
128
|
-
actionpack (=
|
129
|
-
activesupport (=
|
148
|
+
railties (7.0.3.1)
|
149
|
+
actionpack (= 7.0.3.1)
|
150
|
+
activesupport (= 7.0.3.1)
|
130
151
|
method_source
|
131
|
-
rake (>=
|
152
|
+
rake (>= 12.2)
|
132
153
|
thor (~> 1.0)
|
133
|
-
|
134
|
-
|
135
|
-
|
154
|
+
zeitwerk (~> 2.5)
|
155
|
+
rainbow (3.1.1)
|
156
|
+
rake (13.0.6)
|
157
|
+
regexp_parser (2.5.0)
|
136
158
|
rexml (3.2.5)
|
137
|
-
|
159
|
+
ricecream (0.2.1)
|
160
|
+
rubocop (1.33.0)
|
161
|
+
json (~> 2.3)
|
138
162
|
parallel (~> 1.10)
|
139
|
-
parser (>= 3.
|
163
|
+
parser (>= 3.1.0.0)
|
140
164
|
rainbow (>= 2.2.2, < 4.0)
|
141
165
|
regexp_parser (>= 1.8, < 3.0)
|
142
|
-
rexml
|
143
|
-
rubocop-ast (>= 1.
|
166
|
+
rexml (>= 3.2.5, < 4.0)
|
167
|
+
rubocop-ast (>= 1.19.1, < 2.0)
|
144
168
|
ruby-progressbar (~> 1.7)
|
145
169
|
unicode-display_width (>= 1.4.0, < 3.0)
|
146
|
-
rubocop-ast (1.
|
147
|
-
parser (>= 3.
|
170
|
+
rubocop-ast (1.19.1)
|
171
|
+
parser (>= 3.1.1.0)
|
148
172
|
ruby-progressbar (1.11.0)
|
149
173
|
simplecov (0.21.2)
|
150
174
|
docile (~> 1.1)
|
151
175
|
simplecov-html (~> 0.11)
|
152
176
|
simplecov_json_formatter (~> 0.1)
|
153
177
|
simplecov-html (0.12.3)
|
154
|
-
simplecov_json_formatter (0.1.
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
activesupport (>= 4.0)
|
161
|
-
sprockets (>= 3.0.0)
|
162
|
-
sqlite3 (1.4.2)
|
163
|
-
thor (1.1.0)
|
164
|
-
tzinfo (2.0.4)
|
178
|
+
simplecov_json_formatter (0.1.4)
|
179
|
+
sqlite3 (1.4.4)
|
180
|
+
strscan (3.0.4)
|
181
|
+
thor (1.2.1)
|
182
|
+
timeout (0.3.0)
|
183
|
+
tzinfo (2.0.5)
|
165
184
|
concurrent-ruby (~> 1.0)
|
166
|
-
unicode-display_width (2.
|
185
|
+
unicode-display_width (2.2.0)
|
167
186
|
websocket-driver (0.7.5)
|
168
187
|
websocket-extensions (>= 0.1.0)
|
169
188
|
websocket-extensions (0.1.5)
|
170
|
-
zeitwerk (2.
|
189
|
+
zeitwerk (2.6.0)
|
171
190
|
|
172
191
|
PLATFORMS
|
173
192
|
x86_64-linux
|
@@ -182,9 +201,10 @@ DEPENDENCIES
|
|
182
201
|
observr
|
183
202
|
rails
|
184
203
|
rake
|
204
|
+
ricecream
|
185
205
|
rubocop
|
186
206
|
simplecov
|
187
207
|
sqlite3
|
188
208
|
|
189
209
|
BUNDLED WITH
|
190
|
-
2.
|
210
|
+
2.3.14
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# ActWithFlags
|
2
2
|
[](http://badge.fury.io/rb/act_with_flags)
|
3
3
|
|
4
|
-
Required by key.
|
4
|
+
Required by key.matiq.
|
5
5
|
|
6
6
|
## Installation
|
7
7
|
|
@@ -11,16 +11,43 @@ Add this line to your application's Gemfile:
|
|
11
11
|
|
12
12
|
And then execute:
|
13
13
|
|
14
|
-
$ bundle
|
14
|
+
$ bundle install
|
15
15
|
|
16
16
|
Or install it yourself as:
|
17
17
|
|
18
18
|
$ gem install act_with_flags
|
19
19
|
|
20
|
+
## Version 3.x
|
21
|
+
|
22
|
+
As required by key.matiq an enhanced "origin:" has been implemented.
|
23
|
+
Act_with_flags now supports many "origin:"s
|
24
|
+
(not just renaming the default "flags").
|
25
|
+
|
26
|
+
An example:
|
27
|
+
|
28
|
+
~~~
|
29
|
+
Order.add_to_flags :a # origin is :flags
|
30
|
+
Order.add_to_flags :b, b2: 63 # origin is :flags
|
31
|
+
Order.add_to_flags :c, origin: :origin1
|
32
|
+
Order.add_to_flags d: 3, origin: :origin2
|
33
|
+
Order.add_to_flags :d2, origin: :origin2
|
34
|
+
~~~
|
35
|
+
|
36
|
+
The default "origin:" continues to be "flags".
|
37
|
+
|
38
|
+
## Links
|
39
|
+
|
40
|
+
Further reading:
|
41
|
+
|
42
|
+
- [gem bitmask_attributes](https://github.com/joelmoss/bitmask_attributes)
|
43
|
+
- [gem bitfields](https://github.com/grosser/bitfields)
|
44
|
+
- [gem active_flag](https://github.com/kenn/active_flag)
|
45
|
+
- [gem has-bit-field](https://github.com/pjb3/has-bit-field)
|
46
|
+
- [gem bitfield_attribute](https://github.com/gzigzigzeo/bitfield_attribute)
|
20
47
|
|
21
48
|
## License MIT
|
22
49
|
|
23
|
-
|
50
|
+
Copyright (c) 2019-2022 [Dittmar Krall](matiq.com UG) and
|
24
51
|
is released under the MIT license:
|
25
52
|
|
26
53
|
* https://opensource.org/licenses/MIT
|
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/TODO
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# max_bits
|
2
|
+
|
3
|
+
add_to_flags(
|
4
|
+
...
|
5
|
+
max_bits: 63
|
6
|
+
)
|
7
|
+
|
8
|
+
Sinn und Zweck von :max_bits. Beispiel ein bigint Feld von PostgreSQL hat
|
9
|
+
64 Bits. Das Bit 2**63 ist allerdings nur bei negativen Zahlen gesetzt.
|
10
|
+
Damit stehen für add_to_flags bei solch einem Feld nur 63 Bits also
|
11
|
+
höchstens das Bit 2**62 zur Verfügung. Die Option max_bits: 62 würde sichern,
|
12
|
+
dass kein höheres Bit verwendet wird. Falls doch würde bereits bei
|
13
|
+
add_to_flags eine Exception bereits beim Start der Rails-Web-App geworfen und
|
14
|
+
nicht erst bei der Verwendung des Bits.
|
15
|
+
|
16
|
+
## Solution
|
17
|
+
|
18
|
+
Rails supports already "validate" which is, IMHO,
|
19
|
+
the right way to limit values to be stored in the database.
|
20
|
+
Furthermore, invalid values, stored by equivocation,
|
21
|
+
are detected by "validate".
|
data/act_with_flags.gemspec
CHANGED
@@ -1,28 +1,28 @@
|
|
1
|
-
lib = File.expand_path(
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require
|
3
|
+
require "act_with_flags/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
s.name
|
7
|
-
s.version
|
8
|
-
s.summary
|
9
|
-
s.description = %(Handles flags in a Rails model instance)
|
10
|
-
s.authors
|
11
|
-
s.email
|
12
|
-
s.homepage
|
6
|
+
s.name = "act_with_flags"
|
7
|
+
s.version = ActWithFlags::VERSION
|
8
|
+
s.summary = %(act_with_flags gem)
|
9
|
+
s.description = %(Handles flags/booleans in a Rails model instance)
|
10
|
+
s.authors = ["Dittmar Krall"]
|
11
|
+
s.email = ["dittmar.krall@matiq.com"]
|
12
|
+
s.homepage = "http://matiq.com"
|
13
13
|
|
14
|
-
s.license
|
15
|
-
s.platform
|
14
|
+
s.license = "MIT"
|
15
|
+
s.platform = Gem::Platform::RUBY
|
16
|
+
s.metadata["source_code_uri"] = "https://github.com/matique/act_with_flags"
|
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
|
24
|
-
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"
|
25
25
|
|
26
|
-
s.add_development_dependency
|
27
|
-
s.add_development_dependency
|
26
|
+
s.add_development_dependency "minitest"
|
27
|
+
s.add_development_dependency "sqlite3"
|
28
28
|
end
|
data/gemfiles/rails_6.0.gemfile
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "rails", "~> 7.0"
|
6
|
+
|
7
|
+
group :test do
|
8
|
+
gem "observr"
|
9
|
+
gem "rubocop", require: false
|
10
|
+
gem "simplecov", require: false
|
11
|
+
gem "benchmark-ips", require: false
|
12
|
+
gem "ricecream", require: false
|
13
|
+
end
|
14
|
+
|
15
|
+
gemspec path: "../"
|