kettle-dev 1.1.59 → 1.1.60

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d9c8cf2d28dc867f2993e6b5833914a56c2ed3b17bd68273d03360a2c31fa706
4
- data.tar.gz: 3a2e6abe6033c6d8faa0b77574ccd0861f43a356c0e24dc8c2536c7200bed7e9
3
+ metadata.gz: a2c485db803ad10d4d7eb1331a8ed30ce0744c0a045ee768697bfa5098f44707
4
+ data.tar.gz: c60544c59a2bd2b0af6d80aaa070055ca74d3a88e8e2b53cd2c94050da03e89e
5
5
  SHA512:
6
- metadata.gz: 164fe7151c25ae3180a7ff0444dea16c35b8121dfe89fafc656d7a8cd1b88cf63e0b91d7870e08ca64f658be12162c8346beff45e5d993907c6f0f8f250d1c1e
7
- data.tar.gz: a674cd8c0fb4349aa41e7315a8919919081c97b6493ccf035fb1a9dee897129ae36027fe74d559b06974534923a65d8260660862acdce935af5f230a150d10a5
6
+ metadata.gz: b7f36fd6f1cd77538e0ebcff3ae9c96136594a242f95d15aaa4690f84dcdd376efa3be923b26bb6bad6176c5addaa88c18fdd1d38329c9065535c9666897048c
7
+ data.tar.gz: d881e65d43eeccd20f540c135821402b046b8601e130d16204e6c7a501d092270af97ebce0a7757345d3c4cf340b22b78e6858b80ff0f6863fe3dcbba93f7e4c
checksums.yaml.gz.sig CHANGED
Binary file
data/.envrc CHANGED
@@ -28,6 +28,7 @@ export K_SOUP_COV_MULTI_FORMATTERS=true
28
28
  export K_SOUP_COV_OPEN_BIN= # Means don't try to open coverage results in browser
29
29
  export MAX_ROWS=1 # Setting for simplecov-console gem for tty output, limits to the worst N rows of bad coverage
30
30
  export KETTLE_TEST_SILENT=true
31
+ export KETTLE_DEV_DEBUG=false
31
32
 
32
33
  # Internal Debugging Controls
33
34
  export DEBUG=false # do not allow byebug statements (override in .env.local)
data/.envrc.example CHANGED
@@ -28,6 +28,7 @@ export K_SOUP_COV_MULTI_FORMATTERS=true
28
28
  export K_SOUP_COV_OPEN_BIN= # Means don't try to open coverage results in browser
29
29
  export MAX_ROWS=1 # Setting for simplecov-console gem for tty output, limits to the worst N rows of bad coverage
30
30
  export KETTLE_TEST_SILENT=true
31
+ export KETTLE_DEV_DEBUG=false
31
32
 
32
33
  # Internal Debugging Controls
33
34
  export DEBUG=false # do not allow byebug statements (override in .env.local)
@@ -28,6 +28,7 @@ export K_SOUP_COV_MULTI_FORMATTERS=true
28
28
  export K_SOUP_COV_OPEN_BIN= # Means don't try to open coverage results in browser
29
29
  export MAX_ROWS=1 # Setting for simplecov-console gem for tty output, limits to the worst N rows of bad coverage
30
30
  export KETTLE_TEST_SILENT=true
31
+ export KETTLE_DEV_DEBUG=false
31
32
 
32
33
  # Internal Debugging Controls
33
34
  export DEBUG=false # do not allow byebug statements (override in .env.local)
@@ -62,7 +62,7 @@ jobs:
62
62
 
63
63
  steps:
64
64
  - name: Checkout
65
- uses: actions/checkout@v5
65
+ uses: actions/checkout@v6
66
66
 
67
67
  - name: Setup Ruby & RubyGems
68
68
  uses: ruby/setup-ruby@v1
@@ -60,7 +60,7 @@ jobs:
60
60
 
61
61
  steps:
62
62
  - name: Checkout
63
- uses: actions/checkout@v5
63
+ uses: actions/checkout@v6
64
64
 
65
65
  - name: Setup Ruby & RubyGems
66
66
  uses: ruby/setup-ruby@v1
@@ -38,7 +38,7 @@ jobs:
38
38
 
39
39
  steps:
40
40
  - name: Checkout repository
