include_with_respect 1.0.0 → 1.0.2

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,179 @@
1
- # IncludeWithRespect
1
+ <a href="https://github.com/galtzo-floss"><img alt="galtzo-floss Logo by GitHub" src="https://github.com/galtzo-floss.png?size=192" width="14%" align="right"/></a>
2
2
 
3
- *Find out if your include/extend hooks are misbehaving!*
3
+ # 💎 IncludeWithRespect
4
4
 
5
- ## Why did I make this gem?
5
+ [![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Total downloads][👽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]
6
6
 
7
- Modules have hooks on `include` and `extend`, among others. These will run every time a module is included or extended into another module or class. If the hooks should only run once, (think shared state), then running them multiple times can cause difficult to trace bugs. This gem allows developers to trace modules that are re-included multiple times into other objects.
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know on Discord][✉️discord-invite] or [RubyForum][✉️ruby-forum], as I may have missed the notification.
8
8
 
9
- | Project | IncludeWithRespect |
10
- |------------------------ | ----------------------- |
11
- | gem name | [include_with_respect][rubygems] |
12
- | license | [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)][mit] |
13
- | download rank | [![Downloads Today](https://img.shields.io/gem/rd/include_with_respect.svg)](https://github.com/pboling/include_with_respect) |
14
- | version | [![Version](https://img.shields.io/gem/v/include_with_respect.svg)][rubygems] |
15
- | dependencies | [![Depfu](https://badges.depfu.com/badges/7ab03542cae3755d64038f7b3e7af53e/count.svg)](https://depfu.com/github/pboling/include_with_respect?project_id=10361) |
16
- | continuous integration | [![Build Status](https://travis-ci.org/pboling/include_with_respect.svg?branch=master)](https://travis-ci.org/pboling/include_with_respect) |
17
- | test coverage | [![Test Coverage](https://api.codeclimate.com/v1/badges/604a8f3a996c008cb2ae/test_coverage)](https://codeclimate.com/github/pboling/include_with_respect/test_coverage) |
18
- | maintainability | [![Maintainability](https://api.codeclimate.com/v1/badges/604a8f3a996c008cb2ae/maintainability)](https://codeclimate.com/github/pboling/include_with_respect/maintainability) |
19
- | code triage | [![Open Source Helpers](https://www.codetriage.com/pboling/include_with_respect/badges/users.svg)](https://www.codetriage.com/pboling/include_with_respect) |
20
- | FOSSA Licenses | [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpboling%2Finclude_with_respect.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fpboling%2Finclude_with_respect?ref=badge_shield) |
21
- | homepage | [on Github.com][homepage], [on Railsbling.com][blogpage] |
22
- | documentation | [on RDoc.info][documentation] |
23
- | Spread ~♡ⓛⓞⓥⓔ♡~ | [🌍 🌎 🌏][about-me], [🍚][crowdrise], [👼][angel-list], [🐛][topcoder], [:shipit:][coderwall], [![Tweet Peter][twitter-followers]][twitter] |
9
+ ---
24
10
 
11
+ `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.
25
12
 
26
- ## Installation
13
+ [![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 at ko-fi.com][🖇kofi-img]][🖇kofi]
27
14
 
28
- Add this line to your application's Gemfile:
15
+ <details markdown="1">
16
+ <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
17
+
18
+ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
19
+
20
+ </details>
21
+
22
+ ## 🌻 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>
23
+
24
+ ## 💡 Info you can shake a stick at
25
+
26
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
27
+ |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
28
+ | Works with JRuby | [![JRuby 9.2 Compat][💎jruby-9.2i]][🚎jruby-9.2-wf] [![JRuby 9.3 Compat][💎jruby-9.3i]][🚎jruby-9.3-wf] <br/> [![JRuby 9.4 Compat][💎jruby-9.4i]][🚎jruby-9.4-wf] [![JRuby 10.0 Compat][💎jruby-10.0i]][🚎jruby-10.0-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
29
+ | Works with Truffle Ruby | [![Truffle Ruby 22.3 Compat][💎truby-22.3i]][🚎truby-22.3-wf] [![Truffle Ruby 23.0 Compat][💎truby-23.0i]][🚎truby-23.0-wf] [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby 33.0 Compat][💎truby-33.0i]][🚎truby-33.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf] [![Truffle Ruby HEAD Compat][💎truby-headi]][🚎3-hd-wf]|
30
+ | Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
31
+ | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎ruby-3.0-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎ruby-3.1-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
32
+ | Works with MRI Ruby 2 | ![Ruby 2.0 Compat][💎ruby-2.0i] ![Ruby 2.1 Compat][💎ruby-2.1i] ![Ruby 2.2 Compat][💎ruby-2.2i] ![Ruby 2.3 Compat][💎ruby-2.3i] <br/> [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎ruby-2.4-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎ruby-2.5-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎ruby-2.6-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎ruby-2.7-wf]|
33
+ | Works with MRI Ruby 1 | ![Ruby 1.9 Compat][💎ruby-1.9i]|
34
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Get help from RubyForum][✉️ruby-forum-img]][✉️ruby-forum] [![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] |
35
+ | 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] |
36
+ | 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] |
37
+ | Compliance | [![License: MIT][📄license-img]][📄license] [![Apache license compatibility: Category A][📄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] |
38
+ | 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] |
39
+ | 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] |
40
+ | `...` 💖 | [![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] |
41
+
42
+ ### Compatibility
43
+
44
+ Compatible with MRI Ruby 1.9.2+, JRuby, and TruffleRuby.
45
+ CI workflows and Appraisals are generated for MRI Ruby 2.4+.
46
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
47
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
48
+ not practical for the current toolchain.
49
+
50
+ <a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
51
+
52
+ The _amazing_ test matrix is powered by the kettle-dev stack.
53
+
54
+ <details markdown="1">
55
+ <summary>How kettle-dev manages complexity in tests</summary>
56
+
57
+ | Gem | Source | Role | Total downloads |
58
+ |-----|--------|------|---------------------|
59
+ | [appraisal2](https://clickgems.clickhouse.com/dashboard/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [![Total downloads for appraisal2](https://img.shields.io/gem/dt/appraisal2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2) |
60
+ | [appraisal2-rubocop](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [![Total downloads for appraisal2-rubocop](https://img.shields.io/gem/dt/appraisal2-rubocop.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) |
61
+ | [kettle-dev](https://clickgems.clickhouse.com/dashboard/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [![Total downloads for kettle-dev](https://img.shields.io/gem/dt/kettle-dev.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-dev) |
62
+ | [kettle-jem](https://clickgems.clickhouse.com/dashboard/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [![Total downloads for kettle-jem](https://img.shields.io/gem/dt/kettle-jem.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-jem) |
63
+ | [kettle-soup-cover](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [![Total downloads for kettle-soup-cover](https://img.shields.io/gem/dt/kettle-soup-cover.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) |
64
+ | [kettle-test](https://clickgems.clickhouse.com/dashboard/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [![Total downloads for kettle-test](https://img.shields.io/gem/dt/kettle-test.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-test) |
65
+ | [rubocop-lts](https://clickgems.clickhouse.com/dashboard/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [![Total downloads for rubocop-lts](https://img.shields.io/gem/dt/rubocop-lts.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/rubocop-lts) |
66
+ | [turbo_tests2](https://clickgems.clickhouse.com/dashboard/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [![Total downloads for turbo_tests2](https://img.shields.io/gem/dt/turbo_tests2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/turbo_tests2) |
67
+
68
+ </details>
69
+
70
+ ### Federated DVCS
71
+
72
+ <details markdown="1">
73
+ <summary>Find this repo on federated forges (Coming soon!)</summary>
74
+
75
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
76
+ |-------------------------------------------------|-------------------------------------------|-------------------|------------------|-----------------|----------------|
77
+ | 🧪 [galtzo-floss/include_with_respect on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
78
+ | 🧊 [galtzo-floss/include_with_respect on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
79
+ | 🐙 [galtzo-floss/include_with_respect on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
80
+
81
+ </details>
82
+
83
+ ### Enterprise Support
84
+
85
+ [![Tidelift](https://tidelift.com/badges/package/rubygems/include_with_respect)](https://tidelift.com/subscription/pkg/rubygems-include_with_respect?utm_source=rubygems-include_with_respect&utm_medium=referral&utm_campaign=readme)
86
+
87
+ Available as part of the Tidelift Subscription.
88
+
89
+ <details markdown="1">
90
+ <summary>Need enterprise-level guarantees?</summary>
91
+
92
+ 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.
93
+
94
+ [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
95
+
96
+ - 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies
97
+ - 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
98
+ - 💡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
99
+
100
+ Alternatively:
101
+
102
+ - [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
103
+ - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
104
+ - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
105
+ - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
106
+
107
+ </details>
108
+
109
+ ## ✨ Installation
110
+
111
+ Install the gem and add to the application's Gemfile by executing:
112
+
113
+ ```console
114
+ bundle add include_with_respect
115
+ ```
116
+
117
+ If bundler is not being used to manage dependencies, install the gem by executing:
118
+
119
+ ```console
120
+ gem install include_with_respect
121
+ ```
122
+
123
+ ## ⚙️ Configuration
124
+
125
+ The default behavior raises when a module is included or extended more than
126
+ once. Configure the policy globally through
127
+ `IncludeWithRespect.configuration.level`; the supported levels are used by
128
+ the module’s duplicate-include handling, and can also be changed for a
129
+ specific test or integration.
29
130
 
30
131
  ```ruby
31
- gem 'include_with_respect'
132
+ require "include_with_respect"
133
+
134
+ IncludeWithRespect.configuration.level = :warning
32
135
  ```
33
136
 
34
- And then execute:
137
+ ## 🔧 Basic Usage
35
138
 
36
- $ bundle
139
+ ### With Ruby `Class`:
37
140
 
38
- Or install it yourself as:
141
+ ```ruby
142
+ module SomeOtherModule
143
+ def self.included(base)
144
+ base.send(:include, SomeModule)
145
+ end
146
+ end
39
147
 
40
- $ gem install include_with_respect
148
+ class MyClass
149
+ include IncludeWithRespect::ModuleWithRespect
150
+ include SomeModule
151
+ include SomeOtherModule
152
+ end
153
+ ```
41
154
 
42
- ## Usage
155
+ Because `SomeOtherModule` also includes `SomeModule` two things will happen that normally do not:
156
+ 1. a warning will be printed (via `puts`)
157
+ 2. the duplicate inclusion will be skipped (meaning the hooks will not run again)
158
+ - This is a major change in the behavior of including modules, but normally hooks running multiple times is not desired, or intended, which is why this gem exists!
43
159
 
44
- ### Example Use with `ActiveSupport::Concern`
160
+ ### With Ruby `Module`:
161
+
162
+ ```ruby
163
+ module MyModule
164
+ def self.included(base)
165
+ base.send(:include, IncludeWithRespect::ModuleWithRespect)
166
+ base.send(:include, SomeModule)
167
+ end
168
+ end
169
+ ```
170
+
171
+ Then if `MyModule` is included somewhere that also includes `SomeModule` two things will happen that normally do not:
172
+ 1. a warning will be printed (via `puts`)
173
+ 2. the duplicate inclusion will be skipped (meaning the hooks will not run again)
174
+ - This is a major change in the behavior of including modules, but normally hooks running multiple times is not desired, or intended, which is why this gem exists!
175
+
176
+ ### With Rails' `ActiveSupport::Concern`
45
177
 
46
178
  ```ruby
47
179
  module MyConcern
@@ -58,59 +190,413 @@ Then if `MyConcern` is included somewhere that also includes `SomeOtherConcern`
58
190
  2. the duplicate inclusion will be skipped (meaning the hooks will not run again)
59
191
  - This is a major change in the behavior of including modules, but normally hooks running multiple times is not desired, or intended, which is why this gem exists!
60
192
 
61
- ## Development
193
+ ### Raw Usage (more intrusive code changes)
194
+
195
+ ```ruby
196
+ module SomeOtherModule
197
+ def self.included(base)
198
+ base.send(:include, SomeModule)
199
+ end
200
+ end
201
+
202
+ class MyClass
203
+ include IncludeWithRespect
204
+ include_with_respect SomeModule
205
+ include_with_respect SomeOtherModule
206
+ end
207
+ ```
208
+
209
+ Same results as the other usage examples.
62
210
 
63
- 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.
211
+ ## 🦷 FLOSS Funding
64
212
 
65
- 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).
213
+ While galtzo-floss tools are free software and will always be, the project would benefit immensely from some funding.
214
+ Raising a monthly budget of... "dollars" would make the project more sustainable.
66
215
 
67
- ## Contributing
216
+ We welcome both individual and corporate sponsors! We also offer a
217
+ wide array of funding channels to account for your preferences.
218
+ Currently, [Open Collective][🖇osc] is our preferred funding platform.
68
219
 
69
- Bug reports and pull requests are welcome on GitHub at https://github.com/pboling/include_with_respect.
220
+ **If you're working in a company that's making significant use of galtzo-floss tools we'd
221
+ appreciate it if you suggest to your company to become a galtzo-floss sponsor.**
70
222
 
71
- Create an issue and tell me about it, or fix it yo'sef.
223
+ You can support the development of galtzo-floss tools via
224
+ [GitHub Sponsors][🖇sponsor],
225
+ [Liberapay][⛳liberapay],
226
+ [PayPal][🖇paypal],
227
+ [Open Collective][🖇osc]
228
+ and [Tidelift][🏙️entsup-tidelift].
72
229
 
73
- 1. Fork it
74
- 2. Create your feature branch (`git checkout -b my-new-feature`)
75
- 3. Commit your changes (`git commit -am 'Added some feature'`)
76
- 4. Push to the branch (`git push origin my-new-feature`)
77
- 5. Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
78
- 6. Create new Pull Request
230
+ | 📍 NOTE |
231
+ |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
232
+ | 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. |
79
233
 
80
- ## Versioning
234
+ ### Open Collective for Individuals
81
235
 
82
- This library aims to adhere to [Semantic Versioning 2.0.0][semver].
83
- Violations of this scheme should be reported as bugs. Specifically,
84
- if a minor or patch version is released that breaks backward
85
- compatibility, a new version should be immediately released that
86
- restores compatibility. Breaking changes to the public API will
87
- only be introduced with new major versions.
236
+ Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/galtzo-floss#backer)]
88
237
 
89
- As a result of this policy, you can (and should) specify a
90
- dependency on this gem using the [Pessimistic Version Constraint][pvc] with two digits of precision.
238
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
239
+
240
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
241
+ No backers yet. Be the first!
242
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
243
+
244
+ ### Open Collective for Organizations
245
+
246
+ 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)]
247
+
248
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
249
+
250
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
251
+ No sponsors yet. Be the first!
252
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
253
+
254
+ [kettle-readme-backers]: https://github.com/galtzo-floss/include_with_respect/blob/main/bin/kettle-readme-backers
255
+
256
+ ### Another way to support open-source
257
+
258
+ 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).
259
+
260
+ 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`.
261
+
262
+ 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.
263
+
264
+ **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
265
+
266
+ [![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 to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
267
+
268
+ ## 🔐 Security
269
+
270
+ See [SECURITY.md][🔐security].
271
+
272
+ ## 🤝 Contributing
273
+
274
+ If you need some ideas of where to help, you could work on adding more code coverage,
275
+ check [issues][🤝gh-issues] or [PRs][🤝gh-pulls], or use the gem and think about how it could be better.
276
+
277
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
278
+
279
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
280
+
281
+ ### 🚀 Release Instructions
282
+
283
+ See [CONTRIBUTING.md][🤝contributing].
284
+
285
+ ### Code Coverage
286
+
287
+ <details markdown="1">
288
+ <summary>Coverage service badges</summary>
289
+
290
+ [![Coverage Graph][🏀codecov-g]][🏀codecov]
291
+
292
+ [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
293
+
294
+ [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
295
+
296
+ </details>
297
+
298
+ ### 🪇 Code of Conduct
299
+
300
+ Everyone interacting with this project's codebases, issue trackers,
301
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
302
+
303
+ ## 🌈 Contributors
304
+
305
+ [![Contributors][🖐contributors-img]][🖐contributors]
306
+
307
+ Made with [contributors-img][🖐contrib-rocks].
308
+
309
+ Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/include_with_respect/-/graphs/main][🚎contributors-gl]
310
+
311
+ ## 📌 Versioning
312
+
313
+ This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
314
+ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
91
315
 
92
316
  For example:
93
317
 
94
- spec.add_dependency 'include_with_respect', '~> 0.0'
95
-
96
- ## Legal
97
-
98
- * [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
99
- * Copyright (c) 2019 [Peter H. Boling][peterboling] of [Rails Bling][railsbling]
100
-
101
- [semver]: http://semver.org/
102
- [pvc]: http://docs.rubygems.org/read/chapter/16#page74
103
- [railsbling]: http://www.railsbling.com
104
- [peterboling]: http://www.peterboling.com
105
- [coderwall]: http://coderwall.com/pboling
106
- [documentation]: http://rdoc.info/github/pboling/gem_bench/frames
107
- [homepage]: https://github.com/pboling/gem_bench
108
- [mit]: https://opensource.org/licenses/MIT
109
- [rubygems]: https://rubygems.org/gems/include_with_respect
110
- [about-me]: https://about.me/peter.boling
111
- [crowdrise]: https://www.crowdrise.com/helprefugeeswithhopefortomorrowliberia/fundraiser/peterboling
112
- [angel-list]: https://angel.co/peter-boling
113
- [topcoder]: https://www.topcoder.com/members/pboling/
114
- [coderwall]: http://coderwall.com/pboling
115
- [twitter-followers]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow
116
- [twitter]: http://twitter.com/galtzo
318
+ ```ruby
319
+ spec.add_dependency("include_with_respect", "~> 1.0")
320
+ ```
321
+
322
+ <details markdown="1">
323
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
324
+
325
+ Dropping support for a platform can be a breaking change for affected users.
326
+ If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
327
+
328
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
329
+ read this article from the creator of SemVer:
330
+
331
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
332
+
333
+ </details>
334
+
335
+ See [CHANGELOG.md][📌changelog] for a list of releases.
336
+
337
+ ## 📄 License
338
+
339
+ The gem is available as open source under the terms of
340
+ the [MIT](https://github.com/galtzo-floss/include_with_respect/blob/main/MIT.md) [![License: MIT][📄license-img]][📄license-ref].
341
+
342
+ ### © Copyright
343
+
344
+ See [LICENSE.md][📄license] for the official copyright notice.
345
+
346
+ <details markdown="1">
347
+ <summary>Copyright holders</summary>
348
+
349
+ - Copyright (c) 2019-2020, 2025-2026 Peter H. Boling
350
+
351
+ </details>
352
+
353
+ ## 🤑 A request for help
354
+
355
+ Maintainers have teeth and need to pay their dentists.
356
+ After getting laid off in an RIF in March, and encountering difficulty finding a new one,
357
+ I began spending most of my time building open source tools.
358
+ I'm hoping to be able to pay for my kids' health insurance this month,
359
+ so if you value the work I am doing, I need your support.
360
+ Please consider sponsoring me or the project.
361
+
362
+ To join the community or get help, use the RubyForum or Discord.
363
+
364
+ [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
365
+ [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
366
+
367
+ To say "thanks!" ☝️ Join the community or 👇️ send money.
368
+
369
+ [![Sponsor galtzo-floss/include_with_respect 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]
370
+
371
+ ### Please give the project a star ⭐ ♥.
372
+
373
+ 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.
374
+
375
+ Thanks for RTFM. ☺️
376
+
377
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
378
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
379
+ [⛳liberapay]: https://liberapay.com/pboling/donate
380
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss
381
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss
382
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss
383
+ [🖇osc-backers]: https://opencollective.com/galtzo-floss#backer
384
+ [🖇osc-backers-i]: https://opencollective.com/galtzo-floss/backers/badge.svg?style=flat
385
+ [🖇osc-sponsors]: https://opencollective.com/galtzo-floss#sponsor
386
+ [🖇osc-sponsors-i]: https://opencollective.com/galtzo-floss/sponsors/badge.svg?style=flat
387
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge
388
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge
389
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge
390
+ [🖇osc]: https://opencollective.com/galtzo-floss
391
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
392
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
393
+ [🖇sponsor]: https://github.com/sponsors/pboling
394
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
395
+ [🖇kofi]: https://ko-fi.com/pboling
396
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
397
+ [🖇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
398
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
399
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
400
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
401
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
402
+ [🖇floss-funding.dev]: https://floss-funding.dev
403
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
404
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
405
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
406
+ [✉️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
407
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
408
+ [✉️ruby-forum-top-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=flat&logo=discourse&label=Ruby%20Users%20Forum
409
+ [✉️ruby-forum-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=for-the-badge&logo=discourse&label=Ruby%20Users%20Forum
410
+ [✉️ruby-forum]: https://www.rubyforum.org/tag/galtzo-floss
411
+
412
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
413
+ [⛳️gem-namespace]: https://github.com/galtzo-floss/include_with_respect
414
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-IncludeWithRespect-3C2D2D.svg?style=square&logo=ruby&logoColor=white
415
+ [⛳️gem-name]: https://clickgems.clickhouse.com/dashboard/include_with_respect
416
+ [⛳️name-img]: https://img.shields.io/badge/name-include__with__respect-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
417
+ [⛳️tag-img]: https://img.shields.io/github/tag/galtzo-floss/include_with_respect.svg
418
+ [⛳️tag]: https://github.com/galtzo-floss/include_with_respect/releases
419
+ [🚂maint-blog]: http://www.railsbling.com/tags/include_with_respect
420
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
421
+ [🚂maint-contact]: http://www.railsbling.com/contact
422
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
423
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
424
+ [💖🖇linkedin-img]: https://img.shields.io/badge/LinkedIn-Profile-0B66C2?style=flat&logo=newjapanprowrestling
425
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
426
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
427
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
428
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
429
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
430
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
431
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
432
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
433
+ [💖🌳linktree]: https://linktr.ee/galtzo
434
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
435
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
436
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
437
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
438
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
439
+ [💖🧊berg]: https://codeberg.org/pboling
440
+ [💖🐙hub]: https://github.org/pboling
441
+ [💖🛖hut]: https://sr.ht/~galtzo/
442
+ [💖🧪lab]: https://gitlab.com/pboling
443
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
444
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
445
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
446
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
447
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-include_with_respect?utm_source=rubygems-include_with_respect&utm_medium=referral&utm_campaign=readme
448
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
449
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
450
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
451
+ [🚂railsbling]: http://www.railsbling.com
452
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
453
+ [📜src-gl]: https://gitlab.com/galtzo-floss/include_with_respect
454
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
455
+ [📜src-cb]: https://codeberg.org/galtzo-floss/include_with_respect
456
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
457
+ [📜src-gh]: https://github.com/galtzo-floss/include_with_respect
458
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
459
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
460
+ [📜gl-wiki]: https://gitlab.com/galtzo-floss/include_with_respect/-/wikis/home
461
+ [📜gh-wiki]: https://github.com/galtzo-floss/include_with_respect/wiki
462
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
463
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
464
+ [👽dl-rank]: https://clickgems.clickhouse.com/dashboard/include_with_respect
465
+ [👽dl-ranki]: https://img.shields.io/gem/dt/include_with_respect.svg
466
+ [👽version]: https://clickgems.clickhouse.com/dashboard/include_with_respect
467
+ [👽versioni]: https://img.shields.io/gem/v/include_with_respect.svg
468
+ [🏀qlty-mnt]: https://qlty.sh/gh/galtzo-floss/projects/include_with_respect
469
+ [🏀qlty-mnti]: https://qlty.sh/gh/galtzo-floss/projects/include_with_respect/maintainability.svg
470
+ [🏀qlty-cov]: https://qlty.sh/gh/galtzo-floss/projects/include_with_respect/metrics/code?sort=coverageRating
471
+ [🏀qlty-covi]: https://qlty.sh/gh/galtzo-floss/projects/include_with_respect/coverage.svg
472
+ [🏀codecov]: https://codecov.io/gh/galtzo-floss/include_with_respect
473
+ [🏀codecovi]: https://codecov.io/gh/galtzo-floss/include_with_respect/graph/badge.svg
474
+ [🏀coveralls]: https://coveralls.io/github/galtzo-floss/include_with_respect?branch=main
475
+ [🏀coveralls-img]: https://coveralls.io/repos/github/galtzo-floss/include_with_respect/badge.svg?branch=main
476
+ [🚎ruby-2.4-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/ruby-2.4.yml
477
+ [🚎ruby-2.5-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/ruby-2.5.yml
478
+ [🚎ruby-2.6-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/ruby-2.6.yml
479
+ [🚎ruby-2.7-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/ruby-2.7.yml
480
+ [🚎ruby-3.0-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/ruby-3.0.yml
481
+ [🚎ruby-3.1-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/ruby-3.1.yml
482
+ [🚎ruby-3.2-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/ruby-3.2.yml
483
+ [🚎ruby-3.3-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/ruby-3.3.yml
484
+ [🚎ruby-3.4-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/ruby-3.4.yml
485
+ [🚎jruby-9.2-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/jruby-9.2.yml
486
+ [🚎jruby-9.3-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/jruby-9.3.yml
487
+ [🚎jruby-9.4-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/jruby-9.4.yml
488
+ [🚎jruby-10.0-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/jruby-10.0.yml
489
+ [🚎truby-22.3-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/truffleruby-22.3.yml
490
+ [🚎truby-23.0-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/truffleruby-23.0.yml
491
+ [🚎truby-23.1-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/truffleruby-23.1.yml
492
+ [🚎truby-24.2-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/truffleruby-24.2.yml
493
+ [🚎truby-25.0-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/truffleruby-25.0.yml
494
+ [🚎truby-33.0-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/truffleruby-33.0.yml
495
+ [🚎2-cov-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/coverage.yml
496
+ [🚎2-cov-wfi]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/coverage.yml/badge.svg
497
+ [🚎3-hd-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/heads.yml
498
+ [🚎3-hd-wfi]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/heads.yml/badge.svg
499
+ [🚎5-st-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/style.yml
500
+ [🚎5-st-wfi]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/style.yml/badge.svg
501
+ [🚎9-t-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/truffle.yml
502
+ [🚎9-t-wfi]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/truffle.yml/badge.svg
503
+ [🚎10-j-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/jruby.yml
504
+ [🚎10-j-wfi]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/jruby.yml/badge.svg
505
+ [🚎11-c-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/current.yml
506
+ [🚎11-c-wfi]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/current.yml/badge.svg
507
+ [🚎12-crh-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/dep-heads.yml
508
+ [🚎12-crh-wfi]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/dep-heads.yml/badge.svg
509
+ [🚎13-🔒️-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/locked_deps.yml
510
+ [🚎13-🔒️-wfi]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/locked_deps.yml/badge.svg
511
+ [🚎14-🔓️-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/unlocked_deps.yml
512
+ [🚎14-🔓️-wfi]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/unlocked_deps.yml/badge.svg
513
+ [🚎15-🪪-wf]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/license-eye.yml
514
+ [🚎15-🪪-wfi]: https://github.com/galtzo-floss/include_with_respect/actions/workflows/license-eye.yml/badge.svg
515
+ [💎ruby-1.9i]: https://img.shields.io/badge/Ruby-1.9_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
516
+ [💎ruby-2.0i]: https://img.shields.io/badge/Ruby-2.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
517
+ [💎ruby-2.1i]: https://img.shields.io/badge/Ruby-2.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
518
+ [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
519
+ [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
520
+ [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
521
+ [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
522
+ [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
523
+ [💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
524
+ [💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
525
+ [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white
526
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
527
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
528
+ [💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
529
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
530
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
531
+ [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
532
+ [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
533
+ [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
534
+ [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
535
+ [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
536
+ [💎truby-33.0i]: https://img.shields.io/badge/Truffle_Ruby-33.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
537
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
538
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
539
+ [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
540
+ [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
541
+ [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
542
+ [💎jruby-10.0i]: https://img.shields.io/badge/JRuby-10.0-FBE742?style=for-the-badge&logo=ruby&logoColor=red
543
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
544
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
545
+ [🤝gh-issues]: https://github.com/galtzo-floss/include_with_respect/issues
546
+ [🤝gh-pulls]: https://github.com/galtzo-floss/include_with_respect/pulls
547
+ [🤝gl-issues]: https://gitlab.com/galtzo-floss/include_with_respect/-/issues
548
+ [🤝gl-pulls]: https://gitlab.com/galtzo-floss/include_with_respect/-/merge_requests
549
+ [🤝cb-issues]: https://codeberg.org/galtzo-floss/include_with_respect/issues
550
+ [🤝cb-pulls]: https://codeberg.org/galtzo-floss/include_with_respect/pulls
551
+ [🤝cb-donate]: https://donate.codeberg.org/
552
+ [🤝contributing]: https://github.com/galtzo-floss/include_with_respect/blob/main/CONTRIBUTING.md
553
+ [🏀codecov-g]: https://codecov.io/gh/galtzo-floss/include_with_respect/graph/badge.svg
554
+ [🖐contrib-rocks]: https://contrib.rocks
555
+ [🖐contributors]: https://github.com/galtzo-floss/include_with_respect/graphs/contributors
556
+ [🖐contributors-img]: https://contrib.rocks/image?repo=galtzo-floss/include_with_respect
557
+ [🚎contributors-gl]: https://gitlab.com/galtzo-floss/include_with_respect/-/graphs/main
558
+ [🪇conduct]: https://github.com/galtzo-floss/include_with_respect/blob/main/CODE_OF_CONDUCT.md
559
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
560
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
561
+ [📌semver]: https://semver.org/spec/v2.0.0.html
562
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
563
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
564
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
565
+ [📌changelog]: https://github.com/galtzo-floss/include_with_respect/blob/main/CHANGELOG.md
566
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
567
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
568
+ [📌gitmoji]: https://gitmoji.dev
569
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
570
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
571
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.077-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
572
+ [🔐security]: https://github.com/galtzo-floss/include_with_respect/blob/main/SECURITY.md
573
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
574
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
575
+ [📄license]: LICENSE.md
576
+ [📄license-ref]: https://github.com/galtzo-floss/include_with_respect/blob/main/MIT.md
577
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
578
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
579
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
580
+
581
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
582
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
583
+ [🚎yard-current]: http://rubydoc.info/gems/include_with_respect
584
+ [🚎yard-head]: https://include-with-respect.galtzo.com
585
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
586
+ [💎SHA_checksums]: https://gitlab.com/galtzo-floss/include_with_respect/-/tree/main/checksums
587
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
588
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
589
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
590
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
591
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
592
+
593
+ <!-- kettle-jem:metadata:start -->
594
+ | Field | Value |
595
+ |---|---|
596
+ | Package | include_with_respect |
597
+ | Description | 💎 Find out if your Module include/extend hooks are misbehaving! |
598
+ | Homepage | https://github.com/galtzo-floss/include_with_respect |
599
+ | Source | https://github.com/galtzo-floss/include_with_respect |
600
+ | License | `MIT` |
601
+ | Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/galtzo-floss, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/include_with_respect, https://www.buymeacoffee.com/pboling |
602
+ <!-- kettle-jem:metadata:end -->