act_with_flags 0.2.4 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +9 -3
  3. data/.ruby-gemset +1 -1
  4. data/.ruby-version +1 -1
  5. data/.watchr +29 -16
  6. data/Appraisals +10 -6
  7. data/Gemfile +7 -6
  8. data/Gemfile.lock +124 -104
  9. data/MIT-LICENSE +1 -1
  10. data/README.md +30 -3
  11. data/Rakefile +5 -5
  12. data/TODO +21 -0
  13. data/act_with_flags.gemspec +20 -20
  14. data/gemfiles/rails_6.0.gemfile +2 -1
  15. data/gemfiles/rails_7.0.gemfile +15 -0
  16. data/lib/act_with_flags/admin.rb +5 -48
  17. data/lib/act_with_flags/clear.rb +30 -0
  18. data/lib/act_with_flags/define.rb +6 -35
  19. data/lib/act_with_flags/flags.rb +67 -0
  20. data/lib/act_with_flags/print.rb +21 -27
  21. data/lib/act_with_flags/utils.rb +25 -13
  22. data/lib/act_with_flags/version.rb +8 -7
  23. data/lib/act_with_flags.rb +14 -25
  24. data/test/any_all_none_test.rb +6 -9
  25. data/test/benchmark_test.rb +73 -0
  26. data/test/clear_test.rb +5 -7
  27. data/test/coding_check_add_test.rb +29 -0
  28. data/test/coding_coverage_test.rb +19 -0
  29. data/test/coding_mask2d_test.rb +25 -0
  30. data/test/coding_null_test.rb +29 -0
  31. data/test/coding_one_test.rb +26 -0
  32. data/test/coding_reset_test.rb +18 -0
  33. data/test/inheritance_any_test.rb +9 -33
  34. data/test/inheritance_test.rb +7 -10
  35. data/test/internal/app/controllers/orders_controller.rb +1 -3
  36. data/test/internal/app/models/order.rb +1 -5
  37. data/test/internal/config/routes.rb +1 -1
  38. data/test/internal/db/schema.rb +6 -7
  39. data/test/legacy_test.rb +8 -9
  40. data/test/mask_test.rb +6 -7
  41. data/test/null_test.rb +3 -5
  42. data/test/one_test.rb +7 -9
  43. data/test/origin_test.rb +7 -26
  44. data/test/origins_test.rb +57 -0
  45. data/test/remove_from_test.rb +3 -4
  46. data/test/test_helper.rb +8 -8
  47. metadata +21 -41
  48. data/.rubocop.yml +0 -9
  49. data/test/internal_benchmark_test.rb +0 -52
  50. data/test/internal_check_add_test.rb +0 -36
  51. data/test/internal_null_test.rb +0 -29
  52. data/test/internal_one_test.rb +0 -27
  53. data/test/reset_test.rb +0 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c723baaa15bf9f4e86987bb20e3c85984cb465d7758ab05866a41baaa6ed5a1
4
- data.tar.gz: 29ac2c9336dedd278f2e3ee2a71710a4cc34117c07bc28869b989e5cf454cccb
3
+ metadata.gz: 743598329586132b56037a7f83e282e0a23f7f7ebcf33c0281ca29ac9285b50f
4
+ data.tar.gz: 108e19ed8834782c421e247e76713bc4129113bef80a3389cb469a69d7fc8982
5
5
  SHA512:
6
- metadata.gz: 4bd31e1bf3a0f0a6721fa8ed916ae799e20022b46bfc78521f13ccd40d359737812bb4ae35a02ef601d0e654551f758eea795cc2defe8e0079301bda5e2644bb
7
- data.tar.gz: 51a34e9a84543e5d36a709f82332b5a188414ee0425723fb1a25a483574d2ab0bc1b33a60d629d4e055808acdfb982fdc8e0983806e6d4a2ad2c9669479b3106
6
+ metadata.gz: c37311aab7060cf9f57063e5e60c74840042180aea327a5a3d224b62e687bee59b31876d9367ecb44978cf868df93e778f760fe6a74f8fd6610df9e44bc451cb
7
+ data.tar.gz: 040b721cbc34321535dbdf281c3778fed4876c4f9cfe074c0c36ef38c9bd1b64ec5a3ae13db7b67517f396bdc826d0146e1acd88cc074845952fbd0e55c0a27c
@@ -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
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
24
- - run: bundle exec rake
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-6.1
1
+ rails-7.0
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.7.2
1
+ ruby-3.1.2
data/.watchr CHANGED
@@ -1,5 +1,6 @@
1
- HH = '#' * 22 unless defined?(HH)
2
- H = '#' * 5 unless defined?(H)
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, file)
18
- case type
19
- when 'test'; run %(bundle exec ruby -I test #{file})
20
- # when 'spec'; run %(rspec -X #{file})
21
- else; puts "#{H} unknown type: #{type}, file: #{file}"
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
- %w[test spec].each { |dir| run "bundle exec rake #{dir}" if File.exist?(dir) }
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('_').first
32
- %w[test spec].each { |type|
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(' ') unless files.empty?
37
+ run_it type, files.join(" ") unless files.empty?
35
38
  }
36
39
  end
37
40
 
38
- %w[test spec].each { |type|
41
+ TESTING.each { |type|
39
42
  watch("#{type}/#{type}_helper\.rb") { run_all_tests }
40
- watch('lib/.*\.rb') { run_all_tests }
41
- watch("#{type}/.*/*_#{type}\.rb") { |match| run_it type, match[0] }
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
- Signal.trap('QUIT') { run_all_tests }
58
+ Signal.trap("QUIT") { run_all_tests }
46
59
  # Ctrl-C
47
- Signal.trap('INT') { abort("Interrupted\n") }
60
+ Signal.trap("INT") { abort("Interrupted\n") }
48
61
  usage
data/Appraisals CHANGED
@@ -1,11 +1,15 @@
1
- appraise 'rails-6.1' do
2
- gem 'rails', '~> 6.0'
1
+ appraise "rails-7.0" do
2
+ gem "rails", "~> 7.0"
3
3
  end
4
4
 
5
- appraise 'rails-6.0' do
6
- gem 'rails', '~> 6.0.0'
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 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
  gemspec
3
3
 
4
- gem 'rails'
4
+ gem "rails"
5
5
 
6
6
  group :test do
7
- gem 'observr'
8
- gem 'rubocop', require: false
9
- gem 'simplecov', require: false
10
- gem 'benchmark-ips'
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.2.4)
4
+ act_with_flags (3.0.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- actioncable (6.1.3.2)
10
- actionpack (= 6.1.3.2)
11
- activesupport (= 6.1.3.2)
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 (6.1.3.2)
15
- actionpack (= 6.1.3.2)
16
- activejob (= 6.1.3.2)
17
- activerecord (= 6.1.3.2)
18
- activestorage (= 6.1.3.2)
19
- activesupport (= 6.1.3.2)
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
- actionmailer (6.1.3.2)
22
- actionpack (= 6.1.3.2)
23
- actionview (= 6.1.3.2)
24
- activejob (= 6.1.3.2)
25
- activesupport (= 6.1.3.2)
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 (6.1.3.2)
29
- actionview (= 6.1.3.2)
30
- activesupport (= 6.1.3.2)
31
- rack (~> 2.0, >= 2.0.9)
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 (6.1.3.2)
36
- actionpack (= 6.1.3.2)
37
- activerecord (= 6.1.3.2)
38
- activestorage (= 6.1.3.2)
39
- activesupport (= 6.1.3.2)
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 (6.1.3.2)
42
- activesupport (= 6.1.3.2)
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 (6.1.3.2)
48
- activesupport (= 6.1.3.2)
54
+ activejob (7.0.3.1)
55
+ activesupport (= 7.0.3.1)
49
56
  globalid (>= 0.3.6)
50
- activemodel (6.1.3.2)
51
- activesupport (= 6.1.3.2)
52
- activerecord (6.1.3.2)
53
- activemodel (= 6.1.3.2)
54
- activesupport (= 6.1.3.2)
55
- activestorage (6.1.3.2)
56
- actionpack (= 6.1.3.2)
57
- activejob (= 6.1.3.2)
58
- activerecord (= 6.1.3.2)
59
- activesupport (= 6.1.3.2)
60
- marcel (~> 1.0.0)
61
- mini_mime (~> 1.0.2)
62
- activesupport (6.1.3.2)
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
- zeitwerk (~> 2.3)
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.9.1)
79
+ benchmark-ips (2.10.0)
74
80
  builder (3.2.4)
75
- combustion (1.3.1)
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.9)
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.10.0)
83
- globalid (0.4.2)
84
- activesupport (>= 4.2.0)
85
- i18n (1.8.10)
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
- loofah (2.10.0)
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.1)
100
+ marcel (1.0.2)
93
101
  method_source (1.0.0)
