<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/spec, branch master</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>[ruby/rubygems] Gracefully handle missing checksums in Compact Index</title>
<updated>2026-05-14T05:59:58+00:00</updated>
<author>
<name>jneen</name>
<email>jneen@jneen.net</email>
</author>
<published>2026-04-18T16:18:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2ad78864079c981545efc2fd73c737efaf0c4de0'/>
<id>2ad78864079c981545efc2fd73c737efaf0c4de0</id>
<content type='text'>
https://github.com/ruby/rubygems/commit/234e2b7d5f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/rubygems/commit/234e2b7d5f
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/rubygems] Skip git source exclusion when lockfile cannot backfill</title>
<updated>2026-05-14T05:34:22+00:00</updated>
<author>
<name>Yasuo Honda</name>
<email>yasuo.honda@gmail.com</email>
</author>
<published>2026-05-13T23:23:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9f170caf60c83a2fa49fba54c83c88cc3bfff241'/>
<id>9f170caf60c83a2fa49fba54c83c88cc3bfff241</id>
<content type='text'>
The git source exclusion in `find_source_requirements` introduced by
ruby/rubygems#9234 relies on `locked_requirements` to backfill the gap
for sources used only by --without groups. Without a Gemfile.lock —
e.g. an initial `BUNDLE_ONLY=ci bundle install` where a default-group
gem from a git source is shifted into the "excluded" set — that
fallback is absent, and the source's indirect dependencies fall
through to the default rubygems source, causing resolution to fail.

Gate the exclusion on `nothing_changed?` so it only applies when the
lockfile is guaranteed to cover the excluded sources.

Fix ruby/rubygems#9536

https://github.com/ruby/rubygems/commit/89ed2bc9ef

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The git source exclusion in `find_source_requirements` introduced by
ruby/rubygems#9234 relies on `locked_requirements` to backfill the gap
for sources used only by --without groups. Without a Gemfile.lock —
e.g. an initial `BUNDLE_ONLY=ci bundle install` where a default-group
gem from a git source is shifted into the "excluded" set — that
fallback is absent, and the source's indirect dependencies fall
through to the default rubygems source, causing resolution to fail.

Gate the exclusion on `nothing_changed?` so it only applies when the
lockfile is guaranteed to cover the excluded sources.

Fix ruby/rubygems#9536

https://github.com/ruby/rubygems/commit/89ed2bc9ef

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/rubygems] Allow File.writable?/File.readable? fallbacks in doctor specs</title>
<updated>2026-05-14T01:37:59+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2026-04-16T07:49:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4839d41050e2850047050473333fe1291b67ee32'/>
<id>4839d41050e2850047050473333fe1291b67ee32</id>
<content type='text'>
doctor_spec.rb strict-stubs File.writable? and File.readable? with
specific paths, which was safe as long as the doctor command did
not trigger Plugin.hook. The new before-eval/after-eval hooks
fire during Bundler.definition, which the doctor command calls,
and Plugin.hook initializes Plugin::Index, which touches
Bundler.user_home and calls File.writable? on the test home path.
Those calls do not match the stubs and RSpec raises.

Match the existing File.exist? pattern and add and_call_original
fallbacks so unrelated paths fall through to the real methods,
while the specific stubs continue to control the paths under test.

https://github.com/ruby/rubygems/commit/a8c04c4536

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
doctor_spec.rb strict-stubs File.writable? and File.readable? with
specific paths, which was safe as long as the doctor command did
not trigger Plugin.hook. The new before-eval/after-eval hooks
fire during Bundler.definition, which the doctor command calls,
and Plugin.hook initializes Plugin::Index, which touches
Bundler.user_home and calls File.writable? on the test home path.
Those calls do not match the stubs and RSpec raises.

Match the existing File.exist? pattern and add and_call_original
fallbacks so unrelated paths fall through to the real methods,
while the specific stubs continue to control the paths under test.

https://github.com/ruby/rubygems/commit/a8c04c4536

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/rubygems] Add specs for fetch and git fetch plugin hooks</title>
<updated>2026-05-14T01:37:57+00:00</updated>
<author>
<name>Marvin Frick</name>
<email>marv@marvinfrick.com</email>
</author>
<published>2026-04-16T04:28:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=52a1ee509496284f6d19790bb2001a92df9a7321'/>
<id>52a1ee509496284f6d19790bb2001a92df9a7321</id>
<content type='text'>
Covers the four new hook events added in the previous commit:
before-fetch, after-fetch, before-git-fetch, after-git-fetch.

https://github.com/ruby/rubygems/commit/a08ea29297

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Covers the four new hook events added in the previous commit:
before-fetch, after-fetch, before-git-fetch, after-git-fetch.

https://github.com/ruby/rubygems/commit/a08ea29297