41
- uses: actions/checkout@v5
41
+ uses: actions/checkout@v6
42
42
 
43
43
  # Initializes the CodeQL tools for scanning.
44
44
  - name: Initialize CodeQL
@@ -55,7 +55,7 @@ jobs:
55
55
 
56
56
  steps:
57
57
  - name: Checkout
58
- uses: actions/checkout@v5
58
+ uses: actions/checkout@v6
59
59
 
60
60
  - name: Setup Ruby & RubyGems
61
61
  uses: ruby/setup-ruby@v1
@@ -55,7 +55,7 @@ jobs:
55
55
 
56
56
  steps:
57
57
  - name: Checkout
58
- uses: actions/checkout@v5
58
+ uses: actions/checkout@v6
59
59
 
60
60
  - name: Setup Ruby & RubyGems
61
61
  uses: ruby/setup-ruby@v1
@@ -65,7 +65,7 @@ jobs:
65
65
  steps:
66
66
  - name: Checkout
67
67
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
68
- uses: actions/checkout@v5
68
+ uses: actions/checkout@v6
69
69
 
70
70
  - name: Setup Ruby & RubyGems
71
71
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
@@ -64,7 +64,7 @@ jobs:
64
64
  steps:
65
65
  - name: Checkout
66
66
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
67
- uses: actions/checkout@v5
67
+ uses: actions/checkout@v6
68
68
 
69
69
  - name: Setup Ruby & RubyGems
70
70
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
@@ -66,7 +66,7 @@ jobs:
66
66
  steps:
67
67
  - name: Checkout
68
68
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
69
- uses: actions/checkout@v5
69
+ uses: actions/checkout@v6
70
70
 
71
71
  - name: Setup Ruby & RubyGems
72
72
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
@@ -15,6 +15,6 @@ jobs:
15
15
  runs-on: ubuntu-latest
16
16
  steps:
17
17
  - name: 'Checkout Repository'
18
- uses: actions/checkout@v5
18
+ uses: actions/checkout@v6
19
19
  - name: 'Dependency Review'
20
20
  uses: actions/dependency-review-action@v4
@@ -66,7 +66,7 @@ jobs:
66
66
  steps:
67
67
  - name: Checkout
68
68
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
69
- uses: actions/checkout@v5
69
+ uses: actions/checkout@v6
70
70
 
71
71
  - name: Setup Ruby & RubyGems
72
72
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
@@ -65,7 +65,7 @@ jobs:
65
65
  steps:
66
66
  - name: Checkout
67
67
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
68
- uses: actions/checkout@v5
68
+ uses: actions/checkout@v6
69
69
 
70
70
  - name: Setup Ruby & RubyGems
71
71
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
@@ -57,7 +57,7 @@ jobs:
57
57
  steps:
58
58
  - name: Checkout
59
59
  if: ${{ !env.ACT }}
60
- uses: actions/checkout@v5
60
+ uses: actions/checkout@v6
61
61
 
62
62
  - name: Setup Ruby & RubyGems
63
63
  if: ${{ !env.ACT }}
@@ -47,7 +47,7 @@ jobs:
47
47
  steps:
48
48
  - name: Checkout
49
49
  if: ${{ !env.ACT }}
50
- uses: actions/checkout@v5
50
+ uses: actions/checkout@v6
51
51
 
52
52
  - name: Setup Ruby & RubyGems
53
53
  if: ${{ !env.ACT }}
@@ -55,7 +55,7 @@ jobs:
55
55
 
56
56
  steps:
57
57
  - name: Checkout
58
- uses: actions/checkout@v5
58
+ uses: actions/checkout@v6
59
59
 
60
60
  - name: Setup Ruby & RubyGems
61
61
  uses: ruby/setup-ruby@v1
@@ -28,7 +28,7 @@ jobs:
28
28
  runs-on: ubuntu-latest
29
29
  steps:
30
30
  - name: Checkout
31
- uses: actions/checkout@v5
31
+ uses: actions/checkout@v6
32
32
 
33
33
  - name: Check Dependencies' License
34
34
  uses: apache/skywalking-eyes/dependency@main
@@ -71,7 +71,7 @@ jobs:
71
71
 
72
72
  steps:
73
73
  - name: Checkout
74
- uses: actions/checkout@v5
74
+ uses: actions/checkout@v6
75
75
 
