oauth2 2.0.18 → 2.0.25
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 +211 -5
- data/CITATION.cff +6 -6
- data/CONTRIBUTING.md +86 -32
- data/FUNDING.md +2 -6
- data/LICENSE.md +111 -0
- data/{LICENSE.txt → MIT.md} +6 -7
- data/README.md +365 -741
- data/SECURITY.md +1 -4
- data/certs/pboling.pem +27 -0
- data/lib/oauth2/access_token.rb +35 -32
- data/lib/oauth2/auth_sanitizer.rb +20 -0
- data/lib/oauth2/authenticator.rb +9 -7
- data/lib/oauth2/client.rb +76 -19
- data/lib/oauth2/error.rb +10 -6
- data/lib/oauth2/filtered_attributes.rb +7 -49
- data/lib/oauth2/response.rb +30 -24
- data/lib/oauth2/version.rb +2 -1
- data/lib/oauth2.rb +39 -17
- data/sig/oauth2/filtered_attributes.rbs +6 -1
- data/sig/oauth2/sanitized_logger.rbs +32 -0
- data/sig/oauth2/thing_filter.rbs +10 -0
- data/sig/oauth2/version.rbs +1 -0
- data.tar.gz.sig +0 -0
- metadata +237 -103
- metadata.gz.sig +0 -0
- data/IRP.md +0 -107
- data/OIDC.md +0 -167
- data/REEK +0 -0
- data/THREAT_MODEL.md +0 -85
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 12dd3e2f3cb149c49f71730a5804b2048f566e30b0e3aabc99f8fec7a24169d0
|
|
4
|
+
data.tar.gz: f7adbcd67c2803bd456ced1dc96c6a26d8773dde70a387f44f176ce35567e810
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9dc679e94e58e1fb5b4926889cb39d5308c6a4de6845a3562f030b8174f0a06e43d88d6ce7043b98d3046c59de8a49a1b6763684a0357e620b1c830ea6b7ae43
|
|
7
|
+
data.tar.gz: 677e9e28a831e1e7e20d2f2404a3769c82022098c683210f3f072c349bd7bde1e8357ebddd11b0c58327611e6380aa214b8983eb1634a6b35f42d8ac34e734f8
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,202 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [2.0.25] - 2026-07-14
|
|
34
|
+
|
|
35
|
+
- TAG: [v2.0.25][2.0.25t]
|
|
36
|
+
- COVERAGE: 100.00% -- 558/558 lines in 15 files
|
|
37
|
+
- BRANCH COVERAGE: 97.89% -- 186/190 branches in 15 files
|
|
38
|
+
- 88.35% documented
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- Added support for JRuby 10.1 and TruffleRuby 34.0.
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- Raised the `anonymous_loader` runtime dependency floor to `>= 0.1.3`.
|
|
47
|
+
- Raised the `auth-sanitizer` runtime dependency floor to `>= 0.2.3`.
|
|
48
|
+
- Retemplated generated project metadata, support documentation, CI workflows,
|
|
49
|
+
binstubs, and development dependency floors with `kettle-jem` v7.0.0.
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
|
|
53
|
+
- Package configured license files in gem release file lists.
|
|
54
|
+
|
|
55
|
+
## [2.0.24] - 2026-06-18
|
|
56
|
+
|
|
57
|
+
- TAG: [v2.0.24][2.0.24t]
|
|
58
|
+
- COVERAGE: 100.00% -- 558/558 lines in 15 files
|
|
59
|
+
- BRANCH COVERAGE: 97.89% -- 186/190 branches in 15 files
|
|
60
|
+
- 88.35% documented
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
|
|
64
|
+
- Raised the `anonymous_loader` runtime dependency floor to `>= 0.1.1`.
|
|
65
|
+
- Raised the `auth-sanitizer` runtime dependency floor to `>= 0.2.2` and
|
|
66
|
+
switched isolated sanitizer loading to the released `anonymous_loader` gem,
|
|
67
|
+
including local workspace wiring for the new runtime dependency.
|
|
68
|
+
|
|
69
|
+
### Fixed
|
|
70
|
+
|
|
71
|
+
- Fixed isolated `auth-sanitizer` loading when Bundler standalone setup makes
|
|
72
|
+
`auth_sanitizer/loader.rb` available on `$LOAD_PATH` without adding
|
|
73
|
+
`auth-sanitizer` to `Gem.loaded_specs` or `GEM_PATH`.
|
|
74
|
+
|
|
75
|
+
## [2.0.23] - 2026-06-13
|
|
76
|
+
|
|
77
|
+
- TAG: [v2.0.23][2.0.23t]
|
|
78
|
+
- COVERAGE: 100.00% -- 562/562 lines in 15 files
|
|
79
|
+
- BRANCH COVERAGE: 97.89% -- 186/190 branches in 15 files
|
|
80
|
+
- 88.35% documented
|
|
81
|
+
|
|
82
|
+
### Changed
|
|
83
|
+
|
|
84
|
+
- Upgraded to snaky_hash v2.0.6 by @pboling
|
|
85
|
+
- Refreshed generated GHA workflow action SHA pins by @pboling
|
|
86
|
+
|
|
87
|
+
### Fixed
|
|
88
|
+
|
|
89
|
+
- Addressed Reek code-quality checks with targeted cleanup and documented compatibility exclusions by @pboling
|
|
90
|
+
- Fixed deprecation warning from MultiXML by @robzolkos
|
|
91
|
+
|
|
92
|
+
[gh!733]: https://github.com/ruby-oauth/oauth2/pull/733
|
|
93
|
+
|
|
94
|
+
- Fixed head appraisal dependency conflicts and Ruby 2.4 protocol-relative redirect handling by @pboling
|
|
95
|
+
|
|
96
|
+
## [2.0.22] - 2026-06-07
|
|
97
|
+
|
|
98
|
+
- TAG: [v2.0.22][2.0.22t]
|
|
99
|
+
- COVERAGE: 100.00% -- 542/542 lines in 15 files
|
|
100
|
+
- BRANCH COVERAGE: 100.00% -- 180/180 branches in 15 files
|
|
101
|
+
- 88.35% documented
|
|
102
|
+
|
|
103
|
+
### Changed
|
|
104
|
+
|
|
105
|
+
- Raised generated development tooling floors to `kettle-dev` >= 2.1.1 and
|
|
106
|
+
`version_gem` >= 1.1.11.
|
|
107
|
+
- Raised the runtime dependency floor for `snaky_hash` to `>= 2.0.5`.
|
|
108
|
+
|
|
109
|
+
### Security
|
|
110
|
+
|
|
111
|
+
- [GHSA-pp92-crg2-gfv9][GHSA-pp92-crg2-gfv9] Prevent protocol-relative redirect `Location` values from changing request authority, and strip `Authorization` headers from cross-origin redirects by @tonghuaroot and @pboling
|
|
112
|
+
|
|
113
|
+
[GHSA-pp92-crg2-gfv9]: https://github.com/ruby-oauth/oauth2/security/advisories/GHSA-pp92-crg2-gfv9
|
|
114
|
+
|
|
115
|
+
## [2.0.21] - 2026-06-06
|
|
116
|
+
|
|
117
|
+
- TAG: [v2.0.21][2.0.21t]
|
|
118
|
+
- COVERAGE: 100.00% -- 525/525 lines in 15 files
|
|
119
|
+
- BRANCH COVERAGE: 100.00% -- 174/174 branches in 15 files
|
|
120
|
+
- 88.35% documented
|
|
121
|
+
|
|
122
|
+
### Added
|
|
123
|
+
|
|
124
|
+
- [gh!730][gh!730] - Alternatives section to README by @jonathangrinstead
|
|
125
|
+
- Updates to alternatives section - by @pboling
|
|
126
|
+
|
|
127
|
+
[gh!730]: https://github.com/ruby-oauth/oauth2/pull/730
|
|
128
|
+
|
|
129
|
+
- Added conditional `appraisal2-rubocop` Appraisal root loading on modern Ruby
|
|
130
|
+
so generated Appraisal gemfiles are normalized during generation - by @pboling
|
|
131
|
+
|
|
132
|
+
### Changed
|
|
133
|
+
|
|
134
|
+
- Raised generated `version_gem` dependency floor to `version_gem` >= 1.1.10 - by @pboling
|
|
135
|
+
- Raised the runtime dependency floor for `auth-sanitizer` to `>= 0.2.1` so
|
|
136
|
+
OAuth2 consumers get hash and nested-attribute inspect redaction fixes plus
|
|
137
|
+
downstream RBS duplicate-declaration fixes - by @pboling
|
|
138
|
+
- Refreshed generated package metadata, support documentation, CI workflows,
|
|
139
|
+
and development dependency floors from the current kettle-jem template - by @pboling
|
|
140
|
+
- Documented the current per-version Ruby, JRuby, and TruffleRuby CI matrix in
|
|
141
|
+
generated README badges and compatibility tables - by @pboling
|
|
142
|
+
- Removed the post-install message from the gemspec to keep installs quieter - by @pboling
|
|
143
|
+
- Refreshed generated README support badges so Ruby 2.3 is listed as
|
|
144
|
+
supported but untested - by @pboling
|
|
145
|
+
- Refreshed generated project metadata from the current kettle-jem template - by @pboling
|
|
146
|
+
- Raised development tooling floors to `kettle-dev` >= 2.1.0 and
|
|
147
|
+
`appraisal2` >= 3.1.1 for Appraisal2's split generate/install/update
|
|
148
|
+
command semantics.
|
|
149
|
+
- Refreshed generated Appraisal and CI templates to appraisal2-rubocop 0.2.0 - by @pboling
|
|
150
|
+
|
|
151
|
+
### Removed
|
|
152
|
+
|
|
153
|
+
- Dropped the obsolete Ruby 2.3 Caboose workflow and its Hashie appraisal
|
|
154
|
+
gemfiles; development tooling now requires Ruby 2.4 or newer, and Ruby 2.4
|
|
155
|
+
coverage is already handled by the standard Ruby 2.4 workflow - by @pboling
|
|
156
|
+
|
|
157
|
+
### Fixed
|
|
158
|
+
|
|
159
|
+
- Updated CI workflow maintenance: QLTY uploads now use OIDC and harden-runner
|
|
160
|
+
is pinned to v2.19.4 - by @pboling
|
|
161
|
+
- Replaced stale platform CI `rake magic` commands with portable spec commands - by @pboling
|
|
162
|
+
- Pinned `multi_xml` below 0.9 for TruffleRuby compatibility - by @pboling
|
|
163
|
+
- Marked EOL TruffleRuby 22.3, 23.0, and 23.1 CI as experimental because they can crash inside the interpreter during Bundler setup - by @pboling
|
|
164
|
+
- Improved gemspec version loading for older Rubies and isolated load-path
|
|
165
|
+
contexts - by @pboling
|
|
166
|
+
- Constrained `json` in TruffleRuby and Ruby 3.2 appraisal bundles so generated
|
|
167
|
+
CI dependency resolution remains compatible with those Ruby targets - by @pboling
|
|
168
|
+
- Pinned generated GitHub Actions `actions/checkout` steps to the peeled
|
|
169
|
+
v6.0.3 commit SHA so OSSF Scorecard workflow verification accepts them - by @pboling
|
|
170
|
+
- Marked generated EOL TruffleRuby 22.3, 23.0, and 23.1 matrix entries
|
|
171
|
+
experimental so native extension build failures do not fail the whole
|
|
172
|
+
workflow - by @pboling
|
|
173
|
+
- Pinned `json` only for EOL TruffleRuby appraisal bundles, matching the
|
|
174
|
+
default `json` gem shipped with each TruffleRuby release instead of
|
|
175
|
+
constraining MRI Ruby appraisal bundles - by @pboling
|
|
176
|
+
|
|
177
|
+
## [2.0.20] - 2026-05-20
|
|
178
|
+
|
|
179
|
+
- TAG: [v2.0.20][2.0.20t]
|
|
180
|
+
- COVERAGE: 99.62% -- 525/527 lines in 15 files
|
|
181
|
+
- BRANCH COVERAGE: 98.88% -- 176/178 branches in 15 files
|
|
182
|
+
- 88.35% documented
|
|
183
|
+
|
|
184
|
+
### Added
|
|
185
|
+
|
|
186
|
+
- OAuth2::VERSION (Traditional Constant Location) - by @pboling
|
|
187
|
+
|
|
188
|
+
### Changed
|
|
189
|
+
|
|
190
|
+
- auth-sanitizer v0.1.3 - by @pboling
|
|
191
|
+
|
|
192
|
+
### Fixed
|
|
193
|
+
|
|
194
|
+
- [gh!721][gh!721] Load `auth-sanitizer` through an internal isolated loader so requiring `oauth2` does not add top-level `Auth` or `AuthSanitizer` constants that may collide with downstream applications by @pboling
|
|
195
|
+
|
|
196
|
+
### Security
|
|
197
|
+
|
|
198
|
+
[gh!721]: https://github.com/ruby-oauth/oauth2/pull/721
|
|
199
|
+
|
|
200
|
+
## [2.0.19] - 2026-05-15
|
|
201
|
+
|
|
202
|
+
- TAG: [v2.0.19][2.0.19t]
|
|
203
|
+
- COVERAGE: 100.00% -- 515/515 lines in 14 files
|
|
204
|
+
- BRANCH COVERAGE: 100.00% -- 174/174 branches in 14 files
|
|
205
|
+
- 89.11% documented
|
|
206
|
+
|
|
207
|
+
### Added
|
|
208
|
+
|
|
209
|
+
- [gh!707][gh!707] Add `OAuth2.config[:filtered_label]` to configure the placeholder used for filtered sensitive values in inspected objects and debug logging output by @pboling
|
|
210
|
+
- [gh!707][gh!707] Add `OAuth2.config[:filtered_debug_keys]` to configure which key names have their values redacted from debug logging output by @pboling
|
|
211
|
+
|
|
212
|
+
### Changed
|
|
213
|
+
|
|
214
|
+
- [gh!707][gh!707] Make inspect-time and debug-log filters snapshot their configuration at initialization time rather than tracking later config changes by @pboling
|
|
215
|
+
- [gh!714][gh!714]Refactor sensitive-value filtering to use `auth-sanitizer` while preserving `OAuth2::FilteredAttributes` as a permanent API alias by @pboling
|
|
216
|
+
|
|
217
|
+
### Removed
|
|
218
|
+
|
|
219
|
+
- Remove the internal `OAuth2::ThingFilter` and `OAuth2::SanitizedLogger` implementations now provided by `auth-sanitizer` by @pboling
|
|
220
|
+
|
|
221
|
+
### Security
|
|
222
|
+
|
|
223
|
+
- [gh!707][gh!707] Redact sensitive values from debug logging output, including Authorization headers and common token/secret fields in headers, query strings, form bodies, and JSON payloads by @pboling
|
|
224
|
+
- NOTE: debug logging has always been, and remains, opt-in. It is turned off by default.
|
|
225
|
+
|
|
226
|
+
[gh!707]: https://github.com/ruby-oauth/oauth2/pull/707
|
|
227
|
+
[gh!714]: https://github.com/ruby-oauth/oauth2/pull/714
|
|
228
|
+
|
|
33
229
|
## [2.0.18] - 2025-11-08
|
|
34
230
|
|
|
35
231
|
- TAG: [v2.0.18][2.0.18t]
|
|
@@ -54,8 +250,6 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
54
250
|
- [gh!690][gh!690], [gh!691][gh!691], [gh!692][gh!692] - Add yard-fence
|
|
55
251
|
- handle braces within code fences in markdown properly by @pboling
|
|
56
252
|
|
|
57
|
-
### Security
|
|
58
|
-
|
|
59
253
|
[gh!683]: https://github.com/ruby-oauth/oauth2/pull/683
|
|
60
254
|
[gh!684]: https://github.com/ruby-oauth/oauth2/pull/684
|
|
61
255
|
[gh!685]: https://github.com/ruby-oauth/oauth2/pull/685
|
|
@@ -196,8 +390,6 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
196
390
|
|
|
197
391
|
- [gh!660][gh!660] - Links in README (including link to HEAD documentation) by @pboling
|
|
198
392
|
|
|
199
|
-
### Security
|
|
200
|
-
|
|
201
393
|
[gh!660]: https://github.com/ruby-oauth/oauth2/pull/660
|
|
202
394
|
[gh!657]: https://github.com/ruby-oauth/oauth2/pull/657
|
|
203
395
|
[gh!656]: https://github.com/ruby-oauth/oauth2/pull/656
|
|
@@ -738,7 +930,21 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
738
930
|
|
|
739
931
|
[gemfiles/readme]: gemfiles/README.md
|
|
740
932
|
|
|
741
|
-
[Unreleased]: https://github.com/ruby-oauth/oauth2/compare/v2.0.
|
|
933
|
+
[Unreleased]: https://github.com/ruby-oauth/oauth2/compare/v2.0.25...HEAD
|
|
934
|
+
[2.0.25]: https://github.com/ruby-oauth/oauth2/compare/v2.0.24...v2.0.25
|
|
935
|
+
[2.0.25t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.25
|
|
936
|
+
[2.0.24]: https://github.com/ruby-oauth/oauth2/compare/v2.0.23...v2.0.24
|
|
937
|
+
[2.0.24t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.24
|
|
938
|
+
[2.0.23]: https://github.com/ruby-oauth/oauth2/compare/v2.0.22...v2.0.23
|
|
939
|
+
[2.0.23t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.23
|
|
940
|
+
[2.0.22]: https://github.com/ruby-oauth/oauth2/compare/v2.0.21...v2.0.22
|
|
941
|
+
[2.0.22t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.22
|
|
942
|
+
[2.0.21]: https://github.com/ruby-oauth/oauth2/compare/v2.0.20...v2.0.21
|
|
943
|
+
[2.0.21t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.21
|
|
944
|
+
[2.0.20]: https://github.com/ruby-oauth/oauth2/compare/v2.0.19...v2.0.20
|
|
945
|
+
[2.0.20t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.20
|
|
946
|
+
[2.0.19]: https://github.com/ruby-oauth/oauth2/compare/v2.0.18...v2.0.19
|
|
947
|
+
[2.0.19t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.19
|
|
742
948
|
[2.0.18]: https://github.com/ruby-oauth/oauth2/compare/v2.0.17...v2.0.18
|
|
743
949
|
[2.0.18t]: https://github.com/ruby-oauth/oauth2/releases/tag/v2.0.18
|
|
744
950
|
[2.0.17]: https://github.com/ruby-oauth/oauth2/compare/v2.0.16...v2.0.17
|
data/CITATION.cff
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
cff-version: 1.2.0
|
|
2
|
-
title: oauth2
|
|
2
|
+
title: "oauth2"
|
|
3
3
|
message: >-
|
|
4
4
|
If you use this work and you want to cite it,
|
|
5
5
|
then you can use the metadata from this file.
|
|
6
6
|
type: software
|
|
7
7
|
authors:
|
|
8
|
-
- given-names: Peter
|
|
9
|
-
family-names: Boling
|
|
10
|
-
email:
|
|
11
|
-
affiliation:
|
|
8
|
+
- given-names: "Peter H."
|
|
9
|
+
family-names: "Boling"
|
|
10
|
+
email: "floss@galtzo.com"
|
|
11
|
+
affiliation: "galtzo.com"
|
|
12
12
|
orcid: 'https://orcid.org/0009-0008-8519-441X'
|
|
13
13
|
identifiers:
|
|
14
14
|
- type: url
|
|
15
15
|
value: 'https://github.com/ruby-oauth/oauth2'
|
|
16
|
-
description: oauth2
|
|
16
|
+
description: "oauth2"
|
|
17
17
|
repository-code: 'https://github.com/ruby-oauth/oauth2'
|
|
18
18
|
abstract: >-
|
|
19
19
|
oauth2
|
data/CONTRIBUTING.md
CHANGED
|
@@ -8,19 +8,27 @@ To submit a patch, please fork the project, create a patch with tests, and send
|
|
|
8
8
|
|
|
9
9
|
Remember to [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] if you make changes.
|
|
10
10
|
|
|
11
|
+
## Developer Certificate of Origin
|
|
12
|
+
|
|
13
|
+
In order to protect users of this project, we require all contributors to comply with the
|
|
14
|
+
[Developer Certificate of Origin](https://developercertificate.org/).
|
|
15
|
+
This ensures that all contributions are properly licensed and attributed.
|
|
16
|
+
|
|
11
17
|
## Help out!
|
|
12
18
|
|
|
13
|
-
Take a look at the
|
|
19
|
+
Take a look at the open issues and pull requests, or use the gem and find something to improve.
|
|
14
20
|
|
|
15
21
|
Follow these instructions:
|
|
16
22
|
|
|
17
|
-
1.
|
|
18
|
-
2.
|
|
19
|
-
3.
|
|
20
|
-
4.
|
|
21
|
-
5.
|
|
22
|
-
6.
|
|
23
|
-
7.
|
|
23
|
+
1. Join the Discord: [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
|
|
24
|
+
2. Fork the repository
|
|
25
|
+
3. Create your feature branch (`git checkout -b my-new-feature`)
|
|
26
|
+
4. Make some fixes.
|
|
27
|
+
5. Commit your changes (`git commit -am 'Added some feature'`)
|
|
28
|
+
6. Push to the branch (`git push origin my-new-feature`)
|
|
29
|
+
7. Make sure to add tests for it. This is important, so it doesn't break in a future release.
|
|
30
|
+
8. Create new Pull Request.
|
|
31
|
+
9. Announce it in the channel for this org in the [Discord][✉️discord-invite]!
|
|
24
32
|
|
|
25
33
|
## Executables vs Rake tasks
|
|
26
34
|
|
|
@@ -42,6 +50,22 @@ There are many Rake tasks available as well. You can see them by running:
|
|
|
42
50
|
bin/rake -T
|
|
43
51
|
```
|
|
44
52
|
|
|
53
|
+
## Code quality checks
|
|
54
|
+
|
|
55
|
+
Run the Reek task when you want a smell check that fails on current findings:
|
|
56
|
+
|
|
57
|
+
```shell
|
|
58
|
+
bin/rake reek
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Refresh the checked-in `REEK` backlog through the rake task, not by redirecting
|
|
62
|
+
the raw `reek` executable output. The rake task uses the project bundle and
|
|
63
|
+
avoids stale generated binstubs shadowing the Reek gem executable:
|
|
64
|
+
|
|
65
|
+
```shell
|
|
66
|
+
bin/rake reek:update
|
|
67
|
+
```
|
|
68
|
+
|
|
45
69
|
## Environment Variables for Local Development
|
|
46
70
|
|
|
47
71
|
Below are the primary environment variables recognized by stone_checksums (and its integrated tools). Unless otherwise noted, set boolean values to the string "true" to enable.
|
|
@@ -52,7 +76,7 @@ General/runtime
|
|
|
52
76
|
- CI: When set to true, adjusts default rake tasks toward CI behavior
|
|
53
77
|
|
|
54
78
|
Coverage (kettle-soup-cover / SimpleCov)
|
|
55
|
-
- K_SOUP_COV_DO: Enable coverage collection (default: true in .
|
|
79
|
+
- K_SOUP_COV_DO: Enable coverage collection (default: true in `mise.toml`)
|
|
56
80
|
- K_SOUP_COV_FORMATTERS: Comma-separated list of formatters (html, xml, rcov, lcov, json, tty)
|
|
57
81
|
- K_SOUP_COV_MIN_LINE: Minimum line coverage threshold (integer, e.g., 100)
|
|
58
82
|
- K_SOUP_COV_MIN_BRANCH: Minimum branch coverage threshold (integer, e.g., 100)
|
|
@@ -78,35 +102,63 @@ Git hooks and commit message helpers (exe/kettle-commit-msg)
|
|
|
78
102
|
- GIT_HOOK_FOOTER_SENTINEL: Required when footer append is enabled — a unique first-line sentinel to prevent duplicates
|
|
79
103
|
- GIT_HOOK_FOOTER_APPEND_DEBUG: Extra debug output in the footer template (true/false)
|
|
80
104
|
|
|
81
|
-
|
|
105
|
+
Git diff driver setup
|
|
106
|
+
- Local setup writes repository `.gitattributes` entries and local Git `diff.smorg-*` command config so this checkout uses StructuredMerge semantic diffs.
|
|
107
|
+
- Global setup registers `diff.smorg-*` commands once in the user Git config; use it when you work across several StructuredMerge-enabled repositories.
|
|
108
|
+
- Include-file setup writes `.git/smorg/config` and includes it from local Git config, keeping command registrations out of the repository files.
|
|
109
|
+
- Git hosting forges generally ignore external diff drivers, so pull request views may still show raw textual diffs even when local `git diff` uses semantic drivers.
|
|
110
|
+
|
|
111
|
+
```console
|
|
112
|
+
K_JEM_TEMPLATING=true kettle-jem install
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Troubleshooting Git diffs
|
|
116
|
+
- Use `git diff --no-ext-diff` to compare against Git's built-in diff output.
|
|
117
|
+
- Use `git diff --no-textconv` when a textconv projection obscures the raw file bytes you need to inspect.
|
|
118
|
+
- If Git reports a missing `smorg-*` executable, rerun `bundle install` and the setup command above, then check `git config --local --get-regexp '^diff\.smorg-'`.
|
|
119
|
+
- To remove managed local entries, run `K_JEM_TEMPLATING=true kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-ruby.command`.
|
|
120
|
+
|
|
121
|
+
For a quick starting point, this repository’s `mise.toml` defines the shared defaults, and `.env.local` can override them locally. Copy `.env.local.example` to `.env.local`, use `KEY=value` lines, and either activate `mise` in your shell or run commands through `mise exec -C /path/to/project -- ...`.
|
|
82
122
|
|
|
83
123
|
## Appraisals
|
|
84
124
|
|
|
85
125
|
From time to time the [appraisal2][🚎appraisal2] gemfiles in `gemfiles/` will need to be updated.
|
|
126
|
+
Generated appraisal and CI workflow floors are controlled by `ruby.test_minimum`
|
|
127
|
+
in `.structuredmerge/kettle-jem.yml`; this project was templated with `ruby.test_minimum: 2.4`.
|
|
128
|
+
That value describes the lowest Ruby version expected to run the test/development
|
|
129
|
+
toolchain, and it may be higher than the gemspec runtime floor.
|
|
130
|
+
|
|
86
131
|
They are created and updated with the commands:
|
|
87
132
|
|
|
88
133
|
```console
|
|
89
|
-
bin/rake appraisal:
|
|
134
|
+
bin/rake appraisal:generate
|
|
90
135
|
```
|
|
91
136
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
## The Reek List
|
|
95
|
-
|
|
96
|
-
Take a look at the `reek` list which is the file called `REEK` and find something to improve.
|
|
137
|
+
Use `bin/rake appraisal:update` when you intentionally need to resolve fresh
|
|
138
|
+
appraisal locks.
|
|
97
139
|
|
|
98
|
-
|
|
140
|
+
If you need to reset all gemfiles/*.gemfile.lock files:
|
|
99
141
|
|
|
100
142
|
```console
|
|
101
|
-
|
|
143
|
+
bin/rake appraisal:reset
|
|
102
144
|
```
|
|
103
145
|
|
|
146
|
+
When adding an appraisal to CI, check the [runner tool cache][🏃♂️runner-tool-cache] to see which runner to use.
|
|
147
|
+
|
|
104
148
|
## Run Tests
|
|
105
149
|
|
|
106
|
-
|
|
150
|
+
Run tests via `kettle-test` (provided by `kettle-test`). It runs RSpec, writes the full log to
|
|
151
|
+
`tmp/kettle-test/rspec-TIMESTAMP.log`, and prints a compact highlight block with timing, seed,
|
|
152
|
+
pass/fail count, failing example list, and SimpleCov coverage percentages.
|
|
153
|
+
|
|
154
|
+
```console
|
|
155
|
+
bundle exec kettle-test
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
For targeted runs, disable the hard coverage threshold to avoid false failures:
|
|
107
159
|
|
|
108
160
|
```console
|
|
109
|
-
bundle exec
|
|
161
|
+
K_SOUP_COV_MIN_HARD=false bundle exec kettle-test spec/path/to/spec.rb
|
|
110
162
|
```
|
|
111
163
|
|
|
112
164
|
### Spec organization (required)
|
|
@@ -177,33 +229,34 @@ NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in th
|
|
|
177
229
|
1. Run `bin/setup && bin/rake` as a "test, coverage, & linting" sanity check
|
|
178
230
|
2. Update the version number in `version.rb`, and ensure `CHANGELOG.md` reflects changes
|
|
179
231
|
3. Run `bin/setup && bin/rake` again as a secondary check, and to update `Gemfile.lock`
|
|
180
|
-
4. Run `
|
|
181
|
-
5. Run `git
|
|
232
|
+
4. Run `bin/rake yard` to regenerate the docs site using the canonical docs task
|
|
233
|
+
5. Run `git commit -am "🔖 Prepare release v<VERSION>"` to commit the changes
|
|
234
|
+
6. Run `git push` to trigger the final CI pipeline before release, and merge PRs
|
|
182
235
|
- NOTE: Remember to [check the build][🧪build].
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
236
|
+
7. Run `export GIT_TRUNK_BRANCH_NAME="$(git remote show origin | grep 'HEAD branch' | cut -d ' ' -f5)" && echo $GIT_TRUNK_BRANCH_NAME`
|
|
237
|
+
8. Run `git checkout $GIT_TRUNK_BRANCH_NAME`
|
|
238
|
+
9. Run `git pull origin $GIT_TRUNK_BRANCH_NAME` to ensure latest trunk code
|
|
239
|
+
10. Optional for older Bundler (< 2.7.0): Set `SOURCE_DATE_EPOCH` so `rake build` and `rake release` use the same timestamp and generate the same checksums
|
|
187
240
|
- If your Bundler is >= 2.7.0, you can skip this; builds are reproducible by default.
|
|
188
241
|
- Run `export SOURCE_DATE_EPOCH=$EPOCHSECONDS && echo $SOURCE_DATE_EPOCH`
|
|
189
242
|
- If the echo above has no output, then it didn't work.
|
|
190
243
|
- Note: `zsh/datetime` module is needed, if running `zsh`.
|
|
191
244
|
- In older versions of `bash` you can use `date +%s` instead, i.e. `export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH`
|
|
192
|
-
|
|
193
|
-
|
|
245
|
+
11. Run `bundle exec rake build`
|
|
246
|
+
12. Run `bin/gem_checksums` (more context [1][🔒️rubygems-checksums-pr], [2][🔒️rubygems-guides-pr])
|
|
194
247
|
to create SHA-256 and SHA-512 checksums. This functionality is provided by the `stone_checksums`
|
|
195
248
|
[gem][💎stone_checksums].
|
|
196
249
|
- The script automatically commits but does not push the checksums
|
|
197
|
-
|
|
250
|
+
13. Sanity check the SHA256, comparing with the output from the `bin/gem_checksums` command:
|
|
198
251
|
- `sha256sum pkg/<gem name>-<version>.gem`
|
|
199
|
-
|
|
252
|
+
14. Run `bundle exec rake release` which will create a git tag for the version,
|
|
200
253
|
push git commits and tags, and push the `.gem` file to the gem host configured in the gemspec.
|
|
201
254
|
|
|
202
|
-
[📜src-gl]: https://gitlab.com/ruby-oauth/oauth2
|
|
255
|
+
[📜src-gl]: https://gitlab.com/ruby-oauth/oauth2
|
|
203
256
|
[📜src-cb]: https://codeberg.org/ruby-oauth/oauth2
|
|
204
257
|
[📜src-gh]: https://github.com/ruby-oauth/oauth2
|
|
205
258
|
[🧪build]: https://github.com/ruby-oauth/oauth2/actions
|
|
206
|
-
[🤝conduct]: https://
|
|
259
|
+
[🤝conduct]: https://github.com/ruby-oauth/oauth2/blob/main/CODE_OF_CONDUCT.md
|
|
207
260
|
[🖐contrib-rocks]: https://contrib.rocks
|
|
208
261
|
[🖐contributors]: https://github.com/ruby-oauth/oauth2/graphs/contributors
|
|
209
262
|
[🚎contributors-gl]: https://gitlab.com/ruby-oauth/oauth2/-/graphs/main
|
|
@@ -219,3 +272,4 @@ NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in th
|
|
|
219
272
|
[📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
|
|
220
273
|
[🚎appraisal2]: https://github.com/appraisal-rb/appraisal2
|
|
221
274
|
[🏃♂️runner-tool-cache]: https://github.com/ruby/ruby-builder/releases/tag/toolcache
|
|
275
|
+
[✉️discord-invite]: https://discord.gg/3qme4XHNKN
|
data/FUNDING.md
CHANGED
|
@@ -6,7 +6,7 @@ Many paths lead to being a sponsor or a backer of this project. Are you on such
|
|
|
6
6
|
|
|
7
7
|
[![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]
|
|
8
8
|
|
|
9
|
-
[![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate
|
|
9
|
+
[![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
|
|
10
10
|
|
|
11
11
|
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
|
|
12
12
|
[⛳liberapay]: https://liberapay.com/pboling/donate
|
|
@@ -16,12 +16,8 @@ Many paths lead to being a sponsor or a backer of this project. Are you on such
|
|
|
16
16
|
[🖇osc-sponsors-i]: https://opencollective.com/ruby-oauth/sponsors/badge.svg?style=flat
|
|
17
17
|
[🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
|
|
18
18
|
[🖇sponsor]: https://github.com/sponsors/pboling
|
|
19
|
-
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
|
|
20
|
-
[🖇polar]: https://polar.sh/pboling
|
|
21
19
|
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
|
|
22
|
-
[🖇kofi]: https://ko-fi.com/
|
|
23
|
-
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
|
|
24
|
-
[🖇patreon]: https://patreon.com/galtzo
|
|
20
|
+
[🖇kofi]: https://ko-fi.com/pboling
|
|
25
21
|
[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
|
|
26
22
|
[🖇buyme]: https://www.buymeacoffee.com/pboling
|
|
27
23
|
[🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
|
data/LICENSE.md
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# License
|
|
2
|
+
|
|
3
|
+
This project is made available under the following license.
|
|
4
|
+
Choose the option that best fits your use case:
|
|
5
|
+
|
|
6
|
+
- [MIT](MIT.md)
|
|
7
|
+
|
|
8
|
+
## Copyright Notice
|
|
9
|
+
|
|
10
|
+
- Copyright (c) 2010-2014, 2016-2017 Erik Michaels-Ober
|
|
11
|
+
- Copyright (c) 2010 Jeremy Kemper
|
|
12
|
+
- Copyright (c) 2010-2011 Michael Bleigh
|
|
13
|
+
- Copyright (c) 2010-2011 Paul Walker
|
|
14
|
+
- Copyright (c) 2010 rick
|
|
15
|
+
- Copyright (c) 2010 Tim Habermaas
|
|
16
|
+
- Copyright (c) 2010 Wynn Netherland
|
|
17
|
+
- Copyright (c) 2011 Alexander Lang
|
|
18
|
+
- Copyright (c) 2011 Alexander Lang
|
|
19
|
+
- Copyright (c) 2011 Greg Spurrier
|
|
20
|
+
- Copyright (c) 2011 Jay Adkisson
|
|
21
|
+
- Copyright (c) 2011 Luke Saunders
|
|
22
|
+
- Copyright (c) 2011 Paul Walker
|
|
23
|
+
- Copyright (c) 2011 Simon Gate
|
|
24
|
+
- Copyright (c) 2012 Bas Vodde
|
|
25
|
+
- Copyright (c) 2012 Damian Janowski
|
|
26
|
+
- Copyright (c) 2012 Daniël van de Burgt
|
|
27
|
+
- Copyright (c) 2012 Dorren Chen
|
|
28
|
+
- Copyright (c) 2012 Igor Sales
|
|
29
|
+
- Copyright (c) 2012 Leigh Caplan
|
|
30
|
+
- Copyright (c) 2012 Michael Andrews
|
|
31
|
+
- Copyright (c) 2012 Omer Rauchwerger
|
|
32
|
+
- Copyright (c) 2012 Saverio Trioni
|
|
33
|
+
- Copyright (c) 2012 Trent Ogren
|
|
34
|
+
- Copyright (c) 2012 Vsevolod Romashov
|
|
35
|
+
- Copyright (c) 2013 Antonio Tapiador del Dujo
|
|
36
|
+
- Copyright (c) 2013 Eduardo Gurgel
|
|
37
|
+
- Copyright (c) 2013 Geostellar Developer
|
|
38
|
+
- Copyright (c) 2013-2014, 2018 Niels Ganser
|
|
39
|
+
- Copyright (c) 2013 Rainux Luo
|
|
40
|
+
- Copyright (c) 2013 Taylor Hedberg
|
|
41
|
+
- Copyright (c) 2013 Tim Clem
|
|
42
|
+
- Copyright (c) 2014 Dave Stevens
|
|
43
|
+
- Copyright (c) 2014 Ellis Berner
|
|
44
|
+
- Copyright (c) 2014 Frank Macreery
|
|
45
|
+
- Copyright (c) 2014 Michael Bleigh
|
|
46
|
+
- Copyright (c) 2014 Olivier Lacan
|
|
47
|
+
- Copyright (c) 2014 Peter Souter
|
|
48
|
+
- Copyright (c) 2014 Ryan Williams
|
|
49
|
+
- Copyright (c) 2015 Andrew Cantino and Jeff Moore
|
|
50
|
+
- Copyright (c) 2015 Thomas Walpole
|
|
51
|
+
- Copyright (c) 2016 Bo Jeanes
|
|
52
|
+
- Copyright (c) 2016 Cody Cutrer
|
|
53
|
+
- Copyright (c) 2016 Edward Rudd
|
|
54
|
+
- Copyright (c) 2016 Lawrence Oluyede
|
|
55
|
+
- Copyright (c) 2016 Linus Pettersson
|
|
56
|
+
- Copyright (c) 2016 Motoshi Nishihira
|
|
57
|
+
- Copyright (c) 2017 Adrian Setyadi
|
|
58
|
+
- Copyright (c) 2017-2018 Benjamin Quorning
|
|
59
|
+
- Copyright (c) 2017 Christoph Petschnig
|
|
60
|
+
- Copyright (c) 2017, 2022 Nathaniel Bibler
|
|
61
|
+
- Copyright (c) 2017 Oleg
|
|
62
|
+
- Copyright (c) 2017 Samuel Cochran
|
|
63
|
+
- Copyright (c) 2017 tetsuya
|
|
64
|
+
- Copyright (c) 2017 Yury Velikanau
|
|
65
|
+
- Copyright (c) 2018 Alex Kowalczuk
|
|
66
|
+
- Copyright (c) 2018 asm__
|
|
67
|
+
- Copyright (c) 2018 David Christensen
|
|
68
|
+
- Copyright (c) 2018 fossabot
|
|
69
|
+
- Copyright (c) 2018 Jeff Moore
|
|
70
|
+
- Copyright (c) 2018 Jeff Moore
|
|
71
|
+
- Copyright (c) 2018 Jonathan del Strother
|
|
72
|
+
- Copyright (c) 2018 Joseph Page
|
|
73
|
+
- Copyright (c) 2018 Joseph Page
|
|
74
|
+
- Copyright (c) 2018 Lomey
|
|
75
|
+
- Copyright (c) 2018 Markus Bengts
|
|
76
|
+
- Copyright (c) 2018 Mathias Klippinge
|
|
77
|
+
- Copyright (c) 2018 nikz
|
|
78
|
+
- Copyright (c) 2018-2019, 2021-2022, 2024-2026 Peter H. Boling
|
|
79
|
+
- Copyright (c) 2019 Daniel Fockler
|
|
80
|
+
- Copyright (c) 2019 Elliot Crosby-McCullough
|
|
81
|
+
- Copyright (c) 2019 João Paulo
|
|
82
|
+
- Copyright (c) 2019 Orien Madgwick
|
|
83
|
+
- Copyright (c) 2019 Ryan T. Hosford
|
|
84
|
+
- Copyright (c) 2019 Tom Corley
|
|
85
|
+
- Copyright (c) 2020 anvox
|
|
86
|
+
- Copyright (c) 2020 Jesse Cotton
|
|
87
|
+
- Copyright (c) 2020 Olle Jonsson
|
|
88
|
+
- Copyright (c) 2020 Stephen Reid
|
|
89
|
+
- Copyright (c) 2021 Anders Carling
|
|
90
|
+
- Copyright (c) 2021 dobon
|
|
91
|
+
- Copyright (c) 2021 Jan Zaydowicz
|
|
92
|
+
- Copyright (c) 2021 Nicholas Palaniuk
|
|
93
|
+
- Copyright (c) 2021-2022 Stan Hu
|
|
94
|
+
- Copyright (c) 2022 Benjamin Quorning
|
|
95
|
+
- Copyright (c) 2022 Bouke van der Bijl
|
|
96
|
+
- Copyright (c) 2022 nov
|
|
97
|
+
- Copyright (c) 2022 Rick Selby
|
|
98
|
+
- Copyright (c) 2022 Ryo Takahashi
|
|
99
|
+
- Copyright (c) 2023 Jessie Young
|
|
100
|
+
- Copyright (c) 2023 Карим Гимадеев
|
|
101
|
+
- Copyright (c) 2024 Aboling0
|
|
102
|
+
- Copyright (c) 2024 Elise Wood
|
|
103
|
+
- Copyright (c) 2024 Manuel van Rijn
|
|
104
|
+
- Copyright (c) 2025-2026 Annibelle Boling
|
|
105
|
+
- Copyright (c) 2025 Mark James
|
|
106
|
+
- Copyright (c) 2025 Mridang Agarwalla
|
|
107
|
+
- Copyright (c) 2025 Sasa Rosic
|
|
108
|
+
- Copyright (c) 2026 Jonathan Grinstead
|
|
109
|
+
- Copyright (c) 2026 kain
|
|
110
|
+
- Copyright (c) 2026 Rob Zolkos
|
|
111
|
+
- Copyright (c) 2026 StepSecurity Bot
|
data/{LICENSE.txt → MIT.md}
RENAMED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
MIT License
|
|
1
|
+
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Copyright (c) 2011-2013 Michael Bleigh and Intridea, Inc.
|
|
3
|
+
See [LICENSE.md](LICENSE.md) for the copyright notice.
|
|
5
4
|
|
|
6
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -10,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
10
9
|
copies of the Software, and to permit persons to whom the Software is
|
|
11
10
|
furnished to do so, subject to the following conditions:
|
|
12
11
|
|
|
13
|
-
The above copyright notice and this permission notice shall be included in
|
|
14
|
-
copies or substantial portions of the Software.
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
15
14
|
|
|
16
15
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
16
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
17
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
22
|
-
SOFTWARE.
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|