appraisal2 3.0.6 → 3.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +106 -4
- data/CITATION.cff +20 -0
- data/CODE_OF_CONDUCT.md +3 -4
- data/CONTRIBUTING.md +153 -48
- data/FUNDING.md +74 -0
- data/LICENSE.md +49 -0
- data/README.md +233 -737
- data/RUBOCOP.md +71 -0
- data/SECURITY.md +2 -2
- data/certs/pboling.pem +27 -0
- data/lib/appraisal/appraisal.rb +1 -1
- data/lib/appraisal/bundler_dsl.rb +12 -12
- data/lib/appraisal/command.rb +32 -30
- data/lib/appraisal/customize.rb +1 -1
- data/lib/appraisal/gem_manager/factory.rb +1 -1
- data/lib/appraisal/gemspec.rb +1 -1
- data/lib/appraisal/version.rb +1 -1
- data/lib/appraisal2/version.rb +8 -0
- data/lib/appraisal2.rb +7 -0
- data/sig/appraisal2/version.rbs +6 -0
- data.tar.gz.sig +0 -0
- metadata +111 -78
- metadata.gz.sig +0 -0
- data/LICENSE.txt +0 -22
data/README.md
CHANGED
|
@@ -1,32 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
[🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
|
|
4
|
-
[🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN
|
|
5
|
-
[🖼️appraisal2-i]: https://logos.galtzo.com/assets/images/appraisal-rb/appraisal2/avatar-192px.svg
|
|
6
|
-
[🖼️appraisal2]: https://github.com/appraisal-rb/appraisal2
|
|
7
|
-
[🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
|
|
8
|
-
[🖼️ruby-lang]: https://github.com/ruby-lang
|
|
1
|
+
<a href="https://github.com/appraisal-rb"><img alt="appraisal-rb Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/appraisal-rb/avatar-128px.svg" width="14%" align="right"/></a>
|
|
9
2
|
|
|
10
3
|
# 🔍️ Appraisal2
|
|
11
4
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- You, possibly
|
|
5
|
+
[![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
|
|
15
6
|
|
|
16
|
-
|
|
7
|
+
`if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
|
|
17
8
|
|
|
18
9
|
---
|
|
19
10
|
|
|
20
|
-
|
|
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.
|
|
12
|
+
|
|
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 on Polar][🖇polar-img]][🖇polar] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
|
|
21
14
|
|
|
22
15
|
<details>
|
|
23
|
-
|
|
16
|
+
<summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
|
|
24
17
|
|
|
25
18
|
I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
|
|
26
19
|
|
|
27
20
|
</details>
|
|
28
21
|
|
|
29
|
-
## 🌻 Synopsis
|
|
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>
|
|
30
23
|
|
|
31
24
|
Appraisal2 integrates with bundler and rake to test your library against
|
|
32
25
|
different versions of dependencies in repeatable scenarios called "appraisals."
|
|
@@ -54,258 +47,90 @@ Appraisal2 adds:
|
|
|
54
47
|
|
|
55
48
|
## 💡 Info you can shake a stick at
|
|
56
49
|
|
|
57
|
-
| Tokens to Remember
|
|
58
|
-
|
|
59
|
-
| Works with JRuby
|
|
60
|
-
| Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] ![Truffle Ruby 23.1 Compat][💎truby-23.1i] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎
|
|
61
|
-
| Works with MRI Ruby 4
|
|
62
|
-
| Works with MRI Ruby 3
|
|
63
|
-
| Works with MRI Ruby 2
|
|
64
|
-
| Works with MRI Ruby 1
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
50
|
+
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
|
|
51
|
+
|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
52
|
+
| 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 current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
|
|
53
|
+
| 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 current Compat][💎truby-c-i]][🚎9-t-wf]|
|
|
54
|
+
| Works with MRI Ruby 4 | [![Ruby 4.0 Compat][💎ruby-4.0i]][🚎11-c-wf] [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
|
|
55
|
+
| 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]|
|
|
56
|
+
| 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] <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]|
|
|
57
|
+
| Works with MRI Ruby 1 | ![Ruby 1.9 Compat][💎ruby-1.9i]|
|
|
58
|
+
| 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] |
|
|
59
|
+
| 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] |
|
|
60
|
+
| 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] |
|
|
61
|
+
| 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] |
|
|
62
|
+
| 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] |
|
|
63
|
+
| 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] |
|
|
64
|
+
| `...` 💖 | [![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] |
|
|
65
|
+
|
|
66
|
+
### Compatibility
|
|
67
|
+
|
|
68
|
+
Compatible with MRI Ruby 1.8.7+, and concordant releases of JRuby, and TruffleRuby.
|
|
69
|
+
CI workflows and Appraisals are generated for MRI Ruby 2.4+.
|
|
70
|
+
This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
|
|
71
|
+
may be higher than the gem's runtime compatibility floor when legacy Rubies are
|
|
72
|
+
not practical for the current toolchain.
|
|
73
|
+
|
|
74
|
+
| 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
|
|
75
|
+
|------------------------------------------------|--------------------------------------------------------|
|
|
76
|
+
| 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
|
|
77
|
+
|
|
78
|
+
### Federated DVCS
|
|
73
79
|
|
|
74
|
-
|
|
80
|
+
<details markdown="1">
|
|
81
|
+
<summary>Find this repo on federated forges (Coming soon!)</summary>
|
|
75
82
|
|
|
76
|
-
|
|
83
|
+
| Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
|
|
84
|
+
|-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
|
|
85
|
+
| 🧪 [appraisal-rb/appraisal2 on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
|
|
86
|
+
| 🧊 [appraisal-rb/appraisal2 on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
|
|
87
|
+
| 🐙 [appraisal-rb/appraisal2 on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
|
|
88
|
+
| 🎮️ [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] |
|
|
77
89
|
|
|
78
|
-
|
|
90
|
+
</details>
|
|
79
91
|
|
|
80
|
-
|
|
92
|
+
[gh-discussions]: https://github.com/appraisal-rb/appraisal2/discussions
|
|
81
93
|
|
|
82
|
-
|
|
94
|
+
### Enterprise Support [](https://tidelift.com/subscription/pkg/rubygems-appraisal2?utm_source=rubygems-appraisal2&utm_medium=referral&utm_campaign=readme)
|
|
83
95
|
|
|
84
|
-
|
|
96
|
+
Available as part of the Tidelift Subscription.
|
|
85
97
|
|
|
86
|
-
|
|
98
|
+
<details markdown="1">
|
|
99
|
+
<summary>Need enterprise-level guarantees?</summary>
|
|
87
100
|
|
|
88
|
-
|
|
101
|
+
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.
|
|
89
102
|
|
|
90
|
-
|
|
91
|
-
local location or vendoring plugins is not fully supported. If you do not want to
|
|
92
|
-
pollute the global namespace, one alternative is
|
|
93
|
-
[RVM's Gemsets](http://rvm.io/gemsets).
|
|
103
|
+
[![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
|
|
94
104
|
|
|
95
|
-
|
|
105
|
+
- 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies
|
|
106
|
+
- 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
|
|
107
|
+
- 💡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
|
|
96
108
|
|
|
97
|
-
|
|
98
|
-
<summary>For Medium or High Security Installations</summary>
|
|
109
|
+
Alternatively:
|
|
99
110
|
|
|
100
|
-
|
|
101
|
-
[
|
|
102
|
-
|
|
111
|
+
- [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
|
112
|
+
- [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork]
|
|
113
|
+
- [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor]
|
|
103
114
|
|
|
104
|
-
|
|
115
|
+
</details>
|
|
105
116
|
|
|
106
|
-
|
|
107
|
-
gem cert --add <(curl -Ls https://raw.github.com/appraisal-rb/appraisal2/main/certs/pboling.pem)
|
|
108
|
-
```
|
|
117
|
+
## ✨ Installation
|
|
109
118
|
|
|
110
|
-
|
|
119
|
+
Install the gem and add to the application's Gemfile by executing:
|
|
111
120
|
|
|
112
121
|
```console
|
|
113
|
-
|
|
122
|
+
bundle add appraisal2
|
|
114
123
|
```
|
|
115
124
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
This is necessary because not all of `appraisal2`’s dependencies are signed, so we cannot use `HighSecurity`.
|
|
119
|
-
|
|
120
|
-
If you want to up your security game full-time:
|
|
125
|
+
If bundler is not being used to manage dependencies, install the gem by executing:
|
|
121
126
|
|
|
122
127
|
```console
|
|
123
|
-
|
|
128
|
+
gem install appraisal2
|
|
124
129
|
```
|
|
125
130
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
</details>
|
|
129
|
-
|
|
130
|
-
## 🔧 Basic Setup
|
|
131
|
+
## ⚙️ Configuration
|
|
131
132
|
|
|
132
|
-
|
|
133
|
-
your project root, named "Appraisals" (note the case), and some slight changes
|
|
134
|
-
to your project's `Rakefile`.
|
|
135
|
-
|
|
136
|
-
An `Appraisals` file consists of several appraisal definitions. An appraisal
|
|
137
|
-
definition is simply a list of gem dependencies. For example, to test with a
|
|
138
|
-
few versions of Rails:
|
|
139
|
-
|
|
140
|
-
appraise "rails-3" do
|
|
141
|
-
gem "rails", "3.2.14"
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
appraise "rails-4" do
|
|
145
|
-
gem "rails", "4.0.0"
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
The dependencies in your `Appraisals` file are combined with dependencies in
|
|
149
|
-
your `Gemfile`, so you don't need to repeat anything that's the same for each
|
|
150
|
-
appraisal. If something is specified in both the Gemfile and an appraisal, the
|
|
151
|
-
version from the appraisal takes precedence.
|
|
152
|
-
|
|
153
|
-
### Examples of usage in the wild
|
|
154
|
-
|
|
155
|
-
Appraisal2 can be setup to achieve many different things, from testing against
|
|
156
|
-
different versions of services, like MySQL, Redis, or Memcached, and their drivers,
|
|
157
|
-
different versions of gems, different platforms, and running different types of validations
|
|
158
|
-
which each require a distinct set of gems.
|
|
159
|
-
It can also help developers to follow the [official recommendation](https://github.com/rubygems/bundler-site/pull/501) (since 2017) of the bundler team,
|
|
160
|
-
to commit the \[main\] `Gemfile.lock` for **both** apps **and** gems. It does this by giving you alternate gemfiles that won't have their `gemfiles/*.gemfile.lock` committed, so you can simply commit the main one without breaking CI.
|
|
161
|
-
|
|
162
|
-
Having so many different use cases means it can be helpful to others to see how you have done your implementation. If you are willing to spend the time documenting, please send a PR to update this table with another Appraisal2-using project, linking to the specific workflows people can check to see how it is done!
|
|
163
|
-
|
|
164
|
-
| # | gem | locked / unlocked deps | analysis / services | SemVer / HEAD deps | Rubies | os |
|
|
165
|
-
|---|-------------------------------------------------------------------------------|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
|
|
166
|
-
| 1 | [omniauth-identity][1-gh]<br>[![Star][1-⭐️i]][1-gh]<br>[![Rank][1-🔢i]][1-🧰] | [![🔒️][1-🔒️i]][1-🔒️]<br>[![un🔒️][1-un🔒️i]][1-un🔒️] | [![Style][1-as⚙️i]][1-as⚙️]<br>[![Coverage][1-ac⚙️i]][1-ac⚙️]<br>[![Svcs][1-sc⚙️i]][1-sc⚙️]<br>[![L-Svcs][1-sl⚙️i]][1-sl⚙️]<br>[![S-Svcs][1-ss⚙️i]][1-ss⚙️]<br>[![U-Svcs][1-su⚙️i]][1-su⚙️]<br>[![A-Svcs][1-sa⚙️i]][1-sa⚙️]<br>[![J-Svcs][1-sj⚙️i]][1-sj⚙️]<br>[![AJ-Svcs][1-saj⚙️i]][1-saj⚙️] | [![Current][1-⏰i]][1-⏰]<br>[![Deps@HEAD][1-👟i]][1-👟] | [![Supported][1-👴i]][1-👴]<br>[![Unsupported][1-u👴i]][1-u👴]<br>[![Legacy][1-l👴i]][1-l👴]<br>[![Ancient][1-a👴i]][1-a👴]<br>[![JRuby][1-ji]][1-j]<br>[![JRuby Ancient][1-ja👴i]][1-ja👴]<br>[![Head][1-🗣️i]][1-🗣️] | ❌ |
|
|
167
|
-
| 2 | [rspec-stubbed_env][2-gh]<br>[![Star][2-⭐️i]][2-gh]<br>[![Rank][2-🔢i]][2-🧰] | [![🔒️][2-🔒️i]][2-🔒️]<br>[![un🔒️][2-un🔒️i]][2-un🔒️] | [![Style][2-as⚙️i]][2-as⚙️]<br>[![Coverage][2-ac⚙️i]][2-ac⚙️] | [![Current][2-⏰i]][2-⏰] | [![Supported][2-👴i]][2-👴]<br>[![Unsupported][2-u👴i]][2-u👴]<br>[![Legacy][2-l👴i]][2-l👴]<br>[![Ancient][2-a👴i]][2-a👴]<br>[![JRuby][2-ji]][2-j]<br>[![Truffle][2-ti]][2-t]<br>[![Head][2-🗣️i]][2-🗣️] | ❌ |
|
|
168
|
-
| 3 | [silent_stream][3-gh]<br>[![Star][3-⭐️i]][3-gh]<br>[![Rank][3-🔢i]][3-🧰] | [![🔒️][3-🔒️i]][3-🔒️]<br>[![un🔒️][3-un🔒️i]][3-un🔒️] | [![Style][3-as⚙️i]][3-as⚙️]<br>[![Coverage][3-ac⚙️i]][3-ac⚙️] | [![Current][3-⏰i]][3-⏰] | [![Supported][3-👴i]][3-👴]<br>[![Unsupported][3-u👴i]][3-u👴]<br>[![Legacy][3-l👴i]][3-l👴]<br>[![Ancient][3-a👴i]][3-a👴]<br>[![JRuby][3-ji]][3-j]<br>[![Truffle][3-ti]][3-t]<br>[![Head][3-🗣️i]][3-🗣️] | ❌ |
|
|
169
|
-
| 4 | [oauth2][4-gh]<br>[![Star][4-⭐️i]][4-gh]<br>[![Rank][4-🔢i]][4-🧰] | [![🔒️][4-🔒️i]][4-🔒️]<br>[![un🔒️][4-un🔒️i]][4-un🔒️] | [![Style][4-as⚙️i]][4-as⚙️]<br>[![Coverage][4-ac⚙️i]][4-ac⚙️] | [![Current][4-⏰i]][4-⏰]<br>[![Deps@HEAD][4-👟i]][4-👟] | [![Supported][4-👴i]][4-👴]<br>[![Unsupported][4-u👴i]][4-u👴]<br>[![Legacy][4-l👴i]][4-l👴]<br>[![Ancient][4-a👴i]][4-a👴]<br>[![JRuby][4-ji]][4-j]<br>[![Head][4-🗣️i]][4-🗣️] | [![Windows][5-win️i]][5-win️]<br>[![MacOS][5-mac️i]][5-mac️] |
|
|
170
|
-
|
|
171
|
-
[1-gh]: https://github.com/omniauth/omniauth-identity
|
|
172
|
-
[1-🧰]: https://www.ruby-toolbox.com/projects/omniauth-identity
|
|
173
|
-
[1-⭐️i]: https://img.shields.io/github/stars/omniauth/omniauth-identity
|
|
174
|
-
[1-🔢i]: https://img.shields.io/gem/rd/omniauth-identity.svg
|
|
175
|
-
[1-🔒️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/locked_deps.yml
|
|
176
|
-
[1-🔒️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/locked_deps.yml/badge.svg
|
|
177
|
-
[1-un🔒️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/unlocked_deps.yml
|
|
178
|
-
[1-un🔒️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/unlocked_deps.yml/badge.svg
|
|
179
|
-
[1-as⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/style.yml
|
|
180
|
-
[1-as⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/style.yml/badge.svg
|
|
181
|
-
[1-ac⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/coverage.yml
|
|
182
|
-
[1-ac⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/coverage.yml/badge.svg
|
|
183
|
-
[1-sc⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/current-svc-adapters.yml
|
|
184
|
-
[1-sc⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/current-svc-adapters.yml/badge.svg
|
|
185
|
-
[1-sl⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/legacy-svc-adapters.yml
|
|
186
|
-
[1-sl⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/legacy-svc-adapters.yml/badge.svg
|
|
187
|
-
[1-ss⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/supported-svc-adapters.yml
|
|
188
|
-
[1-ss⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/supported-svc-adapters.yml/badge.svg
|
|
189
|
-
[1-su⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/unsupported-svc-adapters.yml
|
|
190
|
-
[1-su⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/unsupported-svc-adapters.yml/badge.svg
|
|
191
|
-
[1-sa⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/ancient-svc-adapters.yml
|
|
192
|
-
[1-sa⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/ancient-svc-adapters.yml/badge.svg
|
|
193
|
-
[1-sj⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/jruby-svc-adapters.yml
|
|
194
|
-
[1-sj⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/jruby-svc-adapters.yml/badge.svg
|
|
195
|
-
[1-saj⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/jruby-ancient-svc-adapters.yml
|
|
196
|
-
[1-saj⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/jruby-ancient-svc-adapters.yml/badge.svg
|
|
197
|
-
[1-⏰]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/current.yml
|
|
198
|
-
[1-⏰i]: https://github.com/omniauth/omniauth-identity/actions/workflows/current.yml/badge.svg
|
|
199
|
-
[1-j]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/jruby.yml
|
|
200
|
-
[1-ji]: https://github.com/omniauth/omniauth-identity/actions/workflows/jruby.yml/badge.svg
|
|
201
|
-
[1-👟]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/current-runtime-heads.yml
|
|
202
|
-
[1-👟i]: https://github.com/omniauth/omniauth-identity/actions/workflows/current-runtime-heads.yml/badge.svg
|
|
203
|
-
[1-👴]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/supported.yml
|
|
204
|
-
[1-👴i]: https://github.com/omniauth/omniauth-identity/actions/workflows/supported.yml/badge.svg
|
|
205
|
-
[1-u👴]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/unsupported.yml
|
|
206
|
-
[1-u👴i]: https://github.com/omniauth/omniauth-identity/actions/workflows/unsupported.yml/badge.svg
|
|
207
|
-
[1-l👴]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/legacy.yml
|
|
208
|
-
[1-l👴i]: https://github.com/omniauth/omniauth-identity/actions/workflows/legacy.yml/badge.svg
|
|
209
|
-
[1-a👴]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/ancient.yml
|
|
210
|
-
[1-a👴i]: https://github.com/omniauth/omniauth-identity/actions/workflows/ancient.yml/badge.svg
|
|
211
|
-
[1-ja👴]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/jruby-ancient.yml
|
|
212
|
-
[1-ja👴i]: https://github.com/omniauth/omniauth-identity/actions/workflows/jruby-ancient.yml/badge.svg
|
|
213
|
-
[1-🗣️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/heads.yml
|
|
214
|
-
[1-🗣️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/heads.yml/badge.svg
|
|
215
|
-
[1-gh]: https://github.com/omniauth/omniauth-identity
|
|
216
|
-
|
|
217
|
-
[2-gh]: https://github.com/pboling/rspec-stubbed_env
|
|
218
|
-
[2-🧰]: https://www.ruby-toolbox.com/projects/rspec-stubbed_env
|
|
219
|
-
[2-⭐️i]: https://img.shields.io/github/stars/pboling/rspec-stubbed_env
|
|
220
|
-
[2-🔢i]: https://img.shields.io/gem/rd/rspec-stubbed_env.svg
|
|
221
|
-
[2-🔒️]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/deps_locked.yml
|
|
222
|
-
[2-🔒️i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/deps_locked.yml/badge.svg
|
|
223
|
-
[2-un🔒️]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/deps_unlocked.yml
|
|
224
|
-
[2-un🔒️i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/deps_unlocked.yml/badge.svg
|
|
225
|
-
[2-as⚙️]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/style.yml
|
|
226
|
-
[2-as⚙️i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/style.yml/badge.svg
|
|
227
|
-
[2-ac⚙️]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/coverage.yml
|
|
228
|
-
[2-ac⚙️i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/coverage.yml/badge.svg
|
|
229
|
-
[2-⏰]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/current.yml
|
|
230
|
-
[2-⏰i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/current.yml/badge.svg
|
|
231
|
-
[2-j]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/jruby.yml
|
|
232
|
-
[2-ji]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/jruby.yml/badge.svg
|
|
233
|
-
[2-t]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/truffle.yml
|
|
234
|
-
[2-ti]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/truffle.yml/badge.svg
|
|
235
|
-
[2-👴]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/supported.yml
|
|
236
|
-
[2-👴i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/supported.yml/badge.svg
|
|
237
|
-
[2-u👴]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/unsupported.yml
|
|
238
|
-
[2-u👴i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/unsupported.yml/badge.svg
|
|
239
|
-
[2-l👴]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/legacy.yml
|
|
240
|
-
[2-l👴i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/legacy.yml/badge.svg
|
|
241
|
-
[2-a👴]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/ancient.yml
|
|
242
|
-
[2-a👴i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/ancient.yml/badge.svg
|
|
243
|
-
[2-🗣️]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/heads.yml
|
|
244
|
-
[2-🗣️i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/heads.yml/badge.svg
|
|
245
|
-
|
|
246
|
-
[3-gh]: https://github.com/pboling/silent_stream
|
|
247
|
-
[3-🧰]: https://www.ruby-toolbox.com/projects/silent_stream
|
|
248
|
-
[3-⭐️i]: https://img.shields.io/github/stars/pboling/silent_stream
|
|
249
|
-
[3-🔢i]: https://img.shields.io/gem/rd/silent_stream.svg
|
|
250
|
-
[3-🔒️]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/locked_deps.yml
|
|
251
|
-
[3-🔒️i]: https://github.com/pboling/silent_stream/actions/workflows/locked_deps.yml/badge.svg
|
|
252
|
-
[3-un🔒️]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/unlocked_deps.yml
|
|
253
|
-
[3-un🔒️i]: https://github.com/pboling/silent_stream/actions/workflows/unlocked_deps.yml/badge.svg
|
|
254
|
-
[3-as⚙️]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/style.yml
|
|
255
|
-
[3-as⚙️i]: https://github.com/pboling/silent_stream/actions/workflows/style.yml/badge.svg
|
|
256
|
-
[3-ac⚙️]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/coverage.yml
|
|
257
|
-
[3-ac⚙️i]: https://github.com/pboling/silent_stream/actions/workflows/coverage.yml/badge.svg
|
|
258
|
-
[3-⏰]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/current.yml
|
|
259
|
-
[3-⏰i]: https://github.com/pboling/silent_stream/actions/workflows/current.yml/badge.svg
|
|
260
|
-
[3-j]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/jruby.yml
|
|
261
|
-
[3-ji]: https://github.com/pboling/silent_stream/actions/workflows/jruby.yml/badge.svg
|
|
262
|
-
[3-t]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/truffle.yml
|
|
263
|
-
[3-ti]: https://github.com/pboling/silent_stream/actions/workflows/truffle.yml/badge.svg
|
|
264
|
-
[3-👴]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/supported.yml
|
|
265
|
-
[3-👴i]: https://github.com/pboling/silent_stream/actions/workflows/supported.yml/badge.svg
|
|
266
|
-
[3-u👴]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/unsupported.yml
|
|
267
|
-
[3-u👴i]: https://github.com/pboling/silent_stream/actions/workflows/unsupported.yml/badge.svg
|
|
268
|
-
[3-l👴]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/legacy.yml
|
|
269
|
-
[3-l👴i]: https://github.com/pboling/silent_stream/actions/workflows/legacy.yml/badge.svg
|
|
270
|
-
[3-a👴]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/ancient.yml
|
|
271
|
-
[3-a👴i]: https://github.com/pboling/silent_stream/actions/workflows/ancient.yml/badge.svg
|
|
272
|
-
[3-🗣️]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/heads.yml
|
|
273
|
-
[3-🗣️i]: https://github.com/pboling/silent_stream/actions/workflows/heads.yml/badge.svg
|
|
274
|
-
|
|
275
|
-
[4-gh]: https://github.com/ruby-oauth/oauth2
|
|
276
|
-
[4-🧰]: https://www.ruby-toolbox.com/projects/oauth2
|
|
277
|
-
[4-⭐️i]: https://img.shields.io/github/stars/ruby-oauth/oauth2
|
|
278
|
-
[4-🔢i]: https://img.shields.io/gem/rd/oauth2.svg
|
|
279
|
-
[4-🔒️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/locked_deps.yml
|
|
280
|
-
[4-🔒️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/locked_deps.yml/badge.svg
|
|
281
|
-
[4-un🔒️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/unlocked_deps.yml
|
|
282
|
-
[4-un🔒️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/unlocked_deps.yml/badge.svg
|
|
283
|
-
[4-as⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/style.yml
|
|
284
|
-
[4-as⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/style.yml/badge.svg
|
|
285
|
-
[4-ac⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/coverage.yml
|
|
286
|
-
[4-ac⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/coverage.yml/badge.svg
|
|
287
|
-
[4-⏰]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/current.yml
|
|
288
|
-
[4-⏰i]: https://github.com/ruby-oauth/oauth2/actions/workflows/current.yml/badge.svg
|
|
289
|
-
[4-j]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/jruby.yml
|
|
290
|
-
[4-ji]: https://github.com/ruby-oauth/oauth2/actions/workflows/jruby.yml/badge.svg
|
|
291
|
-
[4-👟]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/dep-heads.yml
|
|
292
|
-
[4-👟i]: https://github.com/ruby-oauth/oauth2/actions/workflows/dep-heads.yml/badge.svg
|
|
293
|
-
[4-👴]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/supported.yml
|
|
294
|
-
[4-👴i]: https://github.com/ruby-oauth/oauth2/actions/workflows/supported.yml/badge.svg
|
|
295
|
-
[4-u👴]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/unsupported.yml
|
|
296
|
-
[4-u👴i]: https://github.com/ruby-oauth/oauth2/actions/workflows/unsupported.yml/badge.svg
|
|
297
|
-
[4-l👴]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/legacy.yml
|
|
298
|
-
[4-l👴i]: https://github.com/ruby-oauth/oauth2/actions/workflows/legacy.yml/badge.svg
|
|
299
|
-
[4-a👴]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/ancient.yml
|
|
300
|
-
[4-a👴i]: https://github.com/ruby-oauth/oauth2/actions/workflows/ancient.yml/badge.svg
|
|
301
|
-
[4-🗣️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/heads.yml
|
|
302
|
-
[4-🗣️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/heads.yml/badge.svg
|
|
303
|
-
[5-win️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/windows.yml
|
|
304
|
-
[5-win️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/windows.yml/badge.svg
|
|
305
|
-
[5-mac️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/macos.yml
|
|
306
|
-
[5-mac️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/macos.yml/badge.svg
|
|
307
|
-
|
|
308
|
-
## ⚒️ Basic Usage
|
|
133
|
+
## 🔧 Basic Usage
|
|
309
134
|
|
|
310
135
|
Once you've configured the appraisals you want to use, you need to install the
|
|
311
136
|
dependencies for each appraisal:
|
|
@@ -428,380 +253,14 @@ bundle exec appraisal rails-7 bundle install --gem-manager=ore # ❌ Wrong
|
|
|
428
253
|
- `bundle exec appraisal rails-7 install --gem-manager=ore` ✅ → Uses **Appraisal's** install command with ORE
|
|
429
254
|
- `bundle exec appraisal rails-7 bundle install --gem-manager=ore` ❌ → Tries to run external **bundle** command (which doesn't recognize `--gem-manager`)
|
|
430
255
|
|
|
431
|
-
## 🦀 Using Ore (Alternative Gem Manager)
|
|
432
|
-
|
|
433
|
-
Appraisal2 supports [ORE](https://github.com/contriboss/ore-light) as an alternative to Bundler
|
|
434
|
-
for dependency resolution and installation. Ore is a fast gem manager written in Go that aims
|
|
435
|
-
to be a drop-in replacement for Bundler.
|
|
436
|
-
|
|
437
|
-
### Installing Ore
|
|
438
|
-
|
|
439
|
-
You can install ORE via:
|
|
440
|
-
|
|
441
|
-
```bash
|
|
442
|
-
# Install ORE Light (no Ruby required for download)
|
|
443
|
-
# Installs to ~/.local/bin by default (no sudo needed)
|
|
444
|
-
curl -fsSL https://raw.githubusercontent.com/contriboss/ore-light/master/scripts/install.sh | bash
|
|
445
|
-
|
|
446
|
-
# For system-wide installation to /usr/local/bin
|
|
447
|
-
curl -fsSL https://raw.githubusercontent.com/contriboss/ore-light/master/scripts/install.sh | bash -s -- --system
|
|
448
|
-
```
|
|
449
|
-
|
|
450
|
-
### Using Ore with Appraisal2
|
|
451
|
-
|
|
452
|
-
The `--gem-manager=ore` option works **only** with Appraisal's built-in `install` and `update` commands.
|
|
453
|
-
It does **NOT** work with external commands like `bundle install`.
|
|
454
|
-
|
|
455
|
-
#### ✅ Using --gem-manager with Appraisal's install/update commands
|
|
456
|
-
|
|
457
|
-
To use ORE instead of bundler for dependency installation, pass the `--gem-manager=ore` option:
|
|
458
|
-
|
|
459
|
-
```bash
|
|
460
|
-
# Install dependencies for ALL appraisals using ORE
|
|
461
|
-
bundle exec appraisal install --gem-manager=ore
|
|
462
|
-
|
|
463
|
-
# Update dependencies for ALL appraisals using ORE
|
|
464
|
-
bundle exec appraisal update --gem-manager=ore
|
|
465
|
-
|
|
466
|
-
# Install dependencies for a SPECIFIC appraisal using ORE
|
|
467
|
-
bundle exec appraisal <APPRAISAL_NAME> install --gem-manager=ore
|
|
468
|
-
|
|
469
|
-
# Update dependencies for a SPECIFIC appraisal using ORE
|
|
470
|
-
bundle exec appraisal <APPRAISAL_NAME> update <GEMS> --gem-manager=ore
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
You can also use the short form:
|
|
474
|
-
|
|
475
|
-
```bash
|
|
476
|
-
bundle exec appraisal install -g ore
|
|
477
|
-
bundle exec appraisal <APPRAISAL_NAME> install -g ore
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
#### ❌ Do NOT use --gem-manager with external commands
|
|
481
|
-
|
|
482
|
-
The `--gem-manager` option **cannot** be used when running external commands like `bundle install`:
|
|
483
|
-
|
|
484
|
-
```bash
|
|
485
|
-
# ❌ WRONG - Don't try to pass --gem-manager to external commands
|
|
486
|
-
bundle exec appraisal coverage bundle install --gem-manager=ore
|
|
487
|
-
|
|
488
|
-
# ✅ RIGHT - Use appraisal's install command instead
|
|
489
|
-
bundle exec appraisal coverage install --gem-manager=ore
|
|
490
|
-
```
|
|
491
|
-
|
|
492
|
-
The difference:
|
|
493
|
-
- `bundle exec appraisal coverage install --gem-manager=ore` → Uses Appraisal's install command with ORE
|
|
494
|
-
- `bundle exec appraisal coverage bundle install --gem-manager=ore` → Tries to run external `bundle install` (which doesn't recognize `--gem-manager`)
|
|
495
|
-
|
|
496
|
-
### Ore-Specific Options
|
|
497
|
-
|
|
498
|
-
When using ORE, some options are translated to ORE's equivalents:
|
|
499
|
-
|
|
500
|
-
| Appraisal Option | Ore Equivalent | Notes |
|
|
501
|
-
|------------------|----------------|-------------------------------------|
|
|
502
|
-
| `--jobs=N` | `-workers=N` | Only used when N > 1 |
|
|
503
|
-
| `--path=DIR` | `-vendor=DIR` | Sets the gem installation directory |
|
|
504
|
-
| `--without=GROUPS` | `-without=GROUP1,GROUP2` | Groups are comma-separated in ORE |
|
|
505
|
-
| `--retry` | *(ignored)* | ORE handles retries internally |
|
|
506
|
-
| `--full-index` | *(ignored)* | Not applicable to ORE |
|
|
507
|
-
|
|
508
|
-
### Example Workflow with ORE
|
|
509
|
-
|
|
510
|
-
```bash
|
|
511
|
-
# Generate appraisal gemfiles
|
|
512
|
-
bundle exec appraisal generate
|
|
513
|
-
|
|
514
|
-
# Install dependencies for ALL appraisals using ORE (faster than bundler)
|
|
515
|
-
bundle exec appraisal install --gem-manager=ore --jobs=4
|
|
516
|
-
|
|
517
|
-
# Install dependencies for a SPECIFIC appraisal using ORE
|
|
518
|
-
bundle exec appraisal rails-7 install --gem-manager=ore --jobs=4
|
|
519
|
-
|
|
520
|
-
# Run tests against all appraisals (uses dependencies from appraisal gemfiles)
|
|
521
|
-
bundle exec appraisal rspec
|
|
522
|
-
|
|
523
|
-
# Run tests against a specific appraisal (uses that appraisal's dependencies)
|
|
524
|
-
bundle exec appraisal rails-7 rspec
|
|
525
|
-
|
|
526
|
-
# Update a specific gem in ALL appraisals using ORE
|
|
527
|
-
bundle exec appraisal update rack --gem-manager=ore
|
|
528
|
-
|
|
529
|
-
# Update a specific gem in ONE appraisal using ORE
|
|
530
|
-
bundle exec appraisal rails-7 update rack --gem-manager=ore
|
|
531
|
-
```
|
|
532
|
-
|
|
533
|
-
**Note:** When running tests or other external commands, the dependencies are already
|
|
534
|
-
installed from the appraisal's gemfile. You don't need to (and can't) pass `--gem-manager`
|
|
535
|
-
to external commands—it only works with Appraisal's built-in `install` and `update` commands.
|
|
536
|
-
|
|
537
|
-
### When to Use Ore
|
|
538
|
-
|
|
539
|
-
Ore can be particularly beneficial when:
|
|
540
|
-
|
|
541
|
-
- You have many appraisals and want faster installation
|
|
542
|
-
- You're in a CI environment where installation speed matters
|
|
543
|
-
- You want to take advantage of ORE's parallel resolution capabilities
|
|
544
|
-
|
|
545
|
-
Note that ORE must be installed separately and available in your PATH.
|
|
546
|
-
If you specify ORE and it is not available, appraisal2 will raise an error.
|
|
547
|
-
|
|
548
|
-
### Troubleshooting ORE/Gem Manager Issues
|
|
549
|
-
|
|
550
|
-
#### Error: "Unknown switches --gem-manager=ore"
|
|
551
|
-
|
|
552
|
-
If you see an error like:
|
|
553
|
-
```
|
|
554
|
-
Unknown switches("--gem-manager=ore")
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
This usually means you're trying to pass `--gem-manager` to an external command instead of
|
|
558
|
-
Appraisal's built-in command.
|
|
559
|
-
|
|
560
|
-
❌ **Wrong:**
|
|
561
|
-
```bash
|
|
562
|
-
bundle exec appraisal coverage bundle install --gem-manager=ore
|
|
563
|
-
# Error: "Unknown switches --gem-manager=ore"
|
|
564
|
-
# The --gem-manager flag is being passed to the external 'bundle install' command,
|
|
565
|
-
# which doesn't recognize it.
|
|
566
|
-
```
|
|
567
|
-
|
|
568
|
-
✅ **Correct:**
|
|
569
|
-
```bash
|
|
570
|
-
bundle exec appraisal coverage install --gem-manager=ore
|
|
571
|
-
# Correct: Uses Appraisal's install command with ORE gem manager
|
|
572
|
-
```
|
|
573
|
-
|
|
574
|
-
**Key point:** The `--gem-manager` option **only works** with Appraisal's built-in
|
|
575
|
-
`install` and `update` commands. It cannot be used with external commands like
|
|
576
|
-
`bundle install`, `bundle update`, or `bundle exec rake/rspec`.
|
|
577
|
-
|
|
578
|
-
If you need to install dependencies using ORE:
|
|
579
|
-
1. Run `bundle exec appraisal <NAME> install --gem-manager=ore`
|
|
580
|
-
2. Then run your tests: `bundle exec appraisal <NAME> rspec`
|
|
581
|
-
|
|
582
|
-
Under the hood
|
|
583
|
-
--------------
|
|
584
|
-
|
|
585
|
-
Running `appraisal install` generates a Gemfile for each appraisal by combining
|
|
586
|
-
your root Gemfile with the specific requirements for each appraisal. These are
|
|
587
|
-
stored in the `gemfiles` directory, and should be added to version control to
|
|
588
|
-
ensure that versions within constraints of the Gemfile are always used.
|
|
589
|
-
|
|
590
|
-
When you prefix a command with `appraisal`, the command is run with the
|
|
591
|
-
appropriate Gemfile for that appraisal, ensuring the correct dependencies
|
|
592
|
-
are used.
|
|
593
|
-
|
|
594
|
-
Sharing Modular Gemfiles between Appraisals
|
|
595
|
-
-------
|
|
596
|
-
|
|
597
|
-
_New in appraisal2_ (not possible in thoughtbot's appraisal)
|
|
598
|
-
|
|
599
|
-
It is common for Appraisals to duplicate sets of gems, and sometimes it
|
|
600
|
-
makes sense to DRY this up into a shared, modular, gemfile.
|
|
601
|
-
In a scenario where you do not load your main Gemfile in your Appraisals,
|
|
602
|
-
but you want to declare your various gem sets for e.g.
|
|
603
|
-
`%w(coverage test documentation audit)` once each, you can re-use the same
|
|
604
|
-
modular gemfiles for local development by referencing them from the main
|
|
605
|
-
Gemfile.
|
|
606
|
-
|
|
607
|
-
To do this, use the `eval_gemfile` declaration within the necessary
|
|
608
|
-
`appraise` block in your `Appraisals` file, which will behave the same as
|
|
609
|
-
`eval_gemfile` does in a normal Gemfile.
|
|
610
|
-
|
|
611
|
-
### Example Usage
|
|
612
|
-
|
|
613
|
-
You could put your modular gemfiles in the `gemfiles` directory, or nest
|
|
614
|
-
them in `gemfiles/modular/*`, which will be used for this example.
|
|
615
|
-
|
|
616
|
-
**Gemfile**
|
|
617
|
-
```ruby
|
|
618
|
-
eval_gemfile "gemfiles/modular/audit.gemfile"
|
|
619
|
-
```
|
|
620
|
-
|
|
621
|
-
**gemfiles/modular/audit.gemfile**
|
|
622
|
-
```ruby
|
|
623
|
-
# Many gems are dropping support for Ruby < 3.1,
|
|
624
|
-
# so we only want to run our security audit in CI on Ruby 3.1+
|
|
625
|
-
gem "bundler-audit", "~> 0.9.2"
|
|
626
|
-
# And other security audit gems...
|
|
627
|
-
```
|
|
628
|
-
|
|
629
|
-
**Appraisals**
|
|
630
|
-
```ruby
|
|
631
|
-
appraise "ruby-2-7" do
|
|
632
|
-
gem "dummy"
|
|
633
|
-
end
|
|
634
|
-
|
|
635
|
-
appraise "ruby-3-0" do
|
|
636
|
-
gem "dummy"
|
|
637
|
-
end
|
|
638
|
-
|
|
639
|
-
appraise "ruby-3-1" do
|
|
640
|
-
gem "dummy"
|
|
641
|
-
eval_gemfile "modular/audit.gemfile"
|
|
642
|
-
end
|
|
643
|
-
|
|
644
|
-
appraise "ruby-3-2" do
|
|
645
|
-
gem "dummy"
|
|
646
|
-
eval_gemfile "modular/audit.gemfile"
|
|
647
|
-
end
|
|
648
|
-
|
|
649
|
-
appraise "ruby-3-3" do
|
|
650
|
-
gem "dummy"
|
|
651
|
-
eval_gemfile "modular/audit.gemfile"
|
|
652
|
-
end
|
|
653
|
-
|
|
654
|
-
appraise "ruby-3-4" do
|
|
655
|
-
gem "dummy"
|
|
656
|
-
eval_gemfile "modular/audit.gemfile"
|
|
657
|
-
end
|
|
658
|
-
```
|
|
659
|
-
|
|
660
|
-
**Appraisal2.root.gemfile**
|
|
661
|
-
```ruby
|
|
662
|
-
source "https://gem.coop"
|
|
663
|
-
|
|
664
|
-
# Appraisal2 Root Gemfile is for running appraisal to generate the Appraisal2 Gemfiles
|
|
665
|
-
# We do not load the standard Gemfile, as it is tailored for local development,
|
|
666
|
-
# while appraisals are tailored for CI.
|
|
667
|
-
|
|
668
|
-
gemspec
|
|
669
|
-
|
|
670
|
-
gem "appraisal2"
|
|
671
|
-
```
|
|
672
|
-
|
|
673
|
-
Now when you need to update your appraisals:
|
|
674
|
-
```shell
|
|
675
|
-
BUNDLE_GEMFILE=Appraisal2.root.gemfile bundle exec appraisal update
|
|
676
|
-
```
|
|
677
|
-
|
|
678
|
-
### Removing Gems using Appraisal2
|
|
679
|
-
|
|
680
|
-
It is common while managing multiple Gemfiles for dependencies to become deprecated and no
|
|
681
|
-
longer necessary, meaning they need to be removed from the Gemfile for a specific `appraisal`.
|
|
682
|
-
To do this, use the `remove_gem` declaration within the necessary `appraise` block in your
|
|
683
|
-
`Appraisals` file.
|
|
684
|
-
|
|
685
|
-
#### Example Usage
|
|
686
|
-
|
|
687
|
-
**Gemfile**
|
|
688
|
-
```ruby
|
|
689
|
-
gem "rails", "~> 4.2"
|
|
690
|
-
|
|
691
|
-
group :test do
|
|
692
|
-
gem "rspec", "~> 4.0"
|
|
693
|
-
gem "test_after_commit"
|
|
694
|
-
end
|
|
695
|
-
```
|
|
696
|
-
|
|
697
|
-
**Appraisals**
|
|
698
|
-
```ruby
|
|
699
|
-
appraise "rails-5" do
|
|
700
|
-
gem "rails", "~> 5.2"
|
|
701
|
-
|
|
702
|
-
group :test do
|
|
703
|
-
remove_gem "test_after_commit"
|
|
704
|
-
end
|
|
705
|
-
end
|
|
706
|
-
```
|
|
707
|
-
|
|
708
|
-
Using the `Appraisals` file defined above, this is what the resulting `Gemfile` will look like:
|
|
709
|
-
```ruby
|
|
710
|
-
gem "rails", "~> 5.2"
|
|
711
|
-
|
|
712
|
-
group :test do
|
|
713
|
-
gem "rspec", "~> 4.0"
|
|
714
|
-
end
|
|
715
|
-
```
|
|
716
|
-
|
|
717
|
-
### Customization
|
|
718
|
-
|
|
719
|
-
It is possible to customize the generated Gemfiles by adding a `customize_gemfiles` block to
|
|
720
|
-
your `Appraisals` file. The block must contain a hash of key/value pairs. Currently supported
|
|
721
|
-
customizations include:
|
|
722
|
-
- heading: a string that by default adds "# This file was generated by Appraisal2" to the top of each Gemfile, (the string will be commented for you)
|
|
723
|
-
- single_quotes: a boolean that controls if strings are single quoted in each Gemfile, defaults to false
|
|
724
|
-
|
|
725
|
-
You can also provide variables for substitution in the heading, based on each appraisal. Currently supported variables:
|
|
726
|
-
- `%{appraisal}`: Becomes the name of each appraisal, e.g. `rails-3`
|
|
727
|
-
- `%{gemfile}`: Becomes the filename of each gemfile, e.g. `rails-3.gemfile`
|
|
728
|
-
- `%{gemfile_path}`: Becomes the full path of each gemfile, e.g. `/path/to/project/gemfiles/rails-3.gemfile`
|
|
729
|
-
- `%{lockfile}`: Becomes the filename of each lockfile, e.g. `rails-3.gemfile.lock`
|
|
730
|
-
- `%{lockfile_path}`: Becomes the full path of each lockfile, e.g. `/path/to/project/gemfiles/rails-3.gemfile.lock`
|
|
731
|
-
- `%{relative_gemfile_path}`: Becomes the relative path of each gemfile, e.g. `gemfiles/rails-3.gemfile`
|
|
732
|
-
- `%{relative_lockfile_path}`: Becomes the relative path of each lockfile, e.g. `gemfiles/rails-3.gemfile.lock`
|
|
733
|
-
|
|
734
|
-
#### Example Usage
|
|
735
|
-
|
|
736
|
-
**Appraisals**
|
|
737
|
-
```ruby
|
|
738
|
-
customize_gemfiles do
|
|
739
|
-
{
|
|
740
|
-
:single_quotes => true,
|
|
741
|
-
:heading => <<-HEADING,
|
|
742
|
-
frozen_string_literal: true
|
|
743
|
-
|
|
744
|
-
`%{gemfile}` has been generated by Appraisal2, do NOT modify it or `%{lockfile}` directly!
|
|
745
|
-
Make the changes to the "%{appraisal}" block in `Appraisals` instead. See the conventions at https://example.com/
|
|
746
|
-
HEADING
|
|
747
|
-
}
|
|
748
|
-
end
|
|
749
|
-
|
|
750
|
-
appraise "rails-3" do
|
|
751
|
-
gem "rails", "3.2.14"
|
|
752
|
-
end
|
|
753
|
-
```
|
|
754
|
-
|
|
755
|
-
Using the `Appraisals` file defined above, this is what the resulting `Gemfile` will look like:
|
|
756
|
-
```ruby
|
|
757
|
-
# frozen_string_literal: true
|
|
758
|
-
|
|
759
|
-
# `rails-3.gemfile` has been generated by Appraisal2, do NOT modify it or `rails-3.gemfile.lock` directly!
|
|
760
|
-
# Make the changes to the "rails-3" block in `Appraisals` instead. See the conventions at https://example.com/
|
|
761
|
-
|
|
762
|
-
gem "rails", "3.2.14"
|
|
763
|
-
```
|
|
764
|
-
|
|
765
|
-
### Version Control
|
|
766
|
-
|
|
767
|
-
When using Appraisal2, we recommend you check in the Gemfiles that Appraisal2
|
|
768
|
-
generates within the gemfiles directory, but exclude the lockfiles there
|
|
769
|
-
(`*.gemfile.lock`). The Gemfiles are useful when running your tests against a
|
|
770
|
-
continuous integration server.
|
|
771
|
-
|
|
772
|
-
Additionally, the Bundler team [officially recommends](https://github.com/rubygems/bundler-site/pull/501)
|
|
773
|
-
committing the main `Gemfile.lock` for **both** gems **and** libraries.
|
|
774
|
-
|
|
775
|
-
### Circle CI Integration
|
|
776
|
-
|
|
777
|
-
In Circle CI you can override the default testing behavior.
|
|
778
|
-
You can configure Appraisal2 to execute your tests.
|
|
779
|
-
|
|
780
|
-
In order to this you can put the following configuration in your circle.yml file:
|
|
781
|
-
|
|
782
|
-
```yml
|
|
783
|
-
dependencies:
|
|
784
|
-
post:
|
|
785
|
-
- bundle exec appraisal install
|
|
786
|
-
test:
|
|
787
|
-
pre:
|
|
788
|
-
- bundle exec appraisal rake db:create
|
|
789
|
-
- bundle exec appraisal rake db:migrate
|
|
790
|
-
override:
|
|
791
|
-
- bundle exec appraisal rspec
|
|
792
|
-
```
|
|
793
|
-
|
|
794
|
-
Notice that we are running an rspec suite. You can customize your testing
|
|
795
|
-
command in the `override` section and use your favourite one.
|
|
796
|
-
|
|
797
256
|
## 🦷 FLOSS Funding
|
|
798
257
|
|
|
799
|
-
While appraisal-rb tools are free
|
|
258
|
+
While appraisal-rb tools are free software and will always be, the project would benefit immensely from some funding.
|
|
800
259
|
Raising a monthly budget of... "dollars" would make the project more sustainable.
|
|
801
260
|
|
|
802
|
-
We welcome both individual and corporate sponsors
|
|
803
|
-
wide array of funding channels to account for your preferences
|
|
804
|
-
|
|
261
|
+
We welcome both individual and corporate sponsors! We also offer a
|
|
262
|
+
wide array of funding channels to account for your preferences.
|
|
263
|
+
Currently, [Open Collective][🖇osc] is our preferred funding platform.
|
|
805
264
|
|
|
806
265
|
**If you're working in a company that's making significant use of appraisal-rb tools we'd
|
|
807
266
|
appreciate it if you suggest to your company to become a appraisal-rb sponsor.**
|
|
@@ -813,13 +272,13 @@ You can support the development of appraisal-rb tools via
|
|
|
813
272
|
[Open Collective][🖇osc]
|
|
814
273
|
and [Tidelift][🏙️entsup-tidelift].
|
|
815
274
|
|
|
816
|
-
| 📍 NOTE
|
|
275
|
+
| 📍 NOTE |
|
|
817
276
|
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
818
277
|
| 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. |
|
|
819
278
|
|
|
820
279
|
### Open Collective for Individuals
|
|
821
280
|
|
|
822
|
-
Support us with a monthly donation and help us continue our activities.
|
|
281
|
+
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/appraisal-rb#backer)]
|
|
823
282
|
|
|
824
283
|
NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
|
|
825
284
|
|
|
@@ -829,7 +288,7 @@ No backers yet. Be the first!
|
|
|
829
288
|
|
|
830
289
|
### Open Collective for Organizations
|
|
831
290
|
|
|
832
|
-
Become a sponsor and get your logo on our README on GitHub with a link to your site.
|
|
291
|
+
Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/appraisal-rb#sponsor)]
|
|
833
292
|
|
|
834
293
|
NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
|
|
835
294
|
|
|
@@ -845,7 +304,7 @@ I’m driven by a passion to foster a thriving open-source community – a space
|
|
|
845
304
|
|
|
846
305
|
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`.
|
|
847
306
|
|
|
848
|
-
I’m developing a new library, [
|
|
307
|
+
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.
|
|
849
308
|
|
|
850
309
|
**[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
|
|
851
310
|
|
|
@@ -858,7 +317,7 @@ See [SECURITY.md][🔐security].
|
|
|
858
317
|
## 🤝 Contributing
|
|
859
318
|
|
|
860
319
|
If you need some ideas of where to help, you could work on adding more code coverage,
|
|
861
|
-
or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues]
|
|
320
|
+
or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues] or [PRs][🤝gh-pulls],
|
|
862
321
|
or use the gem and think about how it could be better.
|
|
863
322
|
|
|
864
323
|
We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
|
|
@@ -871,11 +330,16 @@ See [CONTRIBUTING.md][🤝contributing].
|
|
|
871
330
|
|
|
872
331
|
### Code Coverage
|
|
873
332
|
|
|
874
|
-
|
|
333
|
+
<details markdown="1">
|
|
334
|
+
<summary>Coverage service badges</summary>
|
|
335
|
+
|
|
336
|
+
[![Coverage Graph][🏀codecov-g]][🏀codecov]
|
|
875
337
|
|
|
876
|
-
[![Coveralls Test Coverage][
|
|
338
|
+
[![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
|
|
877
339
|
|
|
878
|
-
[![QLTY Test Coverage][
|
|
340
|
+
[![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
|
|
341
|
+
|
|
342
|
+
</details>
|
|
879
343
|
|
|
880
344
|
### 🪇 Code of Conduct
|
|
881
345
|
|
|
@@ -888,16 +352,16 @@ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][
|
|
|
888
352
|
|
|
889
353
|
Made with [contributors-img][🖐contrib-rocks].
|
|
890
354
|
|
|
891
|
-
Also see GitLab Contributors:
|
|
355
|
+
Also see GitLab Contributors: [https://gitlab.com/appraisal-rb/appraisal2/-/graphs/main][🚎contributors-gl]
|
|
892
356
|
|
|
893
357
|
<details>
|
|
894
|
-
|
|
358
|
+
<summary>⭐️ Star History</summary>
|
|
895
359
|
|
|
896
|
-
<a href="https://star-history.com
|
|
360
|
+
<a href="https://star-history.com/appraisal-rb/appraisal2&Date">
|
|
897
361
|
<picture>
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
362
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=appraisal-rb/appraisal2&type=Date&theme=dark" />
|
|
363
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=appraisal-rb/appraisal2&type=Date" />
|
|
364
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=appraisal-rb/appraisal2&type=Date" />
|
|
901
365
|
</picture>
|
|
902
366
|
</a>
|
|
903
367
|
|
|
@@ -905,19 +369,8 @@ Also see GitLab Contributors: <https://gitlab.com/appraisal-rb/appraisal2/-/grap
|
|
|
905
369
|
|
|
906
370
|
## 📌 Versioning
|
|
907
371
|
|
|
908
|
-
This
|
|
909
|
-
|
|
910
|
-
Specifically, if a minor or patch version is released that breaks backward compatibility,
|
|
911
|
-
a new version should be immediately released that restores compatibility.
|
|
912
|
-
Breaking changes to the public API will only be introduced with new major versions.
|
|
913
|
-
|
|
914
|
-
> dropping support for a platform is both obviously and objectively a breaking change <br/>
|
|
915
|
-
> —Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
|
|
916
|
-
|
|
917
|
-
I understand that policy doesn't work universally ("exceptions to every rule\!"),
|
|
918
|
-
but it is the policy here.
|
|
919
|
-
As such, in many cases it is good to specify a dependency on this library using
|
|
920
|
-
the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
|
|
372
|
+
This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
|
|
373
|
+
For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
|
|
921
374
|
|
|
922
375
|
For example:
|
|
923
376
|
|
|
@@ -928,8 +381,8 @@ spec.add_dependency("appraisal2", "~> 3.0")
|
|
|
928
381
|
<details markdown="1">
|
|
929
382
|
<summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
|
|
930
383
|
|
|
931
|
-
|
|
932
|
-
|
|
384
|
+
Dropping support for a platform can be a breaking change for affected users.
|
|
385
|
+
If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
|
|
933
386
|
|
|
934
387
|
To get a better understanding of how SemVer is intended to work over a project's lifetime,
|
|
935
388
|
read this article from the creator of SemVer:
|
|
@@ -943,23 +396,57 @@ See [CHANGELOG.md][📌changelog] for a list of releases.
|
|
|
943
396
|
## 📄 License
|
|
944
397
|
|
|
945
398
|
The gem is available as open source under the terms of
|
|
946
|
-
the [MIT
|
|
947
|
-
See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright-notice-explainer].
|
|
399
|
+
the [MIT](MIT.md) [![License: MIT][📄license-img]][📄license-ref].
|
|
948
400
|
|
|
949
401
|
### © Copyright
|
|
950
402
|
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
403
|
+
See [LICENSE.md][📄license] for the official copyright notice.
|
|
404
|
+
|
|
405
|
+
<details markdown="1">
|
|
406
|
+
<summary>Copyright holders</summary>
|
|
407
|
+
|
|
408
|
+
- Copyright (c) 2010 Joe Ferris
|
|
409
|
+
- Copyright (c) 2011 Dan Croak
|
|
410
|
+
- Copyright (c) 2011-2012 Gabe Berke-Williams
|
|
411
|
+
- Copyright (c) 2011 Joe Ferris
|
|
412
|
+
- Copyright (c) 2011 Joseph Anthony Pasquale Holsten
|
|
413
|
+
- Copyright (c) 2011 Nick Quaranto
|
|
414
|
+
- Copyright (c) 2011 Prem Sichanugrist
|
|
415
|
+
- Copyright (c) 2012 Gregory Ostermayr
|
|
416
|
+
- Copyright (c) 2012 osheroff
|
|
417
|
+
- Copyright (c) 2013 Jason Waldrip
|
|
418
|
+
- Copyright (c) 2013 Marc Ignacio
|
|
419
|
+
- Copyright (c) 2013 Phill Baker
|
|
420
|
+
- Copyright (c) 2013-2016 Prem Sichanugrist
|
|
421
|
+
- Copyright (c) 2013 sanemat
|
|
422
|
+
- Copyright (c) 2014 Juan González
|
|
423
|
+
- Copyright (c) 2014-2015 Prem Sichanugrist
|
|
424
|
+
- Copyright (c) 2015 akihiro17
|
|
425
|
+
- Copyright (c) 2015 Elliot Winkler
|
|
426
|
+
- Copyright (c) 2015 M.Shibuya
|
|
427
|
+
- Copyright (c) 2015 Vlad Bokov
|
|
428
|
+
- Copyright (c) 2016 Geoff Massanek
|
|
429
|
+
- Copyright (c) 2016 Ian Fosbery
|
|
430
|
+
- Copyright (c) 2016 Teo Ljungberg
|
|
431
|
+
- Copyright (c) 2017 Brad Gessler
|
|
432
|
+
- Copyright (c) 2017 Oli Peate
|
|
433
|
+
- Copyright (c) 2017, 2025-2026 Peter H. Boling
|
|
434
|
+
- Copyright (c) 2018 Antonis Berkakis
|
|
435
|
+
- Copyright (c) 2018 Jared Beck
|
|
436
|
+
- Copyright (c) 2018, 2020, 2023-2024 Nick Charlton
|
|
437
|
+
- Copyright (c) 2020 Brian Hawley
|
|
438
|
+
- Copyright (c) 2020 David Rodríguez
|
|
439
|
+
- Copyright (c) 2020 James Ebentier
|
|
440
|
+
- Copyright (c) 2021, 2024 Nicolas Rodriguez
|
|
441
|
+
- Copyright (c) 2022 André Arko
|
|
442
|
+
- Copyright (c) 2022 Joe Sharp
|
|
443
|
+
- Copyright (c) 2023 aymeric-ledorze
|
|
444
|
+
- Copyright (c) 2023 Kyle Fazzari
|
|
445
|
+
- Copyright (c) 2024 Joe Sharp
|
|
446
|
+
- Copyright (c) 2024 Sebastian Cohnen
|
|
447
|
+
- Copyright (c) 2024 Yevhenii Ponomarenko
|
|
448
|
+
|
|
449
|
+
</details>
|
|
963
450
|
|
|
964
451
|
## 🤑 A request for help
|
|
965
452
|
|
|
@@ -972,7 +459,7 @@ Please consider sponsoring me or the project.
|
|
|
972
459
|
|
|
973
460
|
To join the community or get help 👇️ Join the Discord.
|
|
974
461
|
|
|
975
|
-
[![Live Chat on Discord][✉️discord-invite-img-ftb]][
|
|
462
|
+
[![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
|
|
976
463
|
|
|
977
464
|
To say "thanks!" ☝️ Join the Discord or 👇️ send money.
|
|
978
465
|
|
|
@@ -980,6 +467,8 @@ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
|
|
|
980
467
|
|
|
981
468
|
### Please give the project a star ⭐ ♥.
|
|
982
469
|
|
|
470
|
+
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.
|
|
471
|
+
|
|
983
472
|
Thanks for RTFM. ☺️
|
|
984
473
|
|
|
985
474
|
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
|
|
@@ -1002,7 +491,7 @@ Thanks for RTFM. ☺️
|
|
|
1002
491
|
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
|
|
1003
492
|
[🖇polar]: https://polar.sh/pboling
|
|
1004
493
|
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
|
|
1005
|
-
[🖇kofi]: https://ko-fi.com/
|
|
494
|
+
[🖇kofi]: https://ko-fi.com/pboling
|
|
1006
495
|
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
|
|
1007
496
|
[🖇patreon]: https://patreon.com/galtzo
|
|
1008
497
|
[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
|
|
@@ -1017,23 +506,26 @@ Thanks for RTFM. ☺️
|
|
|
1017
506
|
[✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
|
|
1018
507
|
[✉️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
|
|
1019
508
|
[✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
|
|
509
|
+
|
|
1020
510
|
[✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
|
|
1021
511
|
[⛳️gem-namespace]: https://github.com/appraisal-rb/appraisal2
|
|
1022
|
-
[⛳️namespace-img]: https://img.shields.io/badge/namespace-
|
|
1023
|
-
[⛳️gem-name]: https://
|
|
1024
|
-
[⛳️name-img]: https://img.shields.io/badge/name-appraisal2-
|
|
1025
|
-
[
|
|
1026
|
-
[
|
|
1027
|
-
[🚂
|
|
1028
|
-
[🚂
|
|
512
|
+
[⛳️namespace-img]: https://img.shields.io/badge/namespace-Appraisal2-3C2D2D.svg?style=square&logo=ruby&logoColor=white
|
|
513
|
+
[⛳️gem-name]: https://bestgems.org/gems/appraisal2
|
|
514
|
+
[⛳️name-img]: https://img.shields.io/badge/name-appraisal2-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
|
|
515
|
+
[⛳️tag-img]: https://img.shields.io/github/tag/appraisal-rb/appraisal2.svg
|
|
516
|
+
[⛳️tag]: https://github.com/appraisal-rb/appraisal2/releases
|
|
517
|
+
[🚂maint-blog]: http://www.railsbling.com/tags/appraisal2
|
|
518
|
+
[🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
|
|
519
|
+
[🚂maint-contact]: http://www.railsbling.com/contact
|
|
520
|
+
[🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
|
|
1029
521
|
[💖🖇linkedin]: http://www.linkedin.com/in/peterboling
|
|
1030
|
-
[💖🖇linkedin-img]: https://img.shields.io/badge/
|
|
1031
|
-
[💖✌️wellfound]: https://
|
|
522
|
+
[💖🖇linkedin-img]: https://img.shields.io/badge/LinkedIn-Profile-0B66C2?style=flat&logo=newjapanprowrestling
|
|
523
|
+
[💖✌️wellfound]: https://wellfound.com/u/peter-boling
|
|
1032
524
|
[💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
|
|
1033
525
|
[💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
|
|
1034
526
|
[💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
|
|
1035
527
|
[💖🐘ruby-mast]: https://ruby.social/@galtzo
|
|
1036
|
-
[💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https
|
|
528
|
+
[💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
|
|
1037
529
|
[💖🦋bluesky]: https://bsky.app/profile/galtzo.com
|
|
1038
530
|
[💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
|
|
1039
531
|
[💖🌳linktree]: https://linktr.ee/galtzo
|
|
@@ -1050,91 +542,76 @@ Thanks for RTFM. ☺️
|
|
|
1050
542
|
[👨🏼🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
|
|
1051
543
|
[👨🏼🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
|
|
1052
544
|
[👨🏼🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
|
|
1053
|
-
[🏙️entsup-tidelift]: https://tidelift.com/subscription
|
|
545
|
+
[🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-appraisal2?utm_source=rubygems-appraisal2&utm_medium=referral&utm_campaign=readme
|
|
1054
546
|
[🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
|
|
1055
547
|
[🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
|
|
1056
548
|
[💁🏼♂️peterboling]: http://www.peterboling.com
|
|
1057
549
|
[🚂railsbling]: http://www.railsbling.com
|
|
1058
550
|
[📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
|
|
1059
|
-
[📜src-gl]: https://gitlab.com/appraisal-rb/appraisal2
|
|
551
|
+
[📜src-gl]: https://gitlab.com/appraisal-rb/appraisal2
|
|
1060
552
|
[📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
|
|
1061
553
|
[📜src-cb]: https://codeberg.org/appraisal-rb/appraisal2
|
|
1062
554
|
[📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
|
|
1063
555
|
[📜src-gh]: https://github.com/appraisal-rb/appraisal2
|
|
1064
556
|
[📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
1065
557
|
[📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
|
|
1066
|
-
[📜wiki]: https://gitlab.com/appraisal-rb/appraisal2/-/wikis/home
|
|
1067
|
-
[📜wiki
|
|
1068
|
-
[
|
|
558
|
+
[📜gl-wiki]: https://gitlab.com/appraisal-rb/appraisal2/-/wikis/home
|
|
559
|
+
[📜gh-wiki]: https://github.com/appraisal-rb/appraisal2/wiki
|
|
560
|
+
[📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
|
|
561
|
+
[📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
|
|
562
|
+
[👽dl-rank]: https://bestgems.org/gems/appraisal2
|
|
1069
563
|
[👽dl-ranki]: https://img.shields.io/gem/rd/appraisal2.svg
|
|
1070
|
-
[👽
|
|
1071
|
-
[👽oss-helpi]: https://www.codetriage.com/appraisal-rb/appraisal2/badges/users.svg
|
|
1072
|
-
[👽version]: https://rubygems.org/gems/appraisal2
|
|
564
|
+
[👽version]: https://bestgems.org/gems/appraisal2
|
|
1073
565
|
[👽versioni]: https://img.shields.io/gem/v/appraisal2.svg
|
|
1074
|
-
[
|
|
1075
|
-
[
|
|
1076
|
-
[
|
|
1077
|
-
[
|
|
1078
|
-
[
|
|
1079
|
-
[
|
|
1080
|
-
[
|
|
1081
|
-
[
|
|
1082
|
-
[
|
|
1083
|
-
[
|
|
1084
|
-
[🚎
|
|
1085
|
-
[🚎
|
|
1086
|
-
[🚎
|
|
1087
|
-
[🚎
|
|
1088
|
-
[🚎
|
|
1089
|
-
[🚎
|
|
1090
|
-
[🚎
|
|
1091
|
-
[🚎
|
|
1092
|
-
[🚎
|
|
1093
|
-
[🚎
|
|
566
|
+
[🏀qlty-mnt]: https://qlty.sh/gh/appraisal-rb/projects/appraisal2
|
|
567
|
+
[🏀qlty-mnti]: https://qlty.sh/gh/appraisal-rb/projects/appraisal2/maintainability.svg
|
|
568
|
+
[🏀qlty-cov]: https://qlty.sh/gh/appraisal-rb/projects/appraisal2/metrics/code?sort=coverageRating
|
|
569
|
+
[🏀qlty-covi]: https://qlty.sh/gh/appraisal-rb/projects/appraisal2/coverage.svg
|
|
570
|
+
[🏀codecov]: https://codecov.io/gh/appraisal-rb/appraisal2
|
|
571
|
+
[🏀codecovi]: https://codecov.io/gh/appraisal-rb/appraisal2/graph/badge.svg
|
|
572
|
+
[🏀coveralls]: https://coveralls.io/github/appraisal-rb/appraisal2?branch=main
|
|
573
|
+
[🏀coveralls-img]: https://coveralls.io/repos/github/appraisal-rb/appraisal2/badge.svg?branch=main
|
|
574
|
+
[🚎ruby-2.4-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2.4.yml
|
|
575
|
+
[🚎ruby-2.5-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2.5.yml
|
|
576
|
+
[🚎ruby-2.6-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2.6.yml
|
|
577
|
+
[🚎ruby-2.7-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2.7.yml
|
|
578
|
+
[🚎ruby-3.0-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3.0.yml
|
|
579
|
+
[🚎ruby-3.1-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3.1.yml
|
|
580
|
+
[🚎ruby-3.2-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3.2.yml
|
|
581
|
+
[🚎ruby-3.3-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3.3.yml
|
|
582
|
+
[🚎ruby-3.4-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3.4.yml
|
|
583
|
+
[🚎jruby-9.2-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/jruby-9.2.yml
|
|
584
|
+
[🚎jruby-9.3-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/jruby-9.3.yml
|
|
585
|
+
[🚎jruby-9.4-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/jruby-9.4.yml
|
|
586
|
+
[🚎truby-22.3-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-22.3.yml
|
|
587
|
+
[🚎truby-23.0-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-23.0.yml
|
|
588
|
+
[🚎truby-23.1-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-23.1.yml
|
|
589
|
+
[🚎truby-24.2-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-24.2.yml
|
|
590
|
+
[🚎truby-25.0-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffleruby-25.0.yml
|
|
1094
591
|
[🚎2-cov-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/coverage.yml
|
|
1095
592
|
[🚎2-cov-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/coverage.yml/badge.svg
|
|
1096
593
|
[🚎3-hd-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/heads.yml
|
|
1097
594
|
[🚎3-hd-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/heads.yml/badge.svg
|
|
1098
|
-
[🚎4-r2.3-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2-3.yml
|
|
1099
|
-
[🚎4-r2.3-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2-3.yml/badge.svg
|
|
1100
|
-
[🚎4-r2.4-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2-4.yml
|
|
1101
|
-
[🚎4-r2.4-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2-4.yml/badge.svg
|
|
1102
|
-
[🚎4-r2.5-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2-5.yml
|
|
1103
|
-
[🚎4-r2.5-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2-5.yml/badge.svg
|
|
1104
|
-
[🚎4-r2.6-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2-6.yml
|
|
1105
|
-
[🚎4-r2.6-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2-6.yml/badge.svg
|
|
1106
|
-
[🚎4-r2.7-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2-7.yml
|
|
1107
|
-
[🚎4-r2.7-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-2-7.yml/badge.svg
|
|
1108
|
-
[🚎4-r3.0-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3-0.yml
|
|
1109
|
-
[🚎4-r3.0-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3-0.yml/badge.svg
|
|
1110
|
-
[🚎4-r3.1-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3-1.yml
|
|
1111
|
-
[🚎4-r3.1-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3-1.yml/badge.svg
|
|
1112
|
-
[🚎4-r3.2-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3-2.yml
|
|
1113
|
-
[🚎4-r3.2-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3-2.yml/badge.svg
|
|
1114
|
-
[🚎4-r3.3-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3-3.yml
|
|
1115
|
-
[🚎4-r3.3-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3-3.yml/badge.svg
|
|
1116
|
-
[🚎4-r3.4-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3-4.yml
|
|
1117
|
-
[🚎4-r3.4-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/ruby-3-4.yml/badge.svg
|
|
1118
595
|
[🚎5-st-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/style.yml
|
|
1119
596
|
[🚎5-st-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/style.yml/badge.svg
|
|
1120
|
-
[🚎9-t-wf]: https://github.com/
|
|
1121
|
-
[🚎9-t-wfi]: https://github.com/
|
|
597
|
+
[🚎9-t-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffle.yml
|
|
598
|
+
[🚎9-t-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/truffle.yml/badge.svg
|
|
1122
599
|
[🚎10-j-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/jruby.yml
|
|
1123
600
|
[🚎10-j-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/jruby.yml/badge.svg
|
|
1124
601
|
[🚎11-c-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/current.yml
|
|
1125
602
|
[🚎11-c-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/current.yml/badge.svg
|
|
1126
|
-
[🚎12-crh-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/
|
|
1127
|
-
[🚎12-crh-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/
|
|
603
|
+
[🚎12-crh-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/dep-heads.yml
|
|
604
|
+
[🚎12-crh-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/dep-heads.yml/badge.svg
|
|
1128
605
|
[🚎13-🔒️-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/locked_deps.yml
|
|
1129
606
|
[🚎13-🔒️-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/locked_deps.yml/badge.svg
|
|
1130
607
|
[🚎14-🔓️-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/unlocked_deps.yml
|
|
1131
608
|
[🚎14-🔓️-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/unlocked_deps.yml/badge.svg
|
|
1132
|
-
[
|
|
609
|
+
[🚎15-🪪-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/license-eye.yml
|
|
610
|
+
[🚎15-🪪-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/license-eye.yml/badge.svg
|
|
1133
611
|
[💎ruby-1.9i]: https://img.shields.io/badge/Ruby-1.9_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
|
|
1134
612
|
[💎ruby-2.0i]: https://img.shields.io/badge/Ruby-2.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
|
|
1135
613
|
[💎ruby-2.1i]: https://img.shields.io/badge/Ruby-2.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
|
|
1136
614
|
[💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white
|
|
1137
|
-
[💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
1138
615
|
[💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
1139
616
|
[💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
1140
617
|
[💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
@@ -1144,14 +621,17 @@ Thanks for RTFM. ☺️
|
|
|
1144
621
|
[💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
1145
622
|
[💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
1146
623
|
[💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
624
|
+
[💎ruby-4.0i]: https://img.shields.io/badge/Ruby-4.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
1147
625
|
[💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
|
|
1148
626
|
[💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
|
|
1149
|
-
[💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.
|
|
1150
|
-
[💎truby-23.
|
|
627
|
+
[💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
628
|
+
[💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
629
|
+
[💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
1151
630
|
[💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
1152
631
|
[💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
1153
632
|
[💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
|
|
1154
|
-
[💎
|
|
633
|
+
[💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
634
|
+
[💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
1155
635
|
[💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
1156
636
|
[💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
|
|
1157
637
|
[💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
|
|
@@ -1162,38 +642,54 @@ Thanks for RTFM. ☺️
|
|
|
1162
642
|
[🤝cb-issues]: https://codeberg.org/appraisal-rb/appraisal2/issues
|
|
1163
643
|
[🤝cb-pulls]: https://codeberg.org/appraisal-rb/appraisal2/pulls
|
|
1164
644
|
[🤝cb-donate]: https://donate.codeberg.org/
|
|
1165
|
-
[🤝contributing]: CONTRIBUTING.md
|
|
1166
|
-
[
|
|
645
|
+
[🤝contributing]: https://github.com/appraisal-rb/appraisal2/blob/main/CONTRIBUTING.md
|
|
646
|
+
[🏀codecov-g]: https://codecov.io/gh/appraisal-rb/appraisal2/graph/badge.svg
|
|
1167
647
|
[🖐contrib-rocks]: https://contrib.rocks
|
|
1168
648
|
[🖐contributors]: https://github.com/appraisal-rb/appraisal2/graphs/contributors
|
|
1169
649
|
[🖐contributors-img]: https://contrib.rocks/image?repo=appraisal-rb/appraisal2
|
|
1170
650
|
[🚎contributors-gl]: https://gitlab.com/appraisal-rb/appraisal2/-/graphs/main
|
|
1171
|
-
[🪇conduct]: CODE_OF_CONDUCT.md
|
|
651
|
+
[🪇conduct]: https://github.com/appraisal-rb/appraisal2/blob/main/CODE_OF_CONDUCT.md
|
|
1172
652
|
[🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
|
|
1173
653
|
[📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
|
|
1174
654
|
[📌semver]: https://semver.org/spec/v2.0.0.html
|
|
1175
655
|
[📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
|
|
1176
656
|
[📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
|
|
1177
657
|
[📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
|
|
1178
|
-
[📌changelog]: CHANGELOG.md
|
|
658
|
+
[📌changelog]: https://github.com/appraisal-rb/appraisal2/blob/main/CHANGELOG.md
|
|
1179
659
|
[📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
|
|
1180
660
|
[📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
|
|
1181
|
-
[📌gitmoji]:https://gitmoji.dev
|
|
1182
|
-
[📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20
|
|
661
|
+
[📌gitmoji]: https://gitmoji.dev
|
|
662
|
+
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
1183
663
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
1184
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
|
1185
|
-
[🔐security]: SECURITY.md
|
|
664
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.834-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
665
|
+
[🔐security]: https://github.com/appraisal-rb/appraisal2/blob/main/SECURITY.md
|
|
1186
666
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
1187
667
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
1188
|
-
[📄license]: LICENSE.
|
|
1189
|
-
[📄license-ref]:
|
|
668
|
+
[📄license]: LICENSE.md
|
|
669
|
+
[📄license-ref]: MIT.md
|
|
1190
670
|
[📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
|
|
671
|
+
[📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
|
|
672
|
+
[📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-✓-259D6C.svg?style=flat&logo=Apache
|
|
673
|
+
|
|
1191
674
|
[📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
|
|
1192
675
|
[📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
|
|
1193
676
|
[🚎yard-current]: http://rubydoc.info/gems/appraisal2
|
|
1194
677
|
[🚎yard-head]: https://appraisal2.galtzo.com
|
|
1195
|
-
[💎stone_checksums]: https://github.com/
|
|
678
|
+
[💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
|
|
1196
679
|
[💎SHA_checksums]: https://gitlab.com/appraisal-rb/appraisal2/-/tree/main/checksums
|
|
1197
680
|
[💎rlts]: https://github.com/rubocop-lts/rubocop-lts
|
|
1198
|
-
[💎rlts-img]: https://img.shields.io/badge/code_style_
|
|
681
|
+
[💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
|
|
682
|
+
[💎appraisal2]: https://github.com/appraisal-rb/appraisal2
|
|
683
|
+
[💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
|
|
1199
684
|
[💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
|
|
685
|
+
|
|
686
|
+
<!-- kettle-jem:metadata:start -->
|
|
687
|
+
| Field | Value |
|
|
688
|
+
|---|---|
|
|
689
|
+
| Package | appraisal2 |
|
|
690
|
+
| Description | 🔍️ Appraisal2 integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called "appraisals." |
|
|
691
|
+
| Homepage | https://github.com/appraisal-rb/appraisal2 |
|
|
692
|
+
| Source | https://github.com/appraisal-rb/appraisal2/tree/v3.0.7 |
|
|
693
|
+
| License | `MIT` |
|
|
694
|
+
| Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/appraisal-rb, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/appraisal2, https://www.buymeacoffee.com/pboling |
|
|
695
|
+
<!-- kettle-jem:metadata:end -->
|