flag_shih_tzu 1.0.0 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b4edc96aec33d81ab8377dbe51fd66cb7e0633dd2611a10f1b079b9d2d6c653
4
- data.tar.gz: 1300a2a2dcc8a3e436920124052d43ae1f6265f0c3c111229388fd0defbe25c3
3
+ metadata.gz: 472ac78bf1e59389c96c54bb827ec504985253709cd4b49a98d7e00bbf01d222
4
+ data.tar.gz: ae64ae2304def0d3f2882b58722566672357b2f074699012bdaf375c502e041e
5
5
  SHA512:
6
- metadata.gz: 93a2062e91ea1fcefca35970f02d4c5073969b1dc61d2cfe66bf7f66875b1592c56fae42f0274f56747c6815a35ef0fa0d987e12fbacccbb968d3f43b3ebf110
7
- data.tar.gz: 61fb37f77d574600b55873b103ab5ddc2bb6427711096936b83040be4380c47b250af35811ba31b4b1f8b33d11cc34895bfcd9bc68ab21c2525821739c515ed7
6
+ metadata.gz: 40ed5f195da9bf4b306b64ebbbf23c458b6da9583a4b1f2cc6958d7f92508b15af558f08bdcf1ffec9faaaf3554e534b618c314b671a15f698c3f18042ffb53f
7
+ data.tar.gz: 013bc5634278e8c9dc9923cfd54216e465018fff49799502bb6d90e2f50d0fa70c6063ec021772039f088c2fab29e0a93503e29336bf8b02b71e88b61f85f56c
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,34 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.0.1] - 2026-06-05
34
+
35
+ - TAG: [v1.0.1][1.0.1t]
36
+ - COVERAGE: 90.95% -- 412/453 lines in 3 files
37
+ - BRANCH COVERAGE: 76.76% -- 142/185 branches in 3 files
38
+ - 27.78% documented
39
+
40
+ ### Fixed
41
+
42
+ - Fixed generated documentation URLs that incorrectly pointed at a monorepo
43
+ `gems/flag_shih_tzu` path.
44
+
45
+ ### Changed
46
+
47
+ - Raised generated `version_gem` and `appraisal2` dependency floors to
48
+ `version_gem` >= 1.1.10 and `appraisal2` >= 3.0.9.
49
+ - Refreshed generated project metadata, support documentation, CI workflows,
50
+ and development dependency floors from the current kettle-jem template.
51
+
52
+ - Updated the README synopsis to call out v1.0 multi-bit field support.
53
+
54
+ ### Removed
55
+
56
+ - Removed the legacy Test::Unit suite now that its coverage is represented by
57
+ the RSpec suite.
58
+ - Removed obsolete direct development dependencies on `bundler`, `rspec`,
59
+ `rspec_junit_formatter`, `test-unit`, and `wwtd`.
60
+
33
61
  ## [1.0.0] - 2026-05-26
34
62
 
35
63
  - TAG: [v1.0.0][1.0.0t]
@@ -282,6 +310,8 @@ Please file a bug if you notice a violation of semantic versioning.
282
310
 
283
311
  # Version 0.2.3 - last version maintained by XING AG
284
312
 
285
- [Unreleased]: https://github.com/galtzo-floss/flag_shih_tzu/compare/v1.0.0...HEAD
313
+ [Unreleased]: https://github.com/galtzo-floss/flag_shih_tzu/compare/v1.0.1...HEAD
314
+ [1.0.1]: https://github.com/galtzo-floss/flag_shih_tzu/compare/v1.0.0...v1.0.1
315
+ [1.0.1t]: https://github.com/galtzo-floss/flag_shih_tzu/releases/tag/v1.0.1
286
316
  [1.0.0]: https://github.com/galtzo-floss/flag_shih_tzu/compare/baaff102ad48e6c5b4bfb3efb088cec82fa1ddb4...v1.0.0
287
317
  [1.0.0t]: https://github.com/galtzo-floss/flag_shih_tzu/releases/tag/v1.0.0
data/CITATION.cff CHANGED
@@ -12,9 +12,9 @@ authors:
12
12
  orcid: 'https://orcid.org/0009-0008-8519-441X'
13
13
  identifiers:
14
14
  - type: url
15
- value: 'https://github.com/pboling/flag_shih_tzu/tree/main/gems/flag_shih_tzu'
15
+ value: 'https://github.com/galtzo-floss/flag_shih_tzu'
16
16
  description: "flag_shih_tzu"
17
- repository-code: 'https://github.com/pboling/flag_shih_tzu/tree/main/gems/flag_shih_tzu'
17
+ repository-code: 'https://github.com/galtzo-floss/flag_shih_tzu'
18
18
  abstract: >-
19
19
  flag_shih_tzu
20
20
  license: See license file
data/CONTRIBUTING.md CHANGED
@@ -102,13 +102,29 @@ Git hooks and commit message helpers (exe/kettle-commit-msg)
102
102
  - GIT_HOOK_FOOTER_SENTINEL: Required when footer append is enabled — a unique first-line sentinel to prevent duplicates
103
103
  - GIT_HOOK_FOOTER_APPEND_DEBUG: Extra debug output in the footer template (true/false)
104
104
 