76
76
  - name: Setup Ruby & RubyGems
77
77
  uses: ruby/setup-ruby@v1
@@ -13,7 +13,7 @@ jobs:
13
13
  update-backers:
14
14
  runs-on: ubuntu-latest
15
15
  steps:
16
- - uses: actions/checkout@v5
16
+ - uses: actions/checkout@v6
17
17
  with:
18
18
  persist-credentials: false
19
19
  - name: Setup Ruby & RubyGems
@@ -44,7 +44,7 @@ jobs:
44
44
 
45
45
  steps:
46
46
  - name: Checkout
47
- uses: actions/checkout@v5
47
+ uses: actions/checkout@v6
48
48
 
49
49
  - name: Setup Ruby & RubyGems
50
50
  uses: ruby/setup-ruby@v1
@@ -54,7 +54,7 @@ jobs:
54
54
 
55
55
  steps:
56
56
  - name: Checkout
57
- uses: actions/checkout@v5
57
+ uses: actions/checkout@v6
58
58
 
59
59
  - name: Setup Ruby & RubyGems
60
60
  uses: ruby/setup-ruby@v1
@@ -48,7 +48,7 @@ jobs:
48
48
  steps:
49
49
  - name: Checkout
50
50
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
51
- uses: actions/checkout@v5
51
+ uses: actions/checkout@v6
52
52
 
53
53
  - name: Setup Ruby & RubyGems
54
54
  if: ${{ (env.ACT && !(startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) || (!env.ACT && (startsWith(matrix.ruby, 'jruby')) || startsWith(matrix.ruby, 'truffleruby')) }}
@@ -63,7 +63,7 @@ jobs:
63
63
 
64
64
  steps:
65
65
  - name: Checkout
66
- uses: actions/checkout@v5
66
+ uses: actions/checkout@v6
67
67
 
68
68
  - name: Setup Ruby & RubyGems
69
69
  uses: ruby/setup-ruby@v1
@@ -55,7 +55,7 @@ jobs:
55
55
 
56
56
  steps:
57
57
  - name: Checkout
58
- uses: actions/checkout@v5
58
+ uses: actions/checkout@v6
59
59
 
60
60
  - name: Setup Ruby & RubyGems
61
61
  uses: ruby/setup-ruby@v1
data/CHANGELOG.md CHANGED
@@ -30,6 +30,24 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.1.60] - 2025-11-23
34
+
35
+ - TAG: [v1.1.60][1.1.60t]
36
+ - COVERAGE: 94.38% -- 4066/4308 lines in 26 files
37
+ - BRANCH COVERAGE: 78.86% -- 1675/2124 branches in 26 files
38
+ - 79.89% documented
39
+
40
+ ### Added
41
+
42
+ - Add KETTLE_DEV_DEBUG to direnv defaults
43
+ - Documentation of the explicit policy violations of RubyGems.org leadership toward open source projects they funded
44
+ - https://www.reddit.com/r/ruby/comments/1ove9vp/rubycentral_hates_this_one_fact/
45
+
46
+ ### Fixed
47
+
48
+ - Prevent double test runs by ensuring only one of test/coverage/spec are in default task
49
+ - Add debugging when more than one registered
50
+
33
51
  ## [1.1.59] - 2025-11-13
34
52
 
35
53
  - TAG: [v1.1.59][1.1.59t]
@@ -1440,7 +1458,9 @@ Please file a bug if you notice a violation of semantic versioning.
1440
1458
  - Selecting will run the selected workflow via `act`
1441
1459
  - This may move to its own gem in the future.
1442
1460
 
