simple_column-scopes 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -1,47 +1,206 @@
1
- # SimpleColumn::Scopes
1
+ | 📍 NOTE |
2
+ |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
+ | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
+ | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
+ | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
+ | Simply put - there was active policy for adding or removing maintainers/owners of [rubygems][rubygems-maint-policy] and [bundler][bundler-maint-policy], and those [policies were not followed][policy-fail]. |
7
+ | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
8
+ | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
9
+ | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
10
+ | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
11
+ | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
12
+ | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
13
+ | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
14
+
15
+ [rubygems-org]: https://github.com/rubygems/
16
+ [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
17
+ [draper-takeover]: https://joel.drapper.me/p/ruby-central-takeover/
18
+ [ellen-takeover]: https://pup-e.com/blog/goodbye-rubygems/
19
+ [simi-removed]: https://www.reddit.com/r/ruby/s/gOk42POCaV
20
+ [martin-removed]: https://bsky.app/profile/martinemde.com/post/3m3occezxxs2q
21
+ [draper-lies]: https://joel.drapper.me/p/ruby-central-fact-check/
22
+ [draper-theft]: https://joel.drapper.me/p/ruby-central/
23
+ [reinteractive]: https://reinteractive.com/ruby-on-rails
24
+ [gem-coop]: https://gem.coop
25
+ [gem-naming]: https://github.com/gem-coop/gem.coop/issues/12
26
+ [martin-ann]: https://martinemde.com/2025/10/05/announcing-gem-coop.html
27
+ [gem-scopes]: https://github.com/galtzo-floss/bundle-namespace
28
+ [gem-server]: https://github.com/galtzo-floss/gem-server
29
+ [reinteractive-podcast]: https://youtu.be/_H4qbtC5qzU?si=BvuBU90R2wAqD2E6
30
+ [bundler-maint-policy]: https://github.com/ruby/rubygems/blob/b1ab33a3d52310a84d16b193991af07f5a6a07c0/doc/bundler/playbooks/TEAM_CHANGES.md
31
+ [rubygems-maint-policy]: https://github.com/ruby/rubygems/blob/b1ab33a3d52310a84d16b193991af07f5a6a07c0/doc/rubygems/POLICIES.md?plain=1#L187-L196
32
+ [policy-fail]: https://www.reddit.com/r/ruby/comments/1ove9vp/rubycentral_hates_this_one_fact/
33
+
34
+ [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![simple_column-scopes Logo by Aboling0, CC BY-SA 4.0][🖼️simple_column-scopes-i]][🖼️simple_column-scopes]
35
+
36
+ [🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
37
+ [🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN
38
+ [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
39
+ [🖼️ruby-lang]: https://www.ruby-lang.org/
40
+ [🖼️simple_column-scopes-i]: https://logos.galtzo.com/assets/images/galtzo-floss/simple_column-scopes/avatar-192px.svg
41
+ [🖼️simple_column-scopes]: https://github.com/galtzo-floss/simple_column-scopes
42
+
43
+ # 🏛️ SimpleColumn::Scopes
44
+
45
+ [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![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 JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
46
+
47
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
48
+
49
+ ---
50
+
51
+ `if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
52
+
53
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
54
+
55
+ ## 🌻 Synopsis
2
56
 
3
57
  Create dynamic modules which define dynamic methods for scopes based on a dynamic array of column names!
4
58
 
5
- ## Why?
59
+ ### Why?
6
60
 
7
61
  Why replace a simple `where` query with a method from a DSL like this?
8
-
62
+
9
63
  * Tokenizing your logic makes it easy to find with grep or other search tools.
10
- - Do a search for `.where(` in a large codebase, and may wish the specific thing you are looking for was tokenized.
64
+ - Do a search for `.where(` in a large codebase, and may wish the specific thing you are looking for was tokenized.
11
65
  * Creating small blocks of logic on which to build, of a uniform nature, can make applications
12
- - more robust (this will raise a noisy error on a typo - if the column doesn't exist, or the scope prefix is incorrect)
13
- - reduce typos (see above)
14
- - reduce mental overhead (the same pattern every time, no variation; `for_<column_name>` always means the same thing)
66
+ - more robust (this will raise a noisy error on a typo - if the column doesn't exist, or the scope prefix is incorrect)
67
+ - reduce typos (see above)
68
+ - reduce mental overhead (the same pattern every time, no variation; `for_<column_name>` always means the same thing)
15
69
  * Profit
16
70
 
17
- ## Installation
71
+ ## 💡 Info you can shake a stick at
18
72
 
19
- Add this line to your application's Gemfile:
73
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
74
+ |-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
75
+ | Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] ![JRuby 9.3 Compat][💎jruby-9.3i] ![JRuby 9.4 Compat][💎jruby-9.4i] <br/> [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] |
76
+ | Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] ![Truffle Ruby 23.0 Compat][💎truby-23.0i] ![Truffle Ruby 23.1 Compat][💎truby-23.1i] <br/> [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] |
77
+ | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] |
78
+ | Works with MRI Ruby 2 | [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] |
79
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
80
+ | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
81
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
82
+ | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![Compatible with Apache Software Projects: Verified by SkyWalking Eyes][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
83
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
84
+ | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
85
+ | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
20
86
 
21
- ```ruby
22
- gem 'simple_column-scopes'
87
+ ### Compatibility
88
+
89
+ Compatible with MRI Ruby 2.4.0+, and concordant releases of JRuby, and TruffleRuby.
90
+
91
+ | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
92
+ |------------------------------------------------|--------------------------------------------------------|
93
+ | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
94
+
95
+ ### Federated DVCS
96
+
97
+ <details markdown="1">
98
+ <summary>Find this repo on federated forges (Coming soon!)</summary>
99
+
100
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
101
+ |-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
102
+ | 🧪 [galtzo-floss/simple_column-scopes on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
103
+ | 🧊 [galtzo-floss/simple_column-scopes on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
104
+ | 🐙 [galtzo-floss/simple_column-scopes on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
105
+ | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
106
+
107
+ </details>
108
+
109
+ [gh-discussions]: https://github.com/galtzo-floss/simple_column-scopes/discussions
110
+
111
+ ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/simple_column-scopes)](https://tidelift.com/subscription/pkg/rubygems-simple_column-scopes?utm_source=rubygems-simple_column-scopes&utm_medium=referral&utm_campaign=readme)
112
+
113
+ Available as part of the Tidelift Subscription.
114
+
115
+ <details markdown="1">
116
+ <summary>Need enterprise-level guarantees?</summary>
117
+
118
+ The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
119
+
120
+ [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
121
+
122
+ - 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies
123
+ - 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
124
+ - 💡Tidelift pays maintainers to maintain the software you depend on!<br/>📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers
125
+
126
+ Alternatively:
127
+
128
+ - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
129
+ - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
130
+ - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
131
+
132
+ </details>
133
+
134
+ ## ✨ Installation
135
+
136
+ Install the gem and add to the application's Gemfile by executing:
137
+
138
+ ```console
139
+ bundle add simple_column-scopes
140
+ ```
141
+
142
+ If bundler is not being used to manage dependencies, install the gem by executing:
143
+
144
+ ```console
145
+ gem install simple_column-scopes
146
+ ```
147
+
148
+ ### 🔒 Secure Installation
149
+
150
+ <details markdown="1">
151
+ <summary>For Medium or High Security Installations</summary>
152
+
153
+ This gem is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
154
+ [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
155
+ by following the instructions below.
156
+
157
+ Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate:
158
+
159
+ ```console
160
+ gem cert --add <(curl -Ls https://raw.github.com/galtzo-floss/certs/main/pboling.pem)
161
+ ```
162
+
163
+ You only need to do that once. Then proceed to install with:
164
+
165
+ ```console
166
+ gem install simple_column-scopes -P HighSecurity
23
167
  ```
24
168
 
25
- And then execute:
169
+ The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies.
26
170
 
27
- $ bundle
171
+ If you want to up your security game full-time:
28
172
 
29
- Or install it yourself as:
173
+ ```console
174
+ bundle config set --global trust-policy MediumSecurity
175
+ ```
176
+
177
+ `MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed.
178
+
179
+ NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
180
+
181
+ </details>
30
182
 
31
- $ gem install simple_column-scopes
183
+ ## ⚙️ Configuration
32
184
 
33
- ## Usage
185
+ There isn't any.
186
+
187
+ ## 🔧 Basic Usage
34
188
 
35
189
  Given an ActiveRecord model with a column: `user_id`
36
190
  Create a scope that queries it, by prefixing `for_` to the column name:
37
191
 
38
192
  ```ruby
39
193
  include SimpleColumn::Scopes.new(:for_user_id)
194
+
40
195
  ```
196
+
41
197
  is equivalent to:
198
+
42
199
  ```ruby
43
- def self.for_user_id(user_id)
44
- where(user_id: user_id)
200
+ class << self
201
+ def for_user_id(user_id)
202
+ where(user_id: user_id)
203
+ end
45
204
  end
46
205
  ```
47
206
 
@@ -56,7 +215,6 @@ Complete example\*:
56
215
  # user_id :integer(4)
57
216
  # seller_id :integer(4)
58
217
  class Monkey < ActiveRecord::Base
59
-
60
218
  include SimpleColumn::Scopes.new(:for_user_id, :for_seller_id, :etc)
61
219
  # => for_user_id, and for_seller_id scopes are added to the model,
62
220
  # and they query on the user_id and seller_id columns, respectively
@@ -68,20 +226,391 @@ Monkey.for_seller_id(2)
68
226
 
69
227
  \* This software may not be suitable for buying and selling of Monkeys. This is simply a contrived example.
70
228
 
71
- ## Development
229
+ ## 🦷 FLOSS Funding
230
+
231
+ While galtzo-floss tools are free software and will always be, the project would benefit immensely from some funding.
232
+ Raising a monthly budget of... "dollars" would make the project more sustainable.
233
+
234
+ We welcome both individual and corporate sponsors! We also offer a
235
+ wide array of funding channels to account for your preferences
236
+ (although currently [Open Collective][🖇osc] is our preferred funding platform).
237
+
238
+ **If you're working in a company that's making significant use of galtzo-floss tools we'd
239
+ appreciate it if you suggest to your company to become a galtzo-floss sponsor.**
240
+
241
+ You can support the development of galtzo-floss tools via
242
+ [GitHub Sponsors][🖇sponsor],
243
+ [Liberapay][⛳liberapay],
244
+ [PayPal][🖇paypal],
245
+ [Open Collective][🖇osc]
246
+ and [Tidelift][🏙️entsup-tidelift].
247
+
248
+ | 📍 NOTE |
249
+ |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
250
+ | If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
251
+
252
+ ### Open Collective for Individuals
253
+
254
+ Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/galtzo-floss#backer)]
255
+
256
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
257
+
258
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
259
+ No backers yet. Be the first!
260
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
261
+
262
+ ### Open Collective for Organizations
263
+
264
+ Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/galtzo-floss#sponsor)]
265
+
266
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
267
+
268
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
269
+ No sponsors yet. Be the first!
270
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
271
+
272
+ [kettle-readme-backers]: https://github.com/galtzo-floss/simple_column-scopes/blob/main/exe/kettle-readme-backers
273
+
274
+ ### Another way to support open-source
275
+
276
+ I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats).
277
+
278
+ If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
279
+
280
+ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed to empower open-source developers like myself to get paid for the work we do, in a sustainable way. Please give it a look.
281
+
282
+ **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
283
+
284
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS efforts using Patreon][🖇patreon-img]][🖇patreon]
285
+
286
+ ## 🔐 Security
287
+
288
+ See [SECURITY.md][🔐security].
289
+
290
+ ## 🤝 Contributing
291
+
292
+ If you need some ideas of where to help, you could work on adding more code coverage,
293
+ or if it is already 💯 (see [below](#code-coverage)) check [reek](REEK), [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
294
+ or use the gem and think about how it could be better.
295
+
296
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
297
+
298
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
299
+
300
+ ### 🚀 Release Instructions
301
+
302
+ See [CONTRIBUTING.md][🤝contributing].
303
+
304
+ ### Code Coverage
305
+
306
+ [![Coverage Graph][🏀codecov-g]][🏀codecov]
307
+
308
+ [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
309
+
310
+ [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
311
+
312
+ ### 🪇 Code of Conduct
313
+
314
+ Everyone interacting with this project's codebases, issue trackers,
315
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
316
+
317
+ ## 🌈 Contributors
318
+
319
+ [![Contributors][🖐contributors-img]][🖐contributors]
320
+
321
+ Made with [contributors-img][🖐contrib-rocks].
322
+
323
+ Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/simple_column-scopes/-/graphs/main][🚎contributors-gl]
324
+
325
+ <details>
326
+ <summary>⭐️ Star History</summary>
327
+
328
+ <a href="https://star-history.com/#galtzo-floss/simple_column-scopes&Date">
329
+ <picture>
330
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/simple_column-scopes&type=Date&theme=dark" />
331
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=galtzo-floss/simple_column-scopes&type=Date" />
332
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=galtzo-floss/simple_column-scopes&type=Date" />
333
+ </picture>
334
+ </a>
335
+
336
+ </details>
337
+
338
+ ## 📌 Versioning
339
+
340
+ This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
341
+ Violations of this scheme should be reported as bugs.
342
+ Specifically, if a minor or patch version is released that breaks backward compatibility,
343
+ a new version should be immediately released that restores compatibility.
344
+ Breaking changes to the public API will only be introduced with new major versions.
345
+
346
+ > dropping support for a platform is both obviously and objectively a breaking change <br/>
347
+ >—Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
348
+
349
+ I understand that policy doesn't work universally ("exceptions to every rule!"),
350
+ but it is the policy here.
351
+ As such, in many cases it is good to specify a dependency on this library using
352
+ the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
353
+
354
+ For example:
355
+
356
+ ```ruby
357
+ spec.add_dependency("simple_column-scopes", "~> 0.1")
358
+ ```
359
+
360
+ <details markdown="1">
361
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
362
+
363
+ SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
364
+ is a *breaking change* to an API, and for that reason the bike shedding is endless.
365
+
366
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
367
+ read this article from the creator of SemVer:
368
+
369
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
370
+
371
+ </details>
372
+
373
+ See [CHANGELOG.md][📌changelog] for a list of releases.
374
+
375
+ ## 📄 License
376
+
377
+ The gem is available as open source under the terms of
378
+ the [MIT License][📄license] [![License: MIT][📄license-img]][📄license-ref].
379
+ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright-notice-explainer].
380
+
381
+ ### © Copyright
382
+
383
+ <ul>
384
+ <li>
385
+ Copyright (c) 2017, 2025 - 2026 Peter H. Boling, of
386
+ <a href="https://discord.gg/3qme4XHNKN">
387
+ Galtzo.com
388
+ <picture>
389
+ <img src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px-blank.svg" alt="Galtzo.com Logo (Wordless) by Aboling0, CC BY-SA 4.0" width="24">
390
+ </picture>
391
+ </a>, and simple_column-scopes contributors.
392
+ </li>
393
+ </ul>
394
+
395
+ ## 🤑 A request for help
396
+
397
+ Maintainers have teeth and need to pay their dentists.
398
+ After getting laid off in an RIF in March, and encountering difficulty finding a new one,
399
+ I began spending most of my time building open source tools.
400
+ I'm hoping to be able to pay for my kids' health insurance this month,
401
+ so if you value the work I am doing, I need your support.
402
+ Please consider sponsoring me or the project.
72
403
 
73
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
404
+ To join the community or get help 👇️ Join the Discord.
74
405
 
75
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
406
+ [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
76
407
 
77
- ## Contributing
408
+ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
78
409
 
79
- Bug reports and pull requests are welcome on GitHub at https://github.com/tophatter/simple_column-scopes. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
410
+ [![Sponsor galtzo-floss/simple_column-scopes on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
80
411
 
81
- ## License
412
+ ### Please give the project a star ⭐ ♥.
82
413
 
83
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
414
+ Thanks for RTFM. ☺️
84
415
 
85
- ## Code of Conduct
416
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
417
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
418
+ [⛳liberapay]: https://liberapay.com/pboling/donate
419
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss
420
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss
421
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss
422
+ [🖇osc-backers]: https://opencollective.com/galtzo-floss#backer
423
+ [🖇osc-backers-i]: https://opencollective.com/galtzo-floss/backers/badge.svg?style=flat
424
+ [🖇osc-sponsors]: https://opencollective.com/galtzo-floss#sponsor
425
+ [🖇osc-sponsors-i]: https://opencollective.com/galtzo-floss/sponsors/badge.svg?style=flat
426
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge
427
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge
428
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge
429
+ [🖇osc]: https://opencollective.com/galtzo-floss
430
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
431
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
432
+ [🖇sponsor]: https://github.com/sponsors/pboling
433
+ [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
434
+ [🖇polar]: https://polar.sh/pboling
435
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
436
+ [🖇kofi]: https://ko-fi.com/O5O86SNP4
437
+ [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
438
+ [🖇patreon]: https://patreon.com/galtzo
439
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
440
+ [🖇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
441
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
442
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
443
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
444
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
445
+ [🖇floss-funding.dev]: https://floss-funding.dev
446
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
447
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
448
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
449
+ [✉️ruby-friends-img]: https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white
450
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
86
451
 
87
- Everyone interacting in the SimpleColumn::Scopes project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/tophatter/simple_column-scopes/blob/master/CODE_OF_CONDUCT.md).
452
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
453
+ [⛳️gem-namespace]: https://github.com/galtzo-floss/simple_column-scopes
454
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-SimpleColumn::Scopes-3C2D2D.svg?style=square&logo=ruby&logoColor=white
455
+ [⛳️gem-name]: https://bestgems.org/gems/simple_column-scopes
456
+ [⛳️name-img]: https://img.shields.io/badge/name-simple__column--scopes-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
457
+ [⛳️tag-img]: https://img.shields.io/github/tag/galtzo-floss/simple_column-scopes.svg
458
+ [⛳️tag]: http://github.com/galtzo-floss/simple_column-scopes/releases
459
+ [🚂maint-blog]: http://www.railsbling.com/tags/simple_column-scopes
460
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
461
+ [🚂maint-contact]: http://www.railsbling.com/contact
462
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
463
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
464
+ [💖🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-LinkedIn-0B66C2?style=flat&logo=newjapanprowrestling
465
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
466
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
467
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
468
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
469
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
470
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
471
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
472
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
473
+ [💖🌳linktree]: https://linktr.ee/galtzo
474
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
475
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
476
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
477
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
478
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
479
+ [💖🧊berg]: https://codeberg.org/pboling
480
+ [💖🐙hub]: https://github.org/pboling
481
+ [💖🛖hut]: https://sr.ht/~galtzo/
482
+ [💖🧪lab]: https://gitlab.com/pboling
483
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
484
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
485
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
486
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
487
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-simple_column-scopes?utm_source=rubygems-simple_column-scopes&utm_medium=referral&utm_campaign=readme
488
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
489
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
490
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
491
+ [🚂railsbling]: http://www.railsbling.com
492
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
493
+ [📜src-gl]: https://gitlab.com/galtzo-floss/simple_column-scopes/
494
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
495
+ [📜src-cb]: https://codeberg.org/galtzo-floss/simple_column-scopes
496
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
497
+ [📜src-gh]: https://github.com/galtzo-floss/simple_column-scopes
498
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
499
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
500
+ [📜gl-wiki]: https://gitlab.com/galtzo-floss/simple_column-scopes/-/wikis/home
501
+ [📜gh-wiki]: https://github.com/galtzo-floss/simple_column-scopes/wiki
502
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
503
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
504
+ [👽dl-rank]: https://bestgems.org/gems/simple_column-scopes
505
+ [👽dl-ranki]: https://img.shields.io/gem/rd/simple_column-scopes.svg
506
+ [👽oss-help]: https://www.codetriage.com/galtzo-floss/simple_column-scopes
507
+ [👽oss-helpi]: https://www.codetriage.com/galtzo-floss/simple_column-scopes/badges/users.svg
508
+ [👽version]: https://bestgems.org/gems/simple_column-scopes
509
+ [👽versioni]: https://img.shields.io/gem/v/simple_column-scopes.svg
510
+ [🏀qlty-mnt]: https://qlty.sh/gh/galtzo-floss/projects/simple_column-scopes
511
+ [🏀qlty-mnti]: https://qlty.sh/gh/galtzo-floss/projects/simple_column-scopes/maintainability.svg
512
+ [🏀qlty-cov]: https://qlty.sh/gh/galtzo-floss/projects/simple_column-scopes/metrics/code?sort=coverageRating
513
+ [🏀qlty-covi]: https://qlty.sh/gh/galtzo-floss/projects/simple_column-scopes/coverage.svg
514
+ [🏀codecov]: https://codecov.io/gh/galtzo-floss/simple_column-scopes
515
+ [🏀codecovi]: https://codecov.io/gh/galtzo-floss/simple_column-scopes/graph/badge.svg
516
+ [🏀coveralls]: https://coveralls.io/github/galtzo-floss/simple_column-scopes?branch=main
517
+ [🏀coveralls-img]: https://coveralls.io/repos/github/galtzo-floss/simple_column-scopes/badge.svg?branch=main
518
+ [🖐codeQL]: https://github.com/galtzo-floss/simple_column-scopes/security/code-scanning
519
+ [🖐codeQL-img]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/codeql-analysis.yml/badge.svg
520
+ [🚎1-an-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/ancient.yml
521
+ [🚎1-an-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/ancient.yml/badge.svg
522
+ [🚎2-cov-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/coverage.yml
523
+ [🚎2-cov-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/coverage.yml/badge.svg
524
+ [🚎3-hd-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/heads.yml
525
+ [🚎3-hd-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/heads.yml/badge.svg
526
+ [🚎4-lg-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/legacy.yml
527
+ [🚎4-lg-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/legacy.yml/badge.svg
528
+ [🚎5-st-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/style.yml
529
+ [🚎5-st-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/style.yml/badge.svg
530
+ [🚎6-s-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/supported.yml
531
+ [🚎6-s-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/supported.yml/badge.svg
532
+ [🚎7-us-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/unsupported.yml
533
+ [🚎7-us-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/unsupported.yml/badge.svg
534
+ [🚎8-ho-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/hoary.yml
535
+ [🚎8-ho-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/hoary.yml/badge.svg
536
+ [🚎9-t-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/truffle.yml
537
+ [🚎9-t-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/truffle.yml/badge.svg
538
+ [🚎10-j-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/jruby.yml
539
+ [🚎10-j-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/jruby.yml/badge.svg
540
+ [🚎11-c-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/current.yml
541
+ [🚎11-c-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/current.yml/badge.svg
542
+ [🚎12-crh-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/dep-heads.yml
543
+ [🚎12-crh-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/dep-heads.yml/badge.svg
544
+ [🚎13-🔒️-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/locked_deps.yml
545
+ [🚎13-🔒️-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/locked_deps.yml/badge.svg
546
+ [🚎14-🔓️-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/unlocked_deps.yml
547
+ [🚎14-🔓️-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/unlocked_deps.yml/badge.svg
548
+ [🚎15-🪪-wf]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/license-eye.yml
549
+ [🚎15-🪪-wfi]: https://github.com/galtzo-floss/simple_column-scopes/actions/workflows/license-eye.yml/badge.svg
550
+ [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
551
+ [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
552
+ [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
553
+ [💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
554
+ [💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
555
+ [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
556
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
557
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
558
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
559
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
560
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
561
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink
562
+ [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1_(%F0%9F%9A%ABCI)-AABBCC??style=for-the-badge&logo=ruby&logoColor=pink
563
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
564
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
565
+ [💎jruby-9.1i]: https://img.shields.io/badge/JRuby-9.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
566
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
567
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
568
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red
569
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
570
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
571
+ [🤝gh-issues]: https://github.com/galtzo-floss/simple_column-scopes/issues
572
+ [🤝gh-pulls]: https://github.com/galtzo-floss/simple_column-scopes/pulls
573
+ [🤝gl-issues]: https://gitlab.com/galtzo-floss/simple_column-scopes/-/issues
574
+ [🤝gl-pulls]: https://gitlab.com/galtzo-floss/simple_column-scopes/-/merge_requests
575
+ [🤝cb-issues]: https://codeberg.org/galtzo-floss/simple_column-scopes/issues
576
+ [🤝cb-pulls]: https://codeberg.org/galtzo-floss/simple_column-scopes/pulls
577
+ [🤝cb-donate]: https://donate.codeberg.org/
578
+ [🤝contributing]: CONTRIBUTING.md
579
+ [🏀codecov-g]: https://codecov.io/gh/galtzo-floss/simple_column-scopes/graphs/tree.svg
580
+ [🖐contrib-rocks]: https://contrib.rocks
581
+ [🖐contributors]: https://github.com/galtzo-floss/simple_column-scopes/graphs/contributors
582
+ [🖐contributors-img]: https://contrib.rocks/image?repo=galtzo-floss/simple_column-scopes
583
+ [🚎contributors-gl]: https://gitlab.com/galtzo-floss/simple_column-scopes/-/graphs/main
584
+ [🪇conduct]: CODE_OF_CONDUCT.md
585
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
586
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
587
+ [📌semver]: https://semver.org/spec/v2.0.0.html
588
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
589
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
590
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
591
+ [📌changelog]: CHANGELOG.md
592
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
593
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
594
+ [📌gitmoji]: https://gitmoji.dev
595
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
596
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
597
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.029-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
598
+ [🔐security]: SECURITY.md
599
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
600
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
601
+ [📄license]: LICENSE.txt
602
+ [📄license-ref]: https://opensource.org/licenses/MIT
603
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
604
+ [📄license-compat]: https://dev.to/galtzo/how-to-check-license-compatibility-41h0
605
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
606
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
607
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
608
+ [🚎yard-current]: http://rubydoc.info/gems/simple_column-scopes
609
+ [🚎yard-head]: https://simple-column-scopes.galtzo.com
610
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
611
+ [💎SHA_checksums]: https://gitlab.com/galtzo-floss/simple_column-scopes/-/tree/main/checksums
612
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
613
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
614
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
615
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
616
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/