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.
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: "../"