105
+ Git diff driver setup
106
+ - Local setup writes repository `.gitattributes` entries and local Git `diff.smorg-*` command config so this checkout uses StructuredMerge semantic diffs.
107
+ - Global setup registers `diff.smorg-*` commands once in the user Git config; use it when you work across several StructuredMerge-enabled repositories.
108
+ - Include-file setup writes `.git/smorg/config` and includes it from local Git config, keeping command registrations out of the repository files.
109
+ - Git hosting forges generally ignore external diff drivers, so pull request views may still show raw textual diffs even when local `git diff` uses semantic drivers.
110
+
111
+ ```console
112
+ K_JEM_TEMPLATING=true bundle exec kettle-jem install
113
+ ```
114
+
115
+ Troubleshooting Git diffs
116
+ - Use `git diff --no-ext-diff` to compare against Git's built-in diff output.
117
+ - Use `git diff --no-textconv` when a textconv projection obscures the raw file bytes you need to inspect.
118
+ - If Git reports a missing `smorg-*` executable, rerun `bundle install` and the setup command above, then check `git config --local --get-regexp '^diff\.smorg-'`.
119
+ - To remove managed local entries, run `K_JEM_TEMPLATING=true bundle exec kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-ruby.command`.
120
+
105
121
  For a quick starting point, this repository’s `mise.toml` defines the shared defaults, and `.env.local` can override them locally. Copy `.env.local.example` to `.env.local`, use `KEY=value` lines, and either activate `mise` in your shell or run commands through `mise exec -C /path/to/project -- ...`.
106
122
 
107
123
  ## Appraisals
108
124
 
109
125
  From time to time the [appraisal2][🚎appraisal2] gemfiles in `gemfiles/` will need to be updated.
110
126
  Generated appraisal and CI workflow floors are controlled by `ruby.test_minimum`
111
- in `.kettle-jem.yml`; this project was templated with `ruby.test_minimum: 2.4`.
127
+ in `.structuredmerge/kettle-jem.yml`; this project was templated with `ruby.test_minimum: 2.4`.
112
128
  That value describes the lowest Ruby version expected to run the test/development
113
129
  toolchain, and it may be higher than the gemspec runtime floor.
114
130
 
data/FUNDING.md CHANGED
@@ -10,10 +10,10 @@ Many paths lead to being a sponsor or a backer of this project. Are you on such
10
10
 