Co-Authored-By: Claude Opus 4.6 (1M context) &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/rubygems] Add bundler before/after eval hooks for plugins</title>
<updated>2026-05-14T01:37:56+00:00</updated>
<author>
<name>Cody Cutrer</name>
<email>cody@instructure.com</email>
</author>
<published>2023-09-14T18:21:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=72348467ff95ea2974f8b57409cd266dc6b7627c'/>
<id>72348467ff95ea2974f8b57409cd266dc6b7627c</id>
<content type='text'>
https://github.com/ruby/rubygems/commit/fefe97c0bd
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/rubygems/commit/fefe97c0bd
</pre>
</div>
</content>
</entry>
<entry>
<title>[Feature #21979] Allow negative offset in unpack</title>
<updated>2026-05-11T04:54:09+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2026-04-02T06:37:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=eb053e7446607f5e70215bf508499ef6bab3aa4a'/>
<id>eb053e7446607f5e70215bf508499ef6bab3aa4a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/rubygems] Use optimistic version constraints in bundle gem output</title>
<updated>2026-05-11T02:49:07+00:00</updated>
<author>
<name>Jeremy Evans</name>
<email>code@jeremyevans.net</email>
</author>
<published>2026-05-08T23:53:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7dc93cb1679c9834a8da1caf5dfff3234b6abdc4'/>
<id>7dc93cb1679c9834a8da1caf5dfff3234b6abdc4</id>
<content type='text'>
This changes the gemspec and Gemfile to use optimistic versions for
dependencies.

https://github.com/ruby/rubygems/commit/92b0305c8b
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This changes the gemspec and Gemfile to use optimistic versions for
dependencies.

https://github.com/ruby/rubygems/commit/92b0305c8b
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/rubygems] Allow non-zero exit status in bundle config gemfile unset spec</title>
<updated>2026-05-08T09:31:54+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2026-05-08T09:09:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=0f618b87d55808b507d9a623116f62a4df655384'/>
<id>0f618b87d55808b507d9a623116f62a4df655384</id>
<content type='text'>
After 607648d5fc9 (`bundle config get` exits 1 when the value is unset),
the spec added in 4658d6bd78b raises in the bundle helper because the
new test invokes `config get gemfile` after unsetting it.

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After 607648d5fc9 (`bundle config get` exits 1 when the value is unset),
the spec added in 4658d6bd78b raises in the bundle helper because the
new test invokes `config get gemfile` after unsetting it.

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/rubygems] Make `bundle config get` return status 1 when the value is not set</title>
<updated>2026-05-08T08:08:04+00:00</updated>
<author>
<name>Shinichi Maeshima</name>
<email>netwillnet@gmail.com</email>
</author>
<published>2026-04-29T10:11:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=607648d5fc98782018a40c45079d300c48f684c4'/>
<id>607648d5fc98782018a40c45079d300c48f684c4</id>
<content type='text'>
Fix https://github.com/ruby/rubygems/pull/3215

Change the exit status to 1 when trying to `get` a config key that does not exist, as shown below.

```sh
$ bundle config get foo

Settings for `foo` in order of priority. The top value will be used

You have not configured a value for `foo`

$ echo $?
1
```

It seems that showing “Settings for `foo` in order of priority. The top value will be used” when the key does not exist is not very meaningful, but for now I have left the behavior unchanged except for the exit status.

In the tests, some existing cases try to `get` a missing config without `raise_on_error: false`, so set the value in advance or add `raise_on_error: false` to handle them.

https://github.com/ruby/rubygems/commit/73205e3d64
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix https://github.com/ruby/rubygems/pull/3215

Change the exit status to 1 when trying to `get` a config key that does not exist, as shown below.

```sh
$ bundle config get foo

Settings for `foo` in order of priority. The top value will be used

You have not configured a value for `foo`

$ echo $?
1
```

It seems that showing “Settings for `foo` in order of priority. The top value will be used” when the key does not exist is not very meaningful, but for now I have left the behavior unchanged except for the exit status.

In the tests, some existing cases try to `get` a missing config without `raise_on_error: false`, so set the value in advance or add `raise_on_error: false` to handle them.

https://github.com/ruby/rubygems/commit/73205e3d64
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/rubygems] Honor LazySpec overrides in SpecSet#complete_platform</title>
<updated>2026-05-08T06:43:48+00:00</updated>
<author>
<name>Hiroshi SHIBATA</name>
<email>hsbt@ruby-lang.org</email>
</author>
<published>2026-05-08T02:56:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=95ce1c5228a86fffdce7535a374008e7cbcd076c'/>
<id>95ce1c5228a86fffdce7535a374008e7cbcd076c</id>
<content type='text'>
complete_platform validates platform-specific candidates returned by
spec.source.specs.search, which are remote specs that do not carry
the override list. Borrow the override list from the LazySpec exemplar
already in scope so platform-variant validation uses the same effective
metadata as the install/resolve path.

Also propagate the overrides onto the synthesized LazySpec built from
platform_spec. Without this, the next complete_platform call could
pick the synthesized variant as its exemplar (it is now in the set
returned by lookup) and fall back to strict matching, dropping
platforms that the user's override would otherwise allow.

https://github.com/ruby/rubygems/commit/205955c5b3

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
complete_platform validates platform-specific candidates returned by
spec.source.specs.search, which are remote specs that do not carry
the override list. Borrow the override list from the LazySpec exemplar
already in scope so platform-variant validation uses the same effective
metadata as the install/resolve path.

Also propagate the overrides onto the synthesized LazySpec built from
platform_spec. Without this, the next complete_platform call could
pick the synthesized variant as its exemplar (it is now in the set
returned by lookup) and fall back to strict matching, dropping
platforms that the user's override would otherwise allow.

https://github.com/ruby/rubygems/commit/205955c5b3

Co-Authored-By: Claude Opus 4.7 (1M context) &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
