appraisal2 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +75 -5
- data/README.md +294 -19
- data/lib/appraisal/appraisal.rb +8 -56
- data/lib/appraisal/appraisal_file.rb +4 -2
- data/lib/appraisal/cli.rb +18 -3
- data/lib/appraisal/customize.rb +31 -23
- data/lib/appraisal/errors.rb +21 -0
- data/lib/appraisal/gem_manager/base.rb +51 -0
- data/lib/appraisal/gem_manager/bundler_adapter.rb +86 -0
- data/lib/appraisal/gem_manager/factory.rb +54 -0
- data/lib/appraisal/gem_manager/ore_adapter.rb +104 -0
- data/lib/appraisal/gem_manager.rb +11 -0
- data/lib/appraisal/version.rb +4 -1
- data.tar.gz.sig +0 -0
- metadata +182 -9
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0d99024fa22281da747f8273842cf8651188efb08ae7a264b2fbe762bcb7f087
|
|
4
|
+
data.tar.gz: 70bcb60456ae4e863f19f1f66fa55acc6c517df8c239d0c00de76bbddb722096
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 50235c55423b943d379f64eb92a176d9a93e927affa4fd6de9e0e5af2e6358989a73950ca765b5f3b7aa326dbdec732f8b30632c26487dc94eb3fa3f71fabfc5
|
|
7
|
+
data.tar.gz: 9243c48f2572f09ab117fe0a906222f2883938809bfea5318f2b331395fd265c9ad36580c0a34dc00aec7f9952e0d1fd2ba0f375990ae274975a1774d26704d3
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -6,23 +6,93 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
6
6
|
Versioning: [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
|
+
|
|
9
10
|
### Added
|
|
11
|
+
|
|
10
12
|
### Changed
|
|
13
|
+
|
|
11
14
|
### Deprecated
|
|
15
|
+
|
|
12
16
|
### Removed
|
|
17
|
+
|
|
13
18
|
### Fixed
|
|
19
|
+
|
|
14
20
|
### Security
|
|
15
21
|
|
|
16
|
-
## [3.0.
|
|
17
|
-
|
|
22
|
+
## [3.0.1] - 2026-02-06
|
|
23
|
+
|
|
24
|
+
- TAG: [v3.0.1][3.0.1t]
|
|
25
|
+
- COVERAGE: 77.11% -- 603/782 lines in 27 files
|
|
26
|
+
- BRANCH COVERAGE: 83.96% -- 89/106 branches in 27 files
|
|
27
|
+
- 43.03% documented
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- Support for [ore-light](https://github.com/contriboss/ore-light) as an alternative gem manager via `--gem-manager=ore` CLI option
|
|
32
|
+
- New `GemManager::OreAdapter` class implementing ore-light integration
|
|
33
|
+
- New `GemManager::BundlerAdapter` class (extracted from existing bundler logic)
|
|
34
|
+
- New `GemManager::Factory` class for creating gem manager adapters
|
|
35
|
+
- New `GemManager::Base` abstract base class defining the gem manager interface
|
|
36
|
+
- New `OreNotAvailableError` and `UnknownGemManagerError` error classes
|
|
37
|
+
- Acceptance tests for ore install and update commands (tagged with `:ore` metadata for conditional execution)
|
|
38
|
+
- Unit tests for all gem manager adapter classes
|
|
39
|
+
- README documentation for ore usage, including installation, CLI options, and example workflows
|
|
40
|
+
- New `-g` / `--gem-manager` CLI option to select gem manager (bundler or ore) for install/update commands
|
|
41
|
+
- New `Appraisal::Customize.reset!` class method to reset customization state (useful for testing)
|
|
42
|
+
- Improved test coverage from 66.7% to 76.4% line coverage, 61.5% to 77.4% branch coverage
|
|
43
|
+
- New unit tests for `BundlerDSL` class (including APPRAISAL_INDENTER variations)
|
|
44
|
+
- New unit tests for `Command` class
|
|
45
|
+
- New unit tests for `Conditional` class
|
|
46
|
+
- New unit tests for `Source` class
|
|
47
|
+
- New unit tests for `Git` class
|
|
48
|
+
- New unit tests for `Path` class
|
|
49
|
+
- New unit tests for `OrderedHash` class
|
|
50
|
+
- New unit tests for `Dependency` class
|
|
51
|
+
- New unit tests for `Group` class
|
|
52
|
+
- New unit tests for `Platform` class
|
|
53
|
+
- New unit tests for `GemManager::Factory` class
|
|
54
|
+
- New unit tests for error classes (`AppraisalsNotFound`, `OreNotAvailableError`, `UnknownGemManagerError`)
|
|
55
|
+
- Enhanced `DependencyList` tests with edge cases
|
|
56
|
+
- Enhanced `Gemfile` tests with load/run/dup edge cases
|
|
57
|
+
- Added documentation on hostile takeover of RubyGems
|
|
58
|
+
- https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo
|
|
59
|
+
- CLI configs for RuboCop, RubyGems, YARD, and JRuby (for local development only)
|
|
60
|
+
|
|
61
|
+
### Changed
|
|
62
|
+
|
|
63
|
+
- Improved test isolation for acceptance tests to prevent modification of parent project's Gemfile.lock
|
|
64
|
+
- Added `BUNDLE_APP_CONFIG` isolation to prevent reading/writing parent's `.bundle/config`
|
|
65
|
+
- Added explicit `BUNDLE_GEMFILE` prefix to all bundle commands in tests
|
|
66
|
+
- Added `BUNDLE_LOCKFILE` environment variable to explicitly control where lockfiles are written
|
|
67
|
+
- Set `BUNDLE_IGNORE_FUNDING_REQUESTS` and `BUNDLE_DISABLE_SHARED_GEMS` for cleaner test output
|
|
68
|
+
- Added `BUNDLE_USER_CACHE` isolation to prevent polluting user's gem cache
|
|
69
|
+
- Fixed overly broad `File` stubs in unit tests that interfered with RSpec error formatting
|
|
70
|
+
- Changed `bundle_without_spec.rb` to use `skip_for` instead of `pending_for` to prevent test setup from running on unsupported Ruby versions (which was polluting the project Gemfile.lock with test gems)
|
|
71
|
+
- YARD CLI config switch from custom Kramdown support to yard-fence
|
|
72
|
+
|
|
73
|
+
### Fixed
|
|
74
|
+
|
|
75
|
+
- Fixed `BundlerAdapter#install` not passing `gemfile_path` to `Command.new`, which caused bundler to potentially write to the wrong Gemfile.lock when `Bundler.with_original_env` reset the environment
|
|
76
|
+
- Fixed ore-light adapter path resolution: ore now runs from the gemfile's directory so relative path dependencies resolve correctly (ore resolves paths relative to working directory, not gemfile location)
|
|
77
|
+
- Fixed Thor `invoke(:generate, [])` call in `update` command to pass empty options hash, preventing argument leakage
|
|
78
|
+
|
|
79
|
+
### Security
|
|
80
|
+
|
|
81
|
+
- Ore adapter now uses array-based command construction for `Kernel.system` calls instead of string interpolation, preventing potential shell injection vulnerabilities
|
|
82
|
+
|
|
83
|
+
## [3.0.0] - 2025-07-28
|
|
84
|
+
|
|
85
|
+
- Initial release as a hard fork of [appraisal v3.0.0.rc1](https://github.com/thoughtbot/appraisal/commit/602cdd9b5f8cb8f36992733422f69312b172f427) with many improvements - by @pboling
|
|
18
86
|
- support for `eval_gemfile`
|
|
19
87
|
- support for Ruby 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 (all removed, or planned-to-be, in thoughtbot's `appraisal`)
|
|
20
|
-
- NOTE: The [setup-ruby GH Action](https://github.com/ruby/setup-ruby) only ships support for Ruby 2.3+, so older Rubies are no longer tested in CI. Compatibility is assumed thanks to [![Enforced Code Style Linter]
|
|
88
|
+
- NOTE: The [setup-ruby GH Action](https://github.com/ruby/setup-ruby) only ships support for Ruby 2.3+, so older Rubies are no longer tested in CI. Compatibility is assumed thanks to [](https://github.com/rubocop-lts/rubocop-lts) enforcing the syntax for the oldest supported Ruby, which is Ruby v1.8. File a bug if you find something broken.
|
|
21
89
|
- Support for JRuby 9.4+
|
|
22
90
|
- updated and improved documentation
|
|
23
91
|
- maintainability tracked with QLTY.sh and the reek gem
|
|
24
92
|
- code coverage tracked with Coveralls, QLTY.sh, and the kettle-soup-cover gem
|
|
25
93
|
- other minor fixes and improvements
|
|
26
94
|
|
|
27
|
-
[Unreleased]: https://
|
|
28
|
-
[3.0.
|
|
95
|
+
[Unreleased]: https://github.com/appraisal-rb/appraisal2/compare/v3.0.1...HEAD
|
|
96
|
+
[3.0.1]: https://github.com/appraisal-rb/appraisal2/compare/v3.0.0...v3.0.1
|
|
97
|
+
[3.0.1t]: https://github.com/appraisal-rb/appraisal2/releases/tag/v3.0.1
|
|
98
|
+
[3.0.0]: https://github.com/appraisal-rb/appraisal2/compare/602cdd9b5f8cb8f36992733422f69312b172f427...v3.0.0
|
data/README.md
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<img width="120px" src="https://github.com/galtzo-floss/shields-badge/raw/main/docs/images/logo/ruby-logo-198px.svg?raw=true" alt="Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5">
|
|
10
|
-
</a>
|
|
11
|
-
</p>
|
|
1
|
+
[![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![Appraisal2 Logo by Aboling0, CC BY-SA 4.0][🖼️appraisal2-i]][🖼️appraisal2] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang]
|
|
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
|
|
12
9
|
|
|
13
10
|
# 🔍️ Appraisal2
|
|
14
11
|
|
|
@@ -16,12 +13,19 @@
|
|
|
16
13
|
|
|
17
14
|
- You, possibly
|
|
18
15
|
|
|
19
|
-
[![Version][👽versioni]][👽version] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![Depfu][🔑depfui♻️]][🔑depfu] [![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 Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
|
|
16
|
+
[![Version][👽versioni]][👽version] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![Depfu][🔑depfui♻️]][🔑depfu] [![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] [![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]
|
|
20
17
|
|
|
21
18
|
---
|
|
22
19
|
|
|
23
20
|
[![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
|
|
24
21
|
|
|
22
|
+
<details>
|
|
23
|
+
<summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
|
|
24
|
+
|
|
25
|
+
I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
|
|
26
|
+
|
|
27
|
+
</details>
|
|
28
|
+
|
|
25
29
|
## 🌻 Synopsis
|
|
26
30
|
|
|
27
31
|
Appraisal2 integrates with bundler and rake to test your library against
|
|
@@ -37,6 +41,8 @@ and [Joe Ferris](https://github.com/jferris), the original author!
|
|
|
37
41
|
Appraisal2 adds:
|
|
38
42
|
|
|
39
43
|
- support for `eval_gemfile`
|
|
44
|
+
- support for [ORE](https://github.com/contriboss/ore-light) as an alternative gem manager (faster than bundler!)
|
|
45
|
+
- For easy setup in **Gitea** [Actions](https://docs.gitea.com/usage/actions/overview), **Forgejo** [Actions](https://forgejo.org/docs/next/admin/actions/), **Codeberg** [Actions](https://docs.codeberg.org/ci/actions/), or **GitHub** [Actions](https://github.com/marketplace/actions/setup-ruby-with-rv-and-ore) check out [appraisal-rb/setup-ruby-flash](https://github.com/appraisal-rb/setup-ruby-flash)
|
|
40
46
|
- support for Ruby 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6 (all removed, or planned-to-be, in thoughtbot's `appraisal`)
|
|
41
47
|
- NOTE: The [setup-ruby GH Action](https://github.com/ruby/setup-ruby) only ships support for Ruby 2.3+, so older Rubies are no longer tested in CI. Compatibility is assumed thanks to [![Enforced Code Style Linter][💎rlts-img]][💎rlts] enforcing the syntax for the oldest supported Ruby, which is Ruby v1.8. File a bug if you find something broken.
|
|
42
48
|
- Support for JRuby 9.4+
|
|
@@ -83,6 +89,9 @@ pollute the global namespace, one alternative is
|
|
|
83
89
|
|
|
84
90
|
### 🔒 Secure Installation
|
|
85
91
|
|
|
92
|
+
<details>
|
|
93
|
+
<summary>For Medium or High Security Installations</summary>
|
|
94
|
+
|
|
86
95
|
`appraisal2` is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
|
|
87
96
|
[stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
|
|
88
97
|
by following the instructions below.
|
|
@@ -111,6 +120,8 @@ bundle config set --global trust-policy MediumSecurity
|
|
|
111
120
|
|
|
112
121
|
NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
|
|
113
122
|
|
|
123
|
+
</details>
|
|
124
|
+
|
|
114
125
|
## 🔧 Basic Setup
|
|
115
126
|
|
|
116
127
|
Setting up appraisal2 requires an `Appraisals` file (similar to a `Gemfile`) in
|
|
@@ -134,6 +145,173 @@ your `Gemfile`, so you don't need to repeat anything that's the same for each
|
|
|
134
145
|
appraisal. If something is specified in both the Gemfile and an appraisal, the
|
|
135
146
|
version from the appraisal takes precedence.
|
|
136
147
|
|
|
148
|
+
### Examples of usage in the wild
|
|
149
|
+
|
|
150
|
+
Appraisal2 can be setup to achieve many different things, from testing against
|
|
151
|
+
different versions of services, like MySQL, Redis, or Memcached, and their drivers,
|
|
152
|
+
different versions of gems, different platforms, and running different types of validations
|
|
153
|
+
which each require a distinct set of gems.
|
|
154
|
+
It can also help developers to follow the [official recommendation](https://github.com/rubygems/bundler-site/pull/501) (since 2017) of the bundler team,
|
|
155
|
+
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.
|
|
156
|
+
|
|
157
|
+
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!
|
|
158
|
+
|
|
159
|
+
| # | gem | locked / unlocked deps | analysis / services | SemVer / HEAD deps | Rubies | os |
|
|
160
|
+
|---|-------------------------------------------------------------------------------|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----|
|
|
161
|
+
| 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-🗣️] | ❌ |
|
|
162
|
+
| 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-🗣️] | ❌ |
|
|
163
|
+
| 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-🗣️] | ❌ |
|
|
164
|
+
| 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⚙️]<br>[![Svcs][4-sc⚙️i]][4-sc⚙️]<br>[![L-Svcs][4-sl⚙️i]][4-sl⚙️]<br>[![S-Svcs][4-ss⚙️i]][4-ss⚙️]<br>[![U-Svcs][4-su⚙️i]][4-su⚙️]<br>[![A-Svcs][4-sa⚙️i]][4-sa⚙️]<br>[![J-Svcs][4-sj⚙️i]][4-sj⚙️]<br>[![AJ-Svcs][4-saj⚙️i]][4-saj⚙️] | [![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>[![JRuby Ancient][4-ja👴i]][4-ja👴]<br>[![Head][4-🗣️i]][4-🗣️] | ❌ |
|
|
165
|
+
|
|
166
|
+
[1-gh]: https://github.com/omniauth/omniauth-identity
|
|
167
|
+
[1-🧰]: https://www.ruby-toolbox.com/projects/omniauth-identity
|
|
168
|
+
[1-⭐️i]: https://img.shields.io/github/stars/omniauth/omniauth-identity
|
|
169
|
+
[1-🔢i]: https://img.shields.io/gem/rd/omniauth-identity.svg
|
|
170
|
+
[1-🔒️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/deps_locked.yml
|
|
171
|
+
[1-🔒️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/deps_locked.yml/badge.svg
|
|
172
|
+
[1-un🔒️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/deps_unlocked.yml
|
|
173
|
+
[1-un🔒️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/deps_unlocked.yml/badge.svg
|
|
174
|
+
[1-as⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/style.yml
|
|
175
|
+
[1-as⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/style.yml/badge.svg
|
|
176
|
+
[1-ac⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/coverage.yml
|
|
177
|
+
[1-ac⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/coverage.yml/badge.svg
|
|
178
|
+
[1-sc⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/current-svc-adapters.yml
|
|
179
|
+
[1-sc⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/current-svc-adapters.yml/badge.svg
|
|
180
|
+
[1-sl⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/legacy-svc-adapters.yml
|
|
181
|
+
[1-sl⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/legacy-svc-adapters.yml/badge.svg
|
|
182
|
+
[1-ss⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/supported-svc-adapters.yml
|
|
183
|
+
[1-ss⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/supported-svc-adapters.yml/badge.svg
|
|
184
|
+
[1-su⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/unsupported-svc-adapters.yml
|
|
185
|
+
[1-su⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/unsupported-svc-adapters.yml/badge.svg
|
|
186
|
+
[1-sa⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/ancient-svc-adapters.yml
|
|
187
|
+
[1-sa⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/ancient-svc-adapters.yml/badge.svg
|
|
188
|
+
[1-sj⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/jruby-svc-adapters.yml
|
|
189
|
+
[1-sj⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/jruby-svc-adapters.yml/badge.svg
|
|
190
|
+
[1-saj⚙️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/jruby-ancient-svc-adapters.yml
|
|
191
|
+
[1-saj⚙️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/jruby-ancient-svc-adapters.yml/badge.svg
|
|
192
|
+
[1-⏰]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/current.yml
|
|
193
|
+
[1-⏰i]: https://github.com/omniauth/omniauth-identity/actions/workflows/current.yml/badge.svg
|
|
194
|
+
[1-j]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/jruby.yml
|
|
195
|
+
[1-ji]: https://github.com/omniauth/omniauth-identity/actions/workflows/jruby.yml/badge.svg
|
|
196
|
+
[1-👟]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/current-runtime-heads.yml
|
|
197
|
+
[1-👟i]: https://github.com/omniauth/omniauth-identity/actions/workflows/current-runtime-heads.yml/badge.svg
|
|
198
|
+
[1-👴]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/supported.yml
|
|
199
|
+
[1-👴i]: https://github.com/omniauth/omniauth-identity/actions/workflows/supported.yml/badge.svg
|
|
200
|
+
[1-u👴]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/unsupported.yml
|
|
201
|
+
[1-u👴i]: https://github.com/omniauth/omniauth-identity/actions/workflows/unsupported.yml/badge.svg
|
|
202
|
+
[1-l👴]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/legacy.yml
|
|
203
|
+
[1-l👴i]: https://github.com/omniauth/omniauth-identity/actions/workflows/legacy.yml/badge.svg
|
|
204
|
+
[1-a👴]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/ancient.yml
|
|
205
|
+
[1-a👴i]: https://github.com/omniauth/omniauth-identity/actions/workflows/ancient.yml/badge.svg
|
|
206
|
+
[1-ja👴]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/jruby-ancient.yml
|
|
207
|
+
[1-ja👴i]: https://github.com/omniauth/omniauth-identity/actions/workflows/jruby-ancient.yml/badge.svg
|
|
208
|
+
[1-🗣️]: https://github.com/omniauth/omniauth-identity/blob/main/.github/workflows/heads.yml
|
|
209
|
+
[1-🗣️i]: https://github.com/omniauth/omniauth-identity/actions/workflows/heads.yml/badge.svg
|
|
210
|
+
[1-gh]: https://github.com/omniauth/omniauth-identity
|
|
211
|
+
|
|
212
|
+
[2-gh]: https://github.com/pboling/rspec-stubbed_env
|
|
213
|
+
[2-🧰]: https://www.ruby-toolbox.com/projects/rspec-stubbed_env
|
|
214
|
+
[2-⭐️i]: https://img.shields.io/github/stars/pboling/rspec-stubbed_env
|
|
215
|
+
[2-🔢i]: https://img.shields.io/gem/rd/rspec-stubbed_env.svg
|
|
216
|
+
[2-🔒️]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/deps_locked.yml
|
|
217
|
+
[2-🔒️i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/deps_locked.yml/badge.svg
|
|
218
|
+
[2-un🔒️]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/deps_unlocked.yml
|
|
219
|
+
[2-un🔒️i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/deps_unlocked.yml/badge.svg
|
|
220
|
+
[2-as⚙️]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/style.yml
|
|
221
|
+
[2-as⚙️i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/style.yml/badge.svg
|
|
222
|
+
[2-ac⚙️]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/coverage.yml
|
|
223
|
+
[2-ac⚙️i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/coverage.yml/badge.svg
|
|
224
|
+
[2-⏰]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/current.yml
|
|
225
|
+
[2-⏰i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/current.yml/badge.svg
|
|
226
|
+
[2-j]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/jruby.yml
|
|
227
|
+
[2-ji]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/jruby.yml/badge.svg
|
|
228
|
+
[2-t]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/truffle.yml
|
|
229
|
+
[2-ti]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/truffle.yml/badge.svg
|
|
230
|
+
[2-👴]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/supported.yml
|
|
231
|
+
[2-👴i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/supported.yml/badge.svg
|
|
232
|
+
[2-u👴]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/unsupported.yml
|
|
233
|
+
[2-u👴i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/unsupported.yml/badge.svg
|
|
234
|
+
[2-l👴]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/legacy.yml
|
|
235
|
+
[2-l👴i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/legacy.yml/badge.svg
|
|
236
|
+
[2-a👴]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/ancient.yml
|
|
237
|
+
[2-a👴i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/ancient.yml/badge.svg
|
|
238
|
+
[2-🗣️]: https://github.com/pboling/rspec-stubbed_env/blob/main/.github/workflows/heads.yml
|
|
239
|
+
[2-🗣️i]: https://github.com/pboling/rspec-stubbed_env/actions/workflows/heads.yml/badge.svg
|
|
240
|
+
|
|
241
|
+
[3-gh]: https://github.com/pboling/silent_stream
|
|
242
|
+
[3-🧰]: https://www.ruby-toolbox.com/projects/silent_stream
|
|
243
|
+
[3-⭐️i]: https://img.shields.io/github/stars/pboling/silent_stream
|
|
244
|
+
[3-🔢i]: https://img.shields.io/gem/rd/silent_stream.svg
|
|
245
|
+
[3-🔒️]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/deps_locked.yml
|
|
246
|
+
[3-🔒️i]: https://github.com/pboling/silent_stream/actions/workflows/deps_locked.yml/badge.svg
|
|
247
|
+
[3-un🔒️]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/deps_unlocked.yml
|
|
248
|
+
[3-un🔒️i]: https://github.com/pboling/silent_stream/actions/workflows/deps_unlocked.yml/badge.svg
|
|
249
|
+
[3-as⚙️]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/style.yml
|
|
250
|
+
[3-as⚙️i]: https://github.com/pboling/silent_stream/actions/workflows/style.yml/badge.svg
|
|
251
|
+
[3-ac⚙️]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/coverage.yml
|
|
252
|
+
[3-ac⚙️i]: https://github.com/pboling/silent_stream/actions/workflows/coverage.yml/badge.svg
|
|
253
|
+
[3-⏰]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/current.yml
|
|
254
|
+
[3-⏰i]: https://github.com/pboling/silent_stream/actions/workflows/current.yml/badge.svg
|
|
255
|
+
[3-j]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/jruby.yml
|
|
256
|
+
[3-ji]: https://github.com/pboling/silent_stream/actions/workflows/jruby.yml/badge.svg
|
|
257
|
+
[3-t]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/truffle.yml
|
|
258
|
+
[3-ti]: https://github.com/pboling/silent_stream/actions/workflows/truffle.yml/badge.svg
|
|
259
|
+
[3-👴]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/supported.yml
|
|
260
|
+
[3-👴i]: https://github.com/pboling/silent_stream/actions/workflows/supported.yml/badge.svg
|
|
261
|
+
[3-u👴]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/unsupported.yml
|
|
262
|
+
[3-u👴i]: https://github.com/pboling/silent_stream/actions/workflows/unsupported.yml/badge.svg
|
|
263
|
+
[3-l👴]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/legacy.yml
|
|
264
|
+
[3-l👴i]: https://github.com/pboling/silent_stream/actions/workflows/legacy.yml/badge.svg
|
|
265
|
+
[3-a👴]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/ancient.yml
|
|
266
|
+
[3-a👴i]: https://github.com/pboling/silent_stream/actions/workflows/ancient.yml/badge.svg
|
|
267
|
+
[3-🗣️]: https://github.com/pboling/silent_stream/blob/master/.github/workflows/heads.yml
|
|
268
|
+
[3-🗣️i]: https://github.com/pboling/silent_stream/actions/workflows/heads.yml/badge.svg
|
|
269
|
+
|
|
270
|
+
[4-gh]: https://github.com/ruby-oauth/oauth2
|
|
271
|
+
[4-🧰]: https://www.ruby-toolbox.com/projects/oauth2
|
|
272
|
+
[4-⭐️i]: https://img.shields.io/github/stars/ruby-oauth/oauth2
|
|
273
|
+
[4-🔢i]: https://img.shields.io/gem/rd/oauth2.svg
|
|
274
|
+
[4-🔒️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/deps_locked.yml
|
|
275
|
+
[4-🔒️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/deps_locked.yml/badge.svg
|
|
276
|
+
[4-un🔒️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/deps_unlocked.yml
|
|
277
|
+
[4-un🔒️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/deps_unlocked.yml/badge.svg
|
|
278
|
+
[4-as⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/style.yml
|
|
279
|
+
[4-as⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/style.yml/badge.svg
|
|
280
|
+
[4-ac⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/coverage.yml
|
|
281
|
+
[4-ac⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/coverage.yml/badge.svg
|
|
282
|
+
[4-sc⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/current-svc-adapters.yml
|
|
283
|
+
[4-sc⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/current-svc-adapters.yml/badge.svg
|
|
284
|
+
[4-sl⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/legacy-svc-adapters.yml
|
|
285
|
+
[4-sl⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/legacy-svc-adapters.yml/badge.svg
|
|
286
|
+
[4-ss⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/supported-svc-adapters.yml
|
|
287
|
+
[4-ss⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/supported-svc-adapters.yml/badge.svg
|
|
288
|
+
[4-su⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/unsupported-svc-adapters.yml
|
|
289
|
+
[4-su⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/unsupported-svc-adapters.yml/badge.svg
|
|
290
|
+
[4-sa⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/ancient-svc-adapters.yml
|
|
291
|
+
[4-sa⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/ancient-svc-adapters.yml/badge.svg
|
|
292
|
+
[4-sj⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/jruby-svc-adapters.yml
|
|
293
|
+
[4-sj⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/jruby-svc-adapters.yml/badge.svg
|
|
294
|
+
[4-saj⚙️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/jruby-ancient-svc-adapters.yml
|
|
295
|
+
[4-saj⚙️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/jruby-ancient-svc-adapters.yml/badge.svg
|
|
296
|
+
[4-⏰]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/current.yml
|
|
297
|
+
[4-⏰i]: https://github.com/ruby-oauth/oauth2/actions/workflows/current.yml/badge.svg
|
|
298
|
+
[4-j]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/jruby.yml
|
|
299
|
+
[4-ji]: https://github.com/ruby-oauth/oauth2/actions/workflows/jruby.yml/badge.svg
|
|
300
|
+
[4-👟]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/current-runtime-heads.yml
|
|
301
|
+
[4-👟i]: https://github.com/ruby-oauth/oauth2/actions/workflows/current-runtime-heads.yml/badge.svg
|
|
302
|
+
[4-👴]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/supported.yml
|
|
303
|
+
[4-👴i]: https://github.com/ruby-oauth/oauth2/actions/workflows/supported.yml/badge.svg
|
|
304
|
+
[4-u👴]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/unsupported.yml
|
|
305
|
+
[4-u👴i]: https://github.com/ruby-oauth/oauth2/actions/workflows/unsupported.yml/badge.svg
|
|
306
|
+
[4-l👴]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/legacy.yml
|
|
307
|
+
[4-l👴i]: https://github.com/ruby-oauth/oauth2/actions/workflows/legacy.yml/badge.svg
|
|
308
|
+
[4-a👴]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/ancient.yml
|
|
309
|
+
[4-a👴i]: https://github.com/ruby-oauth/oauth2/actions/workflows/ancient.yml/badge.svg
|
|
310
|
+
[4-ja👴]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/jruby-ancient.yml
|
|
311
|
+
[4-ja👴i]: https://github.com/ruby-oauth/oauth2/actions/workflows/jruby-ancient.yml/badge.svg
|
|
312
|
+
[4-🗣️]: https://github.com/ruby-oauth/oauth2/blob/main/.github/workflows/heads.yml
|
|
313
|
+
[4-🗣️i]: https://github.com/ruby-oauth/oauth2/actions/workflows/heads.yml/badge.svg
|
|
314
|
+
|
|
137
315
|
## ⚒️ Basic Usage
|
|
138
316
|
|
|
139
317
|
Once you've configured the appraisals you want to use, you need to install the
|
|
@@ -158,7 +336,7 @@ your dependencies in quick test runs, but keep running the tests in older
|
|
|
158
336
|
versions to check for regressions.
|
|
159
337
|
|
|
160
338
|
In the case that you want to run all the appraisals by default when you run
|
|
161
|
-
`rake`, you can override your default Rake task by
|
|
339
|
+
`rake`, you can override your default Rake task by putting this into your Rakefile:
|
|
162
340
|
|
|
163
341
|
if !ENV["APPRAISAL_INITIALIZED"] && ENV.fetch("CI", "false").casecmp("false") == 0
|
|
164
342
|
task :default => :appraisal
|
|
@@ -184,6 +362,95 @@ appraisal update [LIST_OF_GEMS] # Remove all generated gemfiles and lockfiles,
|
|
|
184
362
|
appraisal version # Display the version and exit
|
|
185
363
|
```
|
|
186
364
|
|
|
365
|
+
### Command Options
|
|
366
|
+
|
|
367
|
+
The `install` and `update` commands support several options:
|
|
368
|
+
|
|
369
|
+
| Option | Description |
|
|
370
|
+
|--------|-------------|
|
|
371
|
+
| `--gem-manager`, `-g` | Gem manager to use: `bundler` (default) or `ore` |
|
|
372
|
+
| `--jobs`, `-j` | Install gems in parallel using the given number of workers |
|
|
373
|
+
| `--retry` | Retry network and git requests that have failed (default: 1) |
|
|
374
|
+
| `--without` | A space-separated list of groups to skip during installation |
|
|
375
|
+
| `--full-index` | Run bundle install with the full-index argument |
|
|
376
|
+
| `--path` | Install gems in the specified directory |
|
|
377
|
+
|
|
378
|
+
## 🦀 Using Ore (Alternative Gem Manager)
|
|
379
|
+
|
|
380
|
+
Appraisal2 supports [ORE](https://github.com/contriboss/ore-light) as an alternative to Bundler
|
|
381
|
+
for dependency resolution and installation. Ore is a fast gem manager written in Go that aims
|
|
382
|
+
to be a drop-in replacement for Bundler.
|
|
383
|
+
|
|
384
|
+
### Installing Ore
|
|
385
|
+
|
|
386
|
+
You can install ORE via:
|
|
387
|
+
|
|
388
|
+
```bash
|
|
389
|
+
# Install ORE Light (no Ruby required for download)
|
|
390
|
+
# Installs to ~/.local/bin by default (no sudo needed)
|
|
391
|
+
curl -fsSL https://raw.githubusercontent.com/contriboss/ore-light/master/scripts/install.sh | bash
|
|
392
|
+
|
|
393
|
+
# For system-wide installation to /usr/local/bin
|
|
394
|
+
curl -fsSL https://raw.githubusercontent.com/contriboss/ore-light/master/scripts/install.sh | bash -s -- --system
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### Using Ore with Appraisal2
|
|
398
|
+
|
|
399
|
+
To use ORE instead of bundler, pass the `--gem-manager=ore` option:
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
# Install dependencies using ORE
|
|
403
|
+
bundle exec appraisal install --gem-manager=ore
|
|
404
|
+
|
|
405
|
+
# Update dependencies using ORE
|
|
406
|
+
bundle exec appraisal update --gem-manager=ore
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
You can also use the short form:
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
bundle exec appraisal install -g ore
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
### Ore-Specific Options
|
|
416
|
+
|
|
417
|
+
When using ORE, some options are translated to ORE's equivalents:
|
|
418
|
+
|
|
419
|
+
| Appraisal Option | Ore Equivalent | Notes |
|
|
420
|
+
|------------------|----------------|-------------------------------------|
|
|
421
|
+
| `--jobs=N` | `-workers=N` | Only used when N > 1 |
|
|
422
|
+
| `--path=DIR` | `-vendor=DIR` | Sets the gem installation directory |
|
|
423
|
+
| `--without=GROUPS` | `-without=GROUP1,GROUP2` | Groups are comma-separated in ORE |
|
|
424
|
+
| `--retry` | *(ignored)* | ORE handles retries internally |
|
|
425
|
+
| `--full-index` | *(ignored)* | Not applicable to ORE |
|
|
426
|
+
|
|
427
|
+
### Example Workflow with ORE
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
# Generate appraisal gemfiles
|
|
431
|
+
bundle exec appraisal generate
|
|
432
|
+
|
|
433
|
+
# Install dependencies using ORE (faster than bundler)
|
|
434
|
+
bundle exec appraisal install --gem-manager=ore --jobs=4
|
|
435
|
+
|
|
436
|
+
# Run tests against all appraisals
|
|
437
|
+
bundle exec appraisal rspec
|
|
438
|
+
|
|
439
|
+
# Update a specific gem using ORE
|
|
440
|
+
bundle exec appraisal update rack --gem-manager=ore
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
### When to Use Ore
|
|
444
|
+
|
|
445
|
+
Ore can be particularly beneficial when:
|
|
446
|
+
|
|
447
|
+
- You have many appraisals and want faster installation
|
|
448
|
+
- You're in a CI environment where installation speed matters
|
|
449
|
+
- You want to take advantage of ORE's parallel resolution capabilities
|
|
450
|
+
|
|
451
|
+
Note that ORE must be installed separately and available in your PATH.
|
|
452
|
+
If you specify ORE and it is not available, appraisal2 will raise an error.
|
|
453
|
+
|
|
187
454
|
Under the hood
|
|
188
455
|
--------------
|
|
189
456
|
|
|
@@ -264,7 +531,7 @@ end
|
|
|
264
531
|
|
|
265
532
|
**Appraisal2.root.gemfile**
|
|
266
533
|
```ruby
|
|
267
|
-
source "https://
|
|
534
|
+
source "https://gem.coop"
|
|
268
535
|
|
|
269
536
|
# Appraisal2 Root Gemfile is for running appraisal to generate the Appraisal2 Gemfiles
|
|
270
537
|
# We do not load the standard Gemfile, as it is tailored for local development,
|
|
@@ -421,6 +688,8 @@ See [CONTRIBUTING.md][🤝contributing].
|
|
|
421
688
|
|
|
422
689
|
[![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls]
|
|
423
690
|
|
|
691
|
+
[![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov]
|
|
692
|
+
|
|
424
693
|
### 🪇 Code of Conduct
|
|
425
694
|
|
|
426
695
|
Everyone interacting with this project's codebases, issue trackers,
|
|
@@ -493,7 +762,7 @@ See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright
|
|
|
493
762
|
<a href="https://discord.gg/3qme4XHNKN">
|
|
494
763
|
Galtzo.com
|
|
495
764
|
<picture>
|
|
496
|
-
<img src="https://
|
|
765
|
+
<img src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px-blank.svg" alt="Galtzo.com Logo (wordless) by Aboling0, CC BY-SA 4.0" width="24">
|
|
497
766
|
</picture>
|
|
498
767
|
</a>, and Appraisal2 contributors
|
|
499
768
|
</li>
|
|
@@ -506,13 +775,13 @@ Having arrived at the bottom of the page, please endure a final supplication.
|
|
|
506
775
|
The primary maintainer of this gem, Peter Boling, wants
|
|
507
776
|
Ruby to be a great place for people to solve problems, big and small.
|
|
508
777
|
Please consider supporting his efforts via the giant yellow link below,
|
|
509
|
-
or one of smaller ones, depending on button size preference.
|
|
778
|
+
or one of the smaller ones, depending on button size preference.
|
|
510
779
|
|
|
511
780
|
[![Buy me a latte][🖇buyme-img]][🖇buyme]
|
|
512
781
|
|
|
513
782
|
[![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon]
|
|
514
783
|
|
|
515
|
-
P.S. If you need help
|
|
784
|
+
P.S. If you need help️ or want to say thanks, 👇 Join the Discord.
|
|
516
785
|
|
|
517
786
|
[![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
|
|
518
787
|
|
|
@@ -626,6 +895,12 @@ P.S. If you need help️, or want to say thanks, 👇 Join the Discord.
|
|
|
626
895
|
[🚎10-j9.4-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/jruby-9-4.yml/badge.svg
|
|
627
896
|
[🚎11-c-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/current.yml
|
|
628
897
|
[🚎11-c-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/current.yml/badge.svg
|
|
898
|
+
[🚎12-crh-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/current-runtime-heads.yml
|
|
899
|
+
[🚎12-crh-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/current-runtime-heads.yml/badge.svg
|
|
900
|
+
[🚎13-🔒️-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/deps_locked.yml
|
|
901
|
+
[🚎13-🔒️-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/deps_locked.yml/badge.svg
|
|
902
|
+
[🚎14-🔓️-wf]: https://github.com/appraisal-rb/appraisal2/actions/workflows/deps_unlocked.yml
|
|
903
|
+
[🚎14-🔓️-wfi]: https://github.com/appraisal-rb/appraisal2/actions/workflows/deps_unlocked.yml/badge.svg
|
|
629
904
|
[💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
630
905
|
[💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
631
906
|
[💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white
|
|
@@ -668,7 +943,7 @@ P.S. If you need help️, or want to say thanks, 👇 Join the Discord.
|
|
|
668
943
|
[📌gitmoji]:https://gitmoji.dev
|
|
669
944
|
[📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20😜%20😍-34495e.svg?style=flat-square
|
|
670
945
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
671
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-
|
|
946
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.782-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
672
947
|
[🔐security]: SECURITY.md
|
|
673
948
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
674
949
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -697,4 +972,4 @@ Once fixed, these should look much nicer.
|
|
|
697
972
|
[![CodeCov Test Coverage][🔑codecovi♻️]][🔑codecov]
|
|
698
973
|
[![Coverage Graph][🔑codecov-g♻️]][🔑codecov]
|
|
699
974
|
|
|
700
|
-
</details>
|
|
975
|
+
</details>
|