11
11
  [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
12
12
  [⛳liberapay]: https://liberapay.com/pboling/donate
13
- [🖇osc-backers]: https://opencollective.com/#backer
14
- [🖇osc-backers-i]: https://opencollective.com//backers/badge.svg?style=flat
15
- [🖇osc-sponsors]: https://opencollective.com/#sponsor
16
- [🖇osc-sponsors-i]: https://opencollective.com//sponsors/badge.svg?style=flat
13
+ [🖇osc-backers]: https://opencollective.com/galtzo-floss#backer
14
+ [🖇osc-backers-i]: https://opencollective.com/galtzo-floss/backers/badge.svg?style=flat
15
+ [🖇osc-sponsors]: https://opencollective.com/galtzo-floss#sponsor
16
+ [🖇osc-sponsors-i]: https://opencollective.com/galtzo-floss/sponsors/badge.svg?style=flat
17
17
  [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
18
18
  [🖇sponsor]: https://github.com/sponsors/pboling
19
19
  [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
@@ -59,13 +59,13 @@ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed
59
59
  **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
60
60
 
61
61
  [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
62
- [🖇osc-all-img]: https://img.shields.io/opencollective/all/
63
- [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/
64
- [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/
65
- [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/?style=for-the-badge
66
- [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/?style=for-the-badge
67
- [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/?style=for-the-badge
68
- [🖇osc]: https://opencollective.com/
62
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss
63
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss
64
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss
65
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge
66
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge
67
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge
68
+ [🖇osc]: https://opencollective.com/galtzo-floss
69
69
  [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
70
70
  [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
71
71
  [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
data/LICENSE.md CHANGED
@@ -7,37 +7,37 @@ Choose the option that best fits your use case:
7
7
 
8
8
  ## Copyright Notice
9
9
 
10
- Copyright (c) 2009 Alto
11
- Copyright (c) 2009-2012 boosty
12
- Copyright (c) 2009-2010 Daniel Jagszent
13
- Copyright (c) 2009-2010 ladislav.martincik
14
- Copyright (c) 2009 Martin Stannard
15
- Copyright (c) 2009-2011 pboling
16
- Copyright (c) 2009 Sebastian Roebke
17
- Copyright (c) 2009 Tobias Bielohlawek
18
- Copyright (c) 2009 XING Engineering
19
- Copyright (c) 2010 Joost Baaij
20
- Copyright (c) 2010 Joost Baaij
21
- Copyright (c) 2010 Ryan Wallace
22
- Copyright (c) 2011 Arturas Slajus
23
- Copyright (c) 2011 Musy Bite
24
- Copyright (c) 2011, 2014 Tim Liner
25
- Copyright (c) 2012-2013 David DIDIER
26
- Copyright (c) 2012-2015, 2017-2018, 2026 Peter H. Boling
27
- Copyright (c) 2012 Tatsuhiko Miyagawa
28
- Copyright (c) 2013 Blake Thomson
29
- Copyright (c) 2013 Keith Pitty
30
- Copyright (c) 2013 Peter M. Goldstein
31
- Copyright (c) 2013 Thomas Jachmann
32
- Copyright (c) 2014 Alexander Tipugin
33
- Copyright (c) 2014, 2017-2018, 2025 Jonathan del Strother
34
- Copyright (c) 2015 Ivan
35
- Copyright (c) 2015 jfcaiceo
36
- Copyright (c) 2016 Xinran Xiao
37
- Copyright (c) 2017 shiro16
38
- Copyright (c) 2018 Peter Boling
39
- Copyright (c) 2018 xpol
40
- Copyright (c) 2018 Yusuke Ebihara
41
- Copyright (c) 2019 Amy Martin
42
- Copyright (c) 2025 Annibelle Boling
43
- Copyright (c) 2025 horiken
10
+ - Copyright (c) 2009 Alto
11
+ - Copyright (c) 2009-2012 boosty
12
+ - Copyright (c) 2009-2010 Daniel Jagszent
13
+ - Copyright (c) 2009-2010 ladislav.martincik
14
+ - Copyright (c) 2009 Martin Stannard
15
+ - Copyright (c) 2009-2011 pboling
16
+ - Copyright (c) 2009 Sebastian Roebke
17
+ - Copyright (c) 2009 Tobias Bielohlawek
18
+ - Copyright (c) 2009 XING Engineering
19
+ - Copyright (c) 2010 Joost Baaij
20
+ - Copyright (c) 2010 Joost Baaij
21
+ - Copyright (c) 2010 Ryan Wallace
22
+ - Copyright (c) 2011 Arturas Slajus
23
+ - Copyright (c) 2011 Musy Bite
24
+ - Copyright (c) 2011, 2014 Tim Liner
25
+ - Copyright (c) 2012-2013 David DIDIER
26
+ - Copyright (c) 2012-2015, 2017-2018, 2026 Peter H. Boling
27
+ - Copyright (c) 2012 Tatsuhiko Miyagawa
28
+ - Copyright (c) 2013 Blake Thomson
29
+ - Copyright (c) 2013 Keith Pitty
30
+ - Copyright (c) 2013 Peter M. Goldstein
31
+ - Copyright (c) 2013 Thomas Jachmann
32
+ - Copyright (c) 2014 Alexander Tipugin
33
+ - Copyright (c) 2014, 2017-2018, 2025 Jonathan del Strother
34
+ - Copyright (c) 2015 Ivan
35
+ - Copyright (c) 2015 jfcaiceo
36
+ - Copyright (c) 2016 Xinran Xiao
37
+ - Copyright (c) 2017 shiro16
38
+ - Copyright (c) 2018 Peter Boling
39
+ - Copyright (c) 2018 xpol
40
+ - Copyright (c) 2018 Yusuke Ebihara
41
+ - Copyright (c) 2019 Amy Martin
42
+ - Copyright (c) 2025 Annibelle Boling
43
+ - Copyright (c) 2025 horiken
data/README.md CHANGED
@@ -1,14 +1,21 @@
1
- [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-floss-i]][🖼️galtzo-floss] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![flag_shih_tzu Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-floss-flag_shih_tzu-i]][🖼️galtzo-floss-flag_shih_tzu]
2
-
3
- [🖼️galtzo-floss-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
4
- [🖼️galtzo-floss]: https://discord.gg/3qme4XHNKN
5
- [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
6
- [🖼️ruby-lang]: https://www.ruby-lang.org/
7
- [🖼️galtzo-floss-flag_shih_tzu-i]: https://logos.galtzo.com/assets/images/galtzo-floss/flag_shih_tzu/avatar-192px.svg
8
- [🖼️galtzo-floss-flag_shih_tzu]: https://github.com/galtzo-floss/flag_shih_tzu
1
+ <a href="https://github.com/galtzo-floss/flag_shih_tzu"><img alt="flag_shih_tzu Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/flag_shih_tzu/avatar-128px.svg" width="14%" align="right"/></a>
9
2
 
10
3
  # 🏁 FlagShihTzu
11
4
 
5
+ ## ⚠️ v1.0.0 => breaking change in default config ⚠️
6
+
7
+ Want old behavior?
8
+
9
+ ```ruby
10
+ FlagShihTzu.default_flag_query_mode = :in_list
11
+ ```
12
+
13
+ ✨️ The *old behavior* is *not deprecated*, is still *more performant*, and will always *be supported*.
14
+
15
+ 🦺 The new default allows *safe-by-default* rolling deployments with *flag migrations*.
16
+
17
+ 📗 Read more here: https://dev.to/galtzo/why-flagshihtzu-is-changing-its-default-sql-for-bit-flags-41l9
18
+
12
19
  [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf] [![FOSSA Status][🧪fossa-img]][🧪fossa]
13
20
 
14
21
  `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-floss], as I may have missed the [discord notification][🖼️galtzo-floss].
@@ -26,7 +33,7 @@ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-ta
26
33
 
27
34
  </details>
28
35
 
29
- ## 🌻 Synopsis
36
+ ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
30
37
 
31
38
  An extension for [ActiveRecord](https://rubygems.org/gems/activerecord)
32
39
  to store a collection of boolean attributes in a single integer column
@@ -37,6 +44,11 @@ to store a collection of boolean attributes (flags). Each flag can be used
37
44
  almost in the same way you would use any boolean attribute on an
38
45
  ActiveRecord object.
39
46
 
47
+ New for v1.0: FlagShihTzu also supports multi-bit fields with
48
+ `value_mode: :tri_state`, `bit_width:`, and custom `encoder:` implementations.
49
+ That lets one flag slot represent `true`, `false`, and `nil`, or other
50
+ enum-like states you encode, while still sharing the same integer column.
51
+
40
52
  The benefits:
41
53
 
42
54
  * No schema migrations needed for new boolean attributes. This helps a lot
@@ -51,7 +63,6 @@ without needing any migration. Just add a new flag to the `has_flags` call.
51
63
 
52
64
  What is a ["Shih Tzu"](http://en.wikipedia.org/wiki/Shih_Tzu)?
53
65
 
54
-
55
66
  ## 💡 Info you can shake a stick at
56
67
 
57
68
  | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
@@ -81,8 +92,6 @@ not practical for the current toolchain.
81
92
  |------------------------------------------------|--------------------------------------------------------|
82
93
  | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
83
94
 
84
-
85
-
86
95
  ### Federated DVCS
87
96
 
88
97
  <details markdown="1">
@@ -138,7 +147,6 @@ gem install flag_shih_tzu
138
147
 
139
148
  ## ⚙️ Configuration
140
149
 
141
-
142
150
  ## 🔧 Basic Usage
143
151
 
144
152
  FlagShihTzu assumes that your ActiveRecord model already has an [integer field][bit_field]
@@ -193,7 +201,6 @@ has_flags 1 => :warpdrive,
193
201
  :allow_overwrite => true
194
202
  ```
195
203
 
196
-
197
204
  ### Bit Fields: How it stores the values
198
205
 
199
206
  As said, FlagShihTzu uses a single integer column to store the values for all
@@ -231,7 +238,6 @@ and check individual flags.
231
238
 
232
239
  Read more about [bit fields][bit_field] here: http://en.wikipedia.org/wiki/Bit_field
233
240
 
234
-
235
241
  ### Flag value modes and custom encoders
236
242
 
237
243
  By default, each flag uses boolean mode. This keeps the historical one-bit
@@ -247,7 +253,7 @@ This is equivalent to:
247
253
  ```ruby
248
254
  has_flags(
249
255
  {1 => :warpdrive, 2 => :shields},
250
- value_mode: :boolean,
256
+ value_mode: :boolean
251
257
  )
252
258
  ```
253
259
 
@@ -256,7 +262,7 @@ For flags that need `true`, `false`, and `nil`, use tri-state mode:
256
262
  ```ruby
257
263
  has_flags(
258
264
  {1 => :warpdrive, 2 => :shields},
259
- value_mode: :tri_state,
265
+ value_mode: :tri_state
260
266
  )
261
267
  ```
262
268
 
@@ -291,7 +297,7 @@ Applications with specialized storage needs can provide a custom encoder:
291
297
  has_flags(
292
298
  {1 => :warpdrive},
293
299
  bit_width: 2,
294
- encoder: MyFlagEncoder,
300
+ encoder: MyFlagEncoder
295
301
  )
296
302
  ```
297
303
 
@@ -301,7 +307,6 @@ storage. You can still pass `bit_width: 1` or `bit_width: 2` directly, but
301
307
  API. If you set `bit_width: 3` or higher, you must provide an encoder so
302
308
  FlagShihTzu does not guess what the extra states mean.
303
309
 
304
-
305
310
  ### Using a custom column name
306
311
 
307
312
  The default column name to store the flags is `flags`, but you can provide a
@@ -359,7 +364,6 @@ on Spaceship:
359
364
  Spaceship#electrolytes_changed?
360
365
  Spaceship#has_electrolyte?
361
366
 
362
-
363
367
  ### Callbacks and Validations
364
368
 
365
369
  Optionally, you can set the `:bang_methods` option to true to also define the bang methods:
@@ -376,14 +380,12 @@ Alternatively, if you do want to *save a flag* to the database, while still avoi
376
380
  * sets a flag on a database record without triggering callbacks or validations
377
381
  * optionally syncs the ruby instance with new flag value, by default it does not.
378
382
 
379
-
380
383
  Example:
381
384
 
382
385
  ```ruby
383
386
  update_flag!(flag_name, flag_value, update_instance = false)
384
387
  ```
385
388
 
386
-
387
389
  ### Generated class methods
388
390
 
389
391
  Calling `has_flags` as shown above creates the following class methods
@@ -393,7 +395,6 @@ on Spaceship:
393
395
  Spaceship.flag_columns # [:features, :crew]
394
396
  ```
395
397
 
396
-
397
398
  ### Generated named scopes
398
399
 
399
400
  The following named scopes become available:
@@ -417,7 +418,6 @@ has_flags 1 => :warpdrive, 2 => :shields, 3 => :electrolytes, :named_scopes => f
417
418
  In a Rails 3+ application, FlagShihTzu will use `scope` internally to generate
418
419
  the scopes. The option on `has_flags` is still named `:named_scopes` however.
419
420
 
420
-
421
421
  ### Examples for using the generated methods
422
422
 
423
423
  ```ruby
@@ -461,7 +461,7 @@ Assigning a hash updates only the mentioned flags and preserves the rest:
461
461
  ```ruby
462
462
  enterprise.flags = {
463
463
  warpdrive: true,
464
- shields: false,
464
+ shields: false
465
465
  }
466
466
  ```
467
467
 
@@ -500,7 +500,6 @@ enterprise.attributes_with_flags
500
500
  # {"id" => 1, "features" => 1, "warpdrive" => true, "shields" => false, ...}
501
501
  ```
502
502
 
503
-
504
503
  ### Support for manually building conditions
505
504
 
506
505
  The following class methods may support you when manually building
@@ -521,7 +520,6 @@ generating SQL that references the same table more than once:
521
520
  Spaceship.shields_condition(table_alias: "evil_spaceships") # "(evil_spaceships.flags & 2 = 2)"
522
521
  ```
523
522
 
524
-
525
523
  ### Choosing a query mode
526
524
 
527
525
  By default, FlagShihTzu builds SQL conditions with bit operators:
@@ -633,7 +631,7 @@ Recommended removal path:
633
631
 
634
632
  ```ruby
635
633
  Spaceship.where(Spaceship.shields_condition).update_all(
636
- Spaceship.set_flag_sql(:shields, false),
634
+ Spaceship.set_flag_sql(:shields, false)
637
635
  )
638
636
  ```
639
637
 
@@ -782,7 +780,6 @@ of his code better, and some of my code better. I've been wanting to do a full
782
780
  rewrite of `flag_shih_tzu` ever since I inherited the project from
783
781
  [XING](https://github.com/xing), but I haven't had time. So I don't know.
784
782
 
785
-
786
783
  ## 🦷 FLOSS Funding
787
784
 
788
785
  While galtzo-floss tools are free software and will always be, the project would benefit immensely from some funding.
@@ -905,7 +902,7 @@ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with
905
902
  For example:
906
903
 
907
904
  ```ruby
908
- spec.add_dependency("flag_shih_tzu", "~> 0.0")
905
+ spec.add_dependency("flag_shih_tzu", "~> 1.0")
909
906
  ```
910
907
 
911
908
  <details markdown="1">
@@ -991,6 +988,8 @@ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
991
988
 
992
989
  ### Please give the project a star ⭐ ♥.
993
990
 
991
+ Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
992
+
994
993
  Thanks for RTFM. ☺️
995
994
 
996
995
  [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
@@ -1208,7 +1207,7 @@ Thanks for RTFM. ☺️
1208
1207
  | Package | flag_shih_tzu |
1209
1208
  | Description | 🏁 Bit fields for ActiveRecord:<br>This gem lets you use a single integer column in an ActiveRecord model<br>to store a collection of boolean attributes (flags). Each flag can be used<br>almost in the same way you would use any boolean attribute on an<br>ActiveRecord object. |
1210
1209
  | Homepage | https://github.com/galtzo-floss/flag_shih_tzu |
1211
- | Source | https://github.com/galtzo-floss/flag_shih_tzu/tree/v0.3.23 |
1210
+ | Source | https://github.com/galtzo-floss/flag_shih_tzu/tree/v1.0.0 |
1212
1211
  | License | `MIT` |
1213
- | Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/flag_shih_tzu, https://www.buymeacoffee.com/pboling |
1212
+ | Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/galtzo-floss, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/flag_shih_tzu, https://www.buymeacoffee.com/pboling |
1214
1213
  <!-- kettle-jem:metadata:end -->
data/SECURITY.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Version | Supported |
6
6
  |----------|-----------|
7
- | 1.latest | ✅ |
7
+ | 1.0.latest | ✅ |
8
8
 
9
9
  ## Security contact information
10
10
 
@@ -16,7 +16,7 @@ if defined?(ActiveRecord) && ActiveRecord::VERSION::MAJOR >= 3
16
16
  module Validations
17
17
  # A simple EachValidator that will check for the presence of the flags specified
18
18
  class PresenceOfFlagsValidator < EachValidator
19
- def validate_each(record, attribute, value)
19
+ def validate_each(record, attribute, _value)
20
20
  value = record.send(:read_attribute_for_validation, attribute)
21
21
  check_flag(record, attribute)
22
22
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module FlagShihTzu
4
4
  module Version
5
- VERSION = "1.0.0"
5
+ VERSION = "1.0.1"
6
6
  end
7
7
  VERSION = Version::VERSION # Traditional Constant Location
8
8
  end
data/lib/flag_shih_tzu.rb CHANGED
@@ -22,11 +22,11 @@ module FlagShihTzu
22
22
  "postgresql" => "PostgreSQLAdapter",
23
23
  "sqlite" => "SQLite3Adapter",
24
24
  "sqlite3" => "SQLite3Adapter",
25
- "trilogy" => "TrilogyAdapter",
25
+ "trilogy" => "TrilogyAdapter"
26
26
  }.freeze
27
27
  FLAG_ADAPTER_REQUIRE_NAMES = {
28
28
  "mysql" => "mysql2",
29
- "postgis" => "postgresql",
29
+ "postgis" => "postgresql"
30
30
  }.freeze
31
31
  FLAG_COLUMN_ONLY_ASSIGNMENT_ADAPTERS = ["jdbcsqlite3", "postgis", "postgresql", "sqlite", "sqlite3"].freeze
32
32
 
@@ -200,7 +200,7 @@ module FlagShihTzu
200
200
  return nil_sql_value(flag_mask) if FlagShihTzu::NIL_VALUES.include?(value)
201
201
 
202
202
  raise InvalidFlagValueException,
203
- %[Invalid tri-state flag value "#{value.inspect}"; expected true, false, or nil]
203
+ %(Invalid tri-state flag value "#{value.inspect}"; expected true, false, or nil)
204
204
  end
205
205
 
206
206
  def low_bit(flag_mask)
@@ -221,19 +221,19 @@ module FlagShihTzu
221
221
  check_for_column: FlagShihTzu.default_check_for_column,
222
222
  allow_overwrite: false,
223
223
  value_mode: nil,
224
- bit_width: nil,
224
+ bit_width: nil
225
225
  }.update(opts)
226
226
  opts[:value_mode], opts[:bit_width], opts[:encoder] =
227
227
  flag_encoder_config(opts[:value_mode], opts[:bit_width], opts[:encoder])
228
228
  if !valid_flag_column_name?(opts[:column])
229
- warn(%[FlagShihTzu says: Please use a String to designate column names! I see you here: #{caller(1..1).first}])
229
+ warn(%(FlagShihTzu says: Please use a String to designate column names! I see you here: #{caller(1..1).first}))
230
230
  opts[:column] = opts[:column].to_s
231
231
  end
232
232
  colmn = opts[:column]
233
233
  if opts[:check_for_column] && active_record_class? && !check_flag_column(colmn)
234
234
  warn(
235
- %[FlagShihTzu says: Flag column #{colmn} appears to be missing!
236
- To turn off this warning set check_for_column: false in has_flags definition here: #{caller(1..1).first}],
235
+ %(FlagShihTzu says: Flag column #{colmn} appears to be missing!
236
+ To turn off this warning set check_for_column: false in has_flags definition here: #{caller(1..1).first})
237
237
  )
238
238
  return
239
239
  end
@@ -258,11 +258,11 @@ To turn off this warning set check_for_column: false in has_flags definition her
258
258
  flag_hash.each do |flag_key, flag_name|
259
259
  unless valid_flag_key?(flag_key)
260
260
  raise ArgumentError,
261
- %[has_flags: flag keys should be positive integers, and #{flag_key} is not]
261
+ %(has_flags: flag keys should be positive integers, and #{flag_key} is not)
262
262
  end
263
263
  unless valid_flag_name?(flag_name)
264
264
  raise ArgumentError,
265
- %[has_flags: flag names should be symbols, and #{flag_name} is not]
265
+ %(has_flags: flag names should be symbols, and #{flag_name} is not)
266
266
  end
267
267
  flag_mask = opts[:encoder].mask(flag_key)
268
268
  # next if method already defined by flag_shih_tzu
@@ -272,7 +272,7 @@ To turn off this warning set check_for_column: false in has_flags definition her
272
272
  remove_existing_flag_methods(flag_name)
273
273
  else
274
274
  raise ArgumentError,
275
- %[has_flags: flag name #{flag_name} already defined, please choose different name]
275
+ %(has_flags: flag name #{flag_name} already defined, please choose different name)
276
276
  end
277
277
  end
278
278
 
@@ -491,11 +491,11 @@ To turn off this warning set check_for_column: false in has_flags definition her
491
491
  def check_flag(flag, colmn)
492
492
  unless colmn.is_a?(String)
493
493
  raise ArgumentError,
494
- %[Column name "#{colmn}" for flag "#{flag}" is not a string]
494
+ %(Column name "#{colmn}" for flag "#{flag}" is not a string)
495
495
  end
496
496
  if flag_mapping[colmn].nil? || !flag_mapping[colmn].include?(flag)
497
497
  raise ArgumentError,
498
- %[Invalid flag "#{flag}"]
498
+ %(Invalid flag "#{flag}")
499
499
  end
500
500
  end
501
501
 
@@ -512,7 +512,7 @@ To turn off this warning set check_for_column: false in has_flags definition her
512
512
  return colmn if mapping.include?(flag)
513
513
  end
514
514
  raise NoSuchFlagException.new(
515
- %[determine_flag_colmn_for: Couldn't determine column for your flags!],
515
+ %(determine_flag_colmn_for: Couldn't determine column for your flags!)
516
516
  )
517
517
  end
518
518
 
@@ -558,17 +558,17 @@ To turn off this warning set check_for_column: false in has_flags definition her
558
558
  def generated_flag_method_names(flag_name)
559
559
  [
560
560
  flag_name,
561
- "#{flag_name}?".to_sym,
562
- "#{flag_name}=".to_sym,
563
- "not_#{flag_name}".to_sym,
564
- "not_#{flag_name}?".to_sym,
565
- "not_#{flag_name}=".to_sym,
566
- "#{flag_name}_changed?".to_sym,
567
- "#{flag_name}_nil?".to_sym,
568
- "saved_change_to_#{flag_name}?".to_sym,
569
- "#{flag_name}!".to_sym,
570
- "not_#{flag_name}!".to_sym,
571
- "clear_#{flag_name}!".to_sym,
561
+ :"#{flag_name}?",
562
+ :"#{flag_name}=",
563
+ :"not_#{flag_name}",
564
+ :"not_#{flag_name}?",
565
+ :"not_#{flag_name}=",
566
+ :"#{flag_name}_changed?",
567
+ :"#{flag_name}_nil?",
568
+ :"saved_change_to_#{flag_name}?",
569
+ :"#{flag_name}!",
570
+ :"not_#{flag_name}!",
571
+ :"clear_#{flag_name}!"
572
572
  ]
573
573
  end
574
574
 
@@ -587,7 +587,7 @@ To turn off this warning set check_for_column: false in has_flags definition her
587
587
  [:tri_state, TriStateEncoder.bit_width, TriStateEncoder]
588
588
  else
589
589
  raise ArgumentError,
590
- %[has_flags: unknown value_mode #{value_mode.inspect}]
590
+ %(has_flags: unknown value_mode #{value_mode.inspect})
591
591
  end
592
592
  end
593
593
 
@@ -596,7 +596,7 @@ To turn off this warning set check_for_column: false in has_flags definition her
596
596
  return [:tri_state, TriStateEncoder.bit_width, TriStateEncoder] if bit_width == TriStateEncoder.bit_width
597
597
 
598
598
  raise ArgumentError,
599
- %[has_flags: bit_width #{bit_width} requires an encoder]
599
+ %(has_flags: bit_width #{bit_width} requires an encoder)
600
600
  end
601
601
 
602
602
  def custom_flag_encoder_config(value_mode, bit_width, encoder)
@@ -608,7 +608,7 @@ To turn off this warning set check_for_column: false in has_flags definition her
608
608
  return if bit_width.nil? || bit_width == expected_bit_width
609
609
 
610
610
  raise ArgumentError,
611
- %[has_flags: value_mode #{value_mode.inspect} requires bit_width #{expected_bit_width}]
611
+ %(has_flags: value_mode #{value_mode.inspect} requires bit_width #{expected_bit_width})
612
612
  end
613
613
 
614
614
  def flag_encoder_for_column(colmn)
@@ -737,19 +737,21 @@ To turn off this warning set check_for_column: false in has_flags definition her
737
737
  # then we must fail, because flag_shih_tzu will not work
738
738
  if found_column.nil?
739
739
  warn(
740
- %[Error: Column "#{colmn}" doesn't exist on table "#{custom_table_name}". Did you forget to run migrations?],
740
+ %(Error: Column "#{colmn}" doesn't exist on table "#{custom_table_name}". Did you forget to run migrations?)
741
741
  )
742
742
  return false
743
743
  elsif found_column.type != :integer
744
744
  raise IncorrectFlagColumnException.new(
745
- %[Table "#{custom_table_name}" must have an integer column named "#{colmn}" in order to use FlagShihTzu.],
745
+ %(Table "#{custom_table_name}" must have an integer column named "#{colmn}" in order to use FlagShihTzu.)
746
746
  )
747
747
  end
748
748
  else
749
749
  # ActiveRecord gem may not have loaded yet?
750
- warn(
751
- %[FlagShihTzu#has_flags: Table "#{custom_table_name}" doesn't exist. Have all migrations been run?],
752
- ) if has_ar
750
+ if has_ar
751
+ warn(
752
+ %(FlagShihTzu#has_flags: Table "#{custom_table_name}" doesn't exist. Have all migrations been run?)
753
+ )
754
+ end
753
755
  return false
754
756
  end
755
757
 
@@ -757,7 +759,7 @@ To turn off this warning set check_for_column: false in has_flags definition her
757
759
 
758
760
  # Quietly ignore NoDatabaseErrors - presumably we're being run during, eg, `rails db:create`.
759
761
  # NoDatabaseError was only introduced in Rails 4.1, which is why this error-handling is a bit convoluted.
760
- rescue StandardError => e
762
+ rescue => e
761
763
  if defined?(ActiveRecord::NoDatabaseError) && e.is_a?(ActiveRecord::NoDatabaseError)
762
764
  true
763
765
  else
@@ -954,8 +956,8 @@ To turn off this warning set check_for_column: false in has_flags definition her
954
956
  .select { |flag| flags_to_collect.include?(flag) }
955
957
  truthy_and_chosen.concat(
956
958
  collect_flags(*flags_to_collect) do |memo, flag|
957
- memo << "not_#{flag}".to_sym unless truthy_and_chosen.include?(flag)
958
- end,
959
+ memo << :"not_#{flag}" unless truthy_and_chosen.include?(flag)
960
+ end
959
961
  )
960
962
  end
961
963
 
@@ -4,4 +4,3 @@ module FlagShihTzu
4
4
  end
5
5
  VERSION: String
6
6
  end
7
-
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flag_shih_tzu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
@@ -50,7 +50,7 @@ dependencies:
50
50
  version: '1.1'
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: 1.1.9
53
+ version: 1.1.10
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -60,7 +60,7 @@ dependencies:
60
60
  version: '1.1'
61
61
  - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: 1.1.9
63
+ version: 1.1.10
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: kettle-dev
66
66
  requirement: !ruby/object:Gem::Requirement
@@ -70,7 +70,7 @@ dependencies:
70
70
  version: '2.0'
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: 2.0.1
73
+ version: 2.0.8
74
74
  type: :development
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
@@ -80,7 +80,7 @@ dependencies:
80
80
  version: '2.0'
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: 2.0.1
83
+ version: 2.0.8
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: bundler-audit
86
86
  requirement: !ruby/object:Gem::Requirement
@@ -99,16 +99,16 @@ dependencies:
99
99
  name: rake
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ">="
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: '0.9'
104
+ version: '13.0'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ">="
109
+ - - "~>"
110
110
  - !ruby/object:Gem::Version
111
- version: '0.9'
111
+ version: '13.0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: require_bench
114
114
  requirement: !ruby/object:Gem::Requirement
@@ -138,7 +138,7 @@ dependencies:
138
138
  version: '3.0'
139
139
  - - ">="
140
140
  - !ruby/object:Gem::Version
141
- version: 3.0.6
141
+ version: 3.0.9
142
142
  type: :development
143
143
  prerelease: false
144
144
  version_requirements: !ruby/object:Gem::Requirement
@@ -148,7 +148,7 @@ dependencies:
148
148
  version: '3.0'
149
149
  - - ">="
150
150
  - !ruby/object:Gem::Version
151
- version: 3.0.6
151
+ version: 3.0.9
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: kettle-test
154
154
  requirement: !ruby/object:Gem::Requirement
@@ -158,7 +158,7 @@ dependencies:
158
158
  version: '2.0'
159
159
  - - ">="
160
160
  - !ruby/object:Gem::Version
161
- version: 2.0.1
161
+ version: 2.0.3
162
162
  type: :development
163
163
  prerelease: false
164
164
  version_requirements: !ruby/object:Gem::Requirement
@@ -168,43 +168,43 @@ dependencies:
168
168
  version: '2.0'
169
169
  - - ">="
170
170
  - !ruby/object:Gem::Version
171
- version: 2.0.1
171
+ version: 2.0.3
172
172
  - !ruby/object:Gem::Dependency
173
- name: ruby-progressbar
173
+ name: turbo_tests2
174
174
  requirement: !ruby/object:Gem::Requirement
175
175
  requirements:
176
176
  - - "~>"
177
177
  - !ruby/object:Gem::Version
178
- version: '1.13'
178
+ version: '3.1'
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: 3.1.1
179
182
  type: :development
180
183
  prerelease: false
181
184
  version_requirements: !ruby/object:Gem::Requirement
182
185
  requirements:
183
186
  - - "~>"
184
187
  - !ruby/object:Gem::Version
185
- version: '1.13'
188
+ version: '3.1'
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: 3.1.1
186
192
  - !ruby/object:Gem::Dependency
187
- name: stone_checksums
193
+ name: ruby-progressbar
188
194
  requirement: !ruby/object:Gem::Requirement
189
195
  requirements:
190
196
  - - "~>"
191
197
  - !ruby/object:Gem::Version
192
- version: '1.0'
193
- - - ">="
194
- - !ruby/object:Gem::Version
195
- version: 1.0.3
198
+ version: '1.13'
196
199
  type: :development
197
200
  prerelease: false
198
201
  version_requirements: !ruby/object:Gem::Requirement
199
202
  requirements:
200
203
  - - "~>"
201
204
  - !ruby/object:Gem::Version
202
- version: '1.0'
203
- - - ">="
204
- - !ruby/object:Gem::Version
205
- version: 1.0.3
205
+ version: '1.13'
206
206
  - !ruby/object:Gem::Dependency
207
- name: gitmoji-regex
207
+ name: stone_checksums
208
208
  requirement: !ruby/object:Gem::Requirement
209
209
  requirements:
210
210
  - - "~>"
@@ -224,79 +224,30 @@ dependencies:
224
224
  - !ruby/object:Gem::Version
225
225
  version: 1.0.3
226
226
  - !ruby/object:Gem::Dependency
227
- name: bundler
228
- requirement: !ruby/object:Gem::Requirement
229
- requirements:
230
- - - ">="
231
- - !ruby/object:Gem::Version
232
- version: '2.2'
233
- type: :development
234
- prerelease: false
235
- version_requirements: !ruby/object:Gem::Requirement
236
- requirements:
237
- - - ">="
238
- - !ruby/object:Gem::Version
239
- version: '2.2'
240
- - !ruby/object:Gem::Dependency
241
- name: rspec
242
- requirement: !ruby/object:Gem::Requirement
243
- requirements:
244
- - - "~>"
245
- - !ruby/object:Gem::Version
246
- version: '3.0'
247
- type: :development
248
- prerelease: false
249
- version_requirements: !ruby/object:Gem::Requirement
250
- requirements:
251
- - - "~>"
252
- - !ruby/object:Gem::Version
253
- version: '3.0'
254
- - !ruby/object:Gem::Dependency
255
- name: rspec_junit_formatter
227
+ name: gitmoji-regex
256
228
  requirement: !ruby/object:Gem::Requirement
257
229
  requirements:
258
230
  - - "~>"
259
231
  - !ruby/object:Gem::Version
260
- version: '0.6'
261
- type: :development
262
- prerelease: false
263
- version_requirements: !ruby/object:Gem::Requirement
264
- requirements:
265
- - - "~>"
266
- - !ruby/object:Gem::Version
267
- version: '0.6'
268
- - !ruby/object:Gem::Dependency
269
- name: test-unit
270
- requirement: !ruby/object:Gem::Requirement
271
- requirements:
232
+ version: '2.0'
272
233
  - - ">="
273
234
  - !ruby/object:Gem::Version
274
- version: '3'
235
+ version: 2.0.1
275
236
  type: :development
276
237
  prerelease: false
277
238
  version_requirements: !ruby/object:Gem::Requirement
278
239
  requirements:
279
- - - ">="
280
- - !ruby/object:Gem::Version
281
- version: '3'
282
- - !ruby/object:Gem::Dependency
283
- name: wwtd
284
- requirement: !ruby/object:Gem::Requirement
285
- requirements:
286
- - - ">="
240
+ - - "~>"
287
241
  - !ruby/object:Gem::Version
288
- version: '1'
289
- type: :development
290
- prerelease: false
291
- version_requirements: !ruby/object:Gem::Requirement
292
- requirements:
242
+ version: '2.0'
293
243
  - - ">="
294
244
  - !ruby/object:Gem::Version
295
- version: '1'
296
- description: "\U0001F3C1 Bit fields for ActiveRecord:\nThis gem lets you use a single
297
- integer column in an ActiveRecord model\nto store a collection of boolean attributes
298
- (flags). Each flag can be used\nalmost in the same way you would use any boolean
299
- attribute on an\nActiveRecord object.\n"
245
+ version: 2.0.1
246
+ description: "\U0001F3C1 Single and Multi-Bit Fields for ActiveRecord:\nThis gem lets
247
+ you use a single integer column in an ActiveRecord model\nto store a collection
248
+ of boolean attributes (flags). Each flag can be used\nalmost in the same way you
249
+ would use any boolean attribute on an\nActiveRecord object. Support for multi-bit
250
+ fields, like tri-state or enums.\n"
300
251
  email:
301
252
  - floss@galtzo.com
302
253
  executables: []
@@ -331,10 +282,10 @@ licenses:
331
282
  - MIT
332
283
  metadata:
333
284
  homepage_uri: https://github.com/galtzo-floss/flag_shih_tzu
334
- source_code_uri: https://github.com/galtzo-floss/flag_shih_tzu/tree/v1.0.0
335
- changelog_uri: https://github.com/galtzo-floss/flag_shih_tzu/blob/v1.0.0/CHANGELOG.md
285
+ source_code_uri: https://github.com/galtzo-floss/flag_shih_tzu/tree/v1.0.1
286
+ changelog_uri: https://github.com/galtzo-floss/flag_shih_tzu/blob/v1.0.1/CHANGELOG.md
336
287
  bug_tracker_uri: https://github.com/galtzo-floss/flag_shih_tzu/issues
337
- documentation_uri: https://www.rubydoc.info/gems/flag_shih_tzu/1.0.0
288
+ documentation_uri: https://www.rubydoc.info/gems/flag_shih_tzu/1.0.1
338
289
  funding_uri: https://github.com/sponsors/pboling
339
290
  wiki_uri: https://github.com/galtzo-floss/flag_shih_tzu/wiki
340
291
  news_uri: https://www.railsbling.com/tags/flag_shih_tzu
@@ -342,7 +293,7 @@ metadata:
342
293
  rubygems_mfa_required: 'true'
343
294
  rdoc_options:
344
295
  - "--title"
345
- - "flag_shih_tzu - \U0001F3C1 Bit fields for ActiveRecord"
296
+ - "flag_shih_tzu - \U0001F3C1 Single and Multi Bit Fields for ActiveRecord"
346
297
  - "--main"
347
298
  - README.md
348
299
  - "--exclude"
@@ -365,5 +316,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
365
316
  requirements: []
366
317
  rubygems_version: 4.0.10
367
318
  specification_version: 4
368
- summary: "\U0001F3C1 Bit fields for ActiveRecord"
319
+ summary: "\U0001F3C1 Single and Multi Bit Fields for ActiveRecord"
369
320
  test_files: []
metadata.gz.sig CHANGED
Binary file