1443
- [Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.59...HEAD
1461
+ [Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.60...HEAD
1462
+ [1.1.60]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.59...v1.1.60
1463
+ [1.1.60t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.60
1444
1464
  [1.1.59]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.58...v1.1.59
1445
1465
  [1.1.59t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.59
1446
1466
  [1.1.58]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.57...v1.1.58
data/README.md CHANGED
@@ -1,15 +1,16 @@
1
- | 📍 NOTE |
2
- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
- | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
- | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
- | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
- | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
7
- | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
8
- | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
9
- | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
10
- | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
11
- | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
12
- | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
1
+ | 📍 NOTE |
2
+ |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
+ | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
+ | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
+ | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
+ | Simply put - there was active policy for adding or removing maintainers/owners of [rubygems][rubygems-maint-policy] and [bundler][bundler-maint-policy], and those [policies were not followed][policy-fail]. |
7
+ | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
8
+ | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
9
+ | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
10
+ | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
11
+ | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
12
+ | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
13
+ | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
13
14
 
14
15
  [rubygems-org]: https://github.com/rubygems/
15
16
  [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
@@ -26,6 +27,9 @@
26
27
  [gem-scopes]: https://github.com/galtzo-floss/bundle-namespace
27
28
  [gem-server]: https://github.com/galtzo-floss/gem-server
28
29
  [reinteractive-podcast]: https://youtu.be/_H4qbtC5qzU?si=BvuBU90R2wAqD2E6
30
+ [bundler-maint-policy]: https://github.com/ruby/rubygems/blob/b1ab33a3d52310a84d16b193991af07f5a6a07c0/doc/bundler/playbooks/TEAM_CHANGES.md
31
+ [rubygems-maint-policy]: https://github.com/ruby/rubygems/blob/b1ab33a3d52310a84d16b193991af07f5a6a07c0/doc/rubygems/POLICIES.md?plain=1#L187-L196
32
+ [policy-fail]: https://www.reddit.com/r/ruby/comments/1ove9vp/rubycentral_hates_this_one_fact/
29
33
 
30
34
  [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![kettle-dev Logo by Aboling0, CC BY-SA 4.0][🖼️kettle-dev-i]][🖼️kettle-dev]
31
35
 
data/README.md.example CHANGED
@@ -1,15 +1,16 @@
1
- | 📍 NOTE |
2
- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
- | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
- | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
- | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
- | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
7
- | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
8
- | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
9
- | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
10
- | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
11
- | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
12
- | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
1
+ | 📍 NOTE |
2
+ |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
+ | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
+ | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
+ | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
+ | Simply put - there was active policy for adding or removing maintainers/owners of [rubygems][rubygems-maint-policy] and [bundler][bundler-maint-policy], and those [policies were not followed][policy-fail]. |
7
+ | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
8
+ | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
9
+ | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
10
+ | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
11
+ | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
12
+ | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
13
+ | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
13
14
 
14
15
  [rubygems-org]: https://github.com/rubygems/
15
16
  [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
@@ -26,6 +27,9 @@
26
27
  [gem-scopes]: https://github.com/galtzo-floss/bundle-namespace
27
28
  [gem-server]: https://github.com/galtzo-floss/gem-server
28
29
  [reinteractive-podcast]: https://youtu.be/_H4qbtC5qzU?si=BvuBU90R2wAqD2E6
30
+ [bundler-maint-policy]: https://github.com/ruby/rubygems/blob/b1ab33a3d52310a84d16b193991af07f5a6a07c0/doc/bundler/playbooks/TEAM_CHANGES.md
31
+ [rubygems-maint-policy]: https://github.com/ruby/rubygems/blob/b1ab33a3d52310a84d16b193991af07f5a6a07c0/doc/rubygems/POLICIES.md?plain=1#L187-L196
32
+ [policy-fail]: https://www.reddit.com/r/ruby/comments/1ove9vp/rubycentral_hates_this_one_fact/
29
33
 
30
34
  [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![kettle-dev Logo by Aboling0, CC BY-SA 4.0][🖼️kettle-dev-i]][🖼️kettle-dev]
31
35
 
@@ -1,15 +1,16 @@
1
- | 📍 NOTE |
2
- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
- | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
- | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
- | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
- | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
7
- | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
8
- | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
9
- | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
10
- | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
11
- | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
12
- | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
1
+ | 📍 NOTE |
2
+ |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
3
+ | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025. |
4
+ | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
5
+ | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies]. |
6
+ | Simply put - there was active policy for adding or removing maintainers/owners of [rubygems][rubygems-maint-policy] and [bundler][bundler-maint-policy], and those [policies were not followed][policy-fail]. |
7
+ | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners. |
8
+ | If a similar theft happened with my repos/gems, I'd hope some would stand up for me. |
9
+ | Disenfranchised former-maintainers have started [gem.coop][gem-coop]. |
10
+ | Once available I will publish there exclusively; unless RubyCentral makes amends with the community. |
11
+ | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of. |
12
+ | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next. |
13
+ | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server]. |
13
14
 
14
15
  [rubygems-org]: https://github.com/rubygems/
15
16
  [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
@@ -26,6 +27,9 @@
26
27
  [gem-scopes]: https://github.com/galtzo-floss/bundle-namespace
27
28
  [gem-server]: https://github.com/galtzo-floss/gem-server
28
29
  [reinteractive-podcast]: https://youtu.be/_H4qbtC5qzU?si=BvuBU90R2wAqD2E6
30
+ [bundler-maint-policy]: https://github.com/ruby/rubygems/blob/b1ab33a3d52310a84d16b193991af07f5a6a07c0/doc/bundler/playbooks/TEAM_CHANGES.md
31
+ [rubygems-maint-policy]: https://github.com/ruby/rubygems/blob/b1ab33a3d52310a84d16b193991af07f5a6a07c0/doc/rubygems/POLICIES.md?plain=1#L187-L196
32
+ [policy-fail]: https://www.reddit.com/r/ruby/comments/1ove9vp/rubycentral_hates_this_one_fact/
29
33
 
30
34
  [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![kettle-dev Logo by Aboling0, CC BY-SA 4.0][🖼️kettle-dev-i]][🖼️kettle-dev]
31
35
 
data/Rakefile.example CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # kettle-dev Rakefile v1.1.59 - 2025-11-13
3
+ # kettle-dev Rakefile v1.1.60 - 2025-11-23
4
4
  # Ruby 2.3 (Safe Navigation) or higher required
5
5
  #
6
6
  # MIT License (see License.txt)
@@ -12,7 +12,9 @@ begin
12
12
  t.test_files = FileList["test/**/*test*.rb"]
13
13
  t.verbose = true
14
14
  end
15
- Kettle::Dev.register_default("test")
15
+ # The test task is invoked by the coverage task, so of the two, (i.e., when outside CI),
16
+ # only coverage should be registered as default.
17
+ Kettle::Dev.register_default("test") unless Kettle::Dev.default_registered?("coverage")
16
18
  rescue LoadError
17
19
  warn("[kettle-dev][spec_test.rake] failed to load rake/testtask") if Kettle::Dev::DEBUGGING
18
20
  desc("test task stub")
@@ -21,34 +23,82 @@ rescue LoadError
21
23
  end
22
24
  end
23
25
 
24
- # Setup RSpec
25
- begin
26
- require "rspec/core/rake_task"
26
+ setup_spec_task = ->(default:) {
27
+ begin
28
+ require "rspec/core/rake_task"
27
29
 
28
- RSpec::Core::RakeTask.new(:spec)
29
- # This takes the place of `coverage` task it hasn't been registered yet.
30
- Kettle::Dev.register_default("spec") unless Kettle::Dev.default_registered?("coverage")
31
- rescue LoadError
32
- warn("[kettle-dev][spec_test.rake] failed to load rspec/core/rake_task") if Kettle::Dev::DEBUGGING
33
- desc("spec task stub")
34
- task(:spec) do
35
- warn("NOTE: rspec isn't installed, or is disabled for #{RUBY_VERSION} in the current environment")
30
+ RSpec::Core::RakeTask.new(:spec)
31
+ if default
32
+ # This takes the place of the `coverage` task if/when it isn't already registered.
33
+ # This is because spec and coverage run the same tests
34
+ # (via the coverage task invoking the test task which invokes the spec task),
35
+ # so we can't have both in the default task.
36
+ Kettle::Dev.register_default("spec") unless Kettle::Dev.default_registered?("coverage")
37
+ end
38
+ rescue LoadError
39
+ warn("[kettle-dev][spec_test.rake] failed to load rspec/core/rake_task") if Kettle::Dev::DEBUGGING
40
+ desc("spec task stub")
41
+ task(:spec) do
42
+ warn("NOTE: rspec isn't installed, or is disabled for #{RUBY_VERSION} in the current environment")
43
+ end
44
+ end
45
+ }
46
+
47
+ # Setup RSpec
48
+ if defined?(Kettle::Dev::IS_CI)
49
+ if Kettle::Dev::IS_CI
50
+ # then we should not have a coverage task, but do want a spec test.
51
+ setup_spec_task.call(default: true)
52
+ else
53
+ # then we should have a coverage task.
54
+ # The coverage task will invoke the "test" task, which will invoke the spec task.
55
+ setup_spec_task.call(default: false)
36
56
  end
57
+ else
58
+ # then we do not have a coverage task setup by this gem, and are not in a coverage context.
59
+ # So setup a spec test.
60
+ setup_spec_task.call(default: true)
37
61
  end
38
62
 
39
63
  spec_registered = Kettle::Dev.default_registered?("spec")
40
64
  coverage_registered = Kettle::Dev.default_registered?("coverage")
41
65
  test_registered = Kettle::Dev.default_registered?("test")
66
+ spec_and_coverage = spec_registered && coverage_registered
42
67
  spec_or_coverage = spec_registered || coverage_registered
43
68
 
44
- if spec_or_coverage && !test_registered
45
- task test: :spec
46
- elsif test_registered && !spec_or_coverage
69
+ if test_registered && !spec_or_coverage
47
70
  task spec: :test
48
- elsif test_registered && spec_or_coverage
49
- # When we have both tasks registered, make spec run as part of the test task
50
- task test: :spec
51
- else
52
- puts "No test task is registered."
71
+ # elsif test_registered && spec_registered
72
+ # # When we have both tasks registered as default, making spec run as part of test would be redundant.
73
+ # # task test: :spec
74
+ # elsif test_registered && coverage_registered
75
+ # # When we have both tasks registered as default, making coverage run as part of test would be circular.
76
+ # # task test: :coverage
77
+ elsif !test_registered
78
+ if spec_registered && !coverage_registered
79
+ puts "Spec task is registered as default task. Creating test task with spec as pre-requisite" if Kettle::Dev::DEBUGGING
80
+ # If spec is registered as default, it should be invoked by the test task when test is not default,
81
+ # because some CI workflows will be configured to run bin/rake test.
82
+ desc "A test task with spec as prerequisite"
83
+ task test: :spec
84
+ elsif coverage_registered && !spec_registered
85
+ puts "Coverage task is registered as default task, and will call test task, with spec as pre-requisite." if Kettle::Dev::DEBUGGING
86
+ # If coverage is registered as default, it will invoke test.
87
+ # We need to make spec a prerequisite of test so that it runs as part of the test task,
88
+ # which will be invoked by the coverage task.
89
+ desc "A test task with spec as prerequisite"
90
+ task test: :spec
91
+ end
53
92
  end
54
93
  # rubocop:enable Rake/DuplicateTask
94
+
95
+ if spec_and_coverage
96
+ # They should not both be registered as default tasks, as they run the same tests.
97
+ warn("[kettle-dev][spec_test.rake] both spec and coverage are registered as default tasks!") if Kettle::Dev::DEBUGGING
98
+ elsif test_registered && spec_registered
99
+ # They should not both be registered as default tasks, as they will be setup to run the same tests.
100
+ warn("[kettle-dev][spec_test.rake] both test and spec are registered as default tasks!") if Kettle::Dev::DEBUGGING
101
+ elsif test_registered && coverage_registered
102
+ # They should not both be registered as default tasks, coverage invokes the test task.
103
+ warn("[kettle-dev][spec_test.rake] both test and coverage are registered as default tasks!") if Kettle::Dev::DEBUGGING
104
+ end
@@ -6,7 +6,7 @@ module Kettle
6
6
  module Version
7
7
  # The gem version.
8
8
  # @return [String]
9
- VERSION = "1.1.59"
9
+ VERSION = "1.1.60"
10
10
 
11
11
  module_function
12
12
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kettle-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.59
4
+ version: 1.1.60
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -403,10 +403,10 @@ licenses:
403
403
  - MIT
404
404
  metadata:
405
405
  homepage_uri: https://kettle-dev.galtzo.com/
406
- source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.1.59
407
- changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.1.59/CHANGELOG.md
406
+ source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.1.60
407
+ changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.1.60/CHANGELOG.md
408
408
  bug_tracker_uri: https://github.com/kettle-rb/kettle-dev/issues
409
- documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.1.59
409
+ documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.1.60
410
410
  funding_uri: https://github.com/sponsors/pboling
411
411
  wiki_uri: https://github.com/kettle-rb/kettle-dev/wiki
412
412
  news_uri: https://www.railsbling.com/tags/kettle-dev
metadata.gz.sig CHANGED
Binary file