94
- mini_mime (1.0.3)
95
- minitest (5.14.4)
96
- nio4r (2.5.7)
97
- nokogiri (1.11.7-x86_64-linux)
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.20.1)
101
- parser (3.0.1.1)
122
+ parallel (1.22.1)
123
+ parser (3.1.2.0)
102
124
  ast (~> 2.4.1)
103
- racc (1.5.2)
104
- rack (2.2.3)
105
- rack-test (1.1.0)
106
- rack (>= 1.0, < 3)
107
- rails (6.1.3.2)
108
- actioncable (= 6.1.3.2)
109
- actionmailbox (= 6.1.3.2)
110
- actionmailer (= 6.1.3.2)
111
- actionpack (= 6.1.3.2)
112
- actiontext (= 6.1.3.2)
113
- actionview (= 6.1.3.2)
114
- activejob (= 6.1.3.2)
115
- activemodel (= 6.1.3.2)
116
- activerecord (= 6.1.3.2)
117
- activestorage (= 6.1.3.2)
118
- activesupport (= 6.1.3.2)
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 (= 6.1.3.2)
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.0)
146
+ rails-html-sanitizer (1.4.3)
126
147
  loofah (~> 2.3)
127
- railties (6.1.3.2)
128
- actionpack (= 6.1.3.2)
129
- activesupport (= 6.1.3.2)
148
+ railties (7.0.3.1)
149
+ actionpack (= 7.0.3.1)
150
+ activesupport (= 7.0.3.1)
130
151
  method_source
131
- rake (>= 0.8.7)
152
+ rake (>= 12.2)
132
153
  thor (~> 1.0)
133
- rainbow (3.0.0)
134
- rake (13.0.3)
135
- regexp_parser (2.1.1)
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
- rubocop (1.17.0)
159
+ ricecream (0.2.1)
160
+ rubocop (1.33.0)
161
+ json (~> 2.3)
138
162
  parallel (~> 1.10)
139
- parser (>= 3.0.0.0)
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.7.0, < 2.0)
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.7.0)
147
- parser (>= 3.0.1.1)
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.3)
155
- sprockets (4.0.2)
156
- concurrent-ruby (~> 1.0)
157
- rack (> 1, < 3)
158
- sprockets-rails (3.2.2)
159
- actionpack (>= 4.0)
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.0.0)
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.4.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.2.17
210
+ 2.3.14
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2019-2020 Dittmar Krall - www.matique.com
1
+ Copyright 2019-2022 Dittmar Krall - www.matiq.com
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # ActWithFlags
2
2
  [![Gem Version](https://badge.fury.io/rb/act_with_flags.png)](http://badge.fury.io/rb/act_with_flags)
3
3
 
4
- Required by key.matique.
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
- ActWithFlags is Copyright (c) 2019 [Dittmar Krall](matique.com UG) and
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 'rake/testtask'
1
+ require "rake/testtask"
2
2
 
3
- desc 'Run the tests.'
3
+ desc "Run the tests."
4
4
  Rake::TestTask.new do |t|
5
- t.libs << 'lib'
6
- t.libs << 'test'
7
- t.pattern = 'test/**/*_test.rb'
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".
@@ -1,28 +1,28 @@
1
- lib = File.expand_path('lib', __dir__)
1
+ lib = File.expand_path("lib", __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'act_with_flags/version'
3
+ require "act_with_flags/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = 'act_with_flags'
7
- s.version = ActWithFlags::VERSION
8
- s.summary = %(act_with_flags gem)
9
- s.description = %(Handles flags in a Rails model instance)
10
- s.authors = ['Dittmar Krall']
11
- s.email = ['dittmar.krall@matique.de']
12
- s.homepage = 'http://matique.de'
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 = 'MIT'
15
- s.platform = Gem::Platform::RUBY
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 = `git ls-files -z`.split("\x0")
18
- s.test_files = s.files.grep(%r{^(test|spec|features)/})
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 'bundler'
22
- s.add_development_dependency 'rake'
23
- s.add_development_dependency 'appraisal'
24
- s.add_development_dependency 'combustion'
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 'minitest'
27
- s.add_development_dependency 'sqlite3'
26
+ s.add_development_dependency "minitest"
27
+ s.add_development_dependency "sqlite3"
28
28
  end
@@ -8,7 +8,8 @@ group :test do
8
8
  gem "observr"
9
9
  gem "rubocop", require: false
10
10
  gem "simplecov", require: false
11
- gem "benchmark-ips"
11
+ gem "benchmark-ips", require: false
12
+ gem "ricecream", require: false
12
13
  end
13
14
 
14
15
  gemspec path: "../"
@@ -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: "../"