<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/lib/bundler/endpoint_specification.rb, branch v4.0.4</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] Fix Bundler removing executables after creating them</title>
<updated>2025-12-09T02:01:59+00:00</updated>
<author>
<name>Edouard CHIN</name>
<email>chin.edouard@gmail.com</email>
</author>
<published>2025-12-08T16:39:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=12c16f9dedb38af8111809229495e28e8d37b569'/>
<id>12c16f9dedb38af8111809229495e28e8d37b569</id>
<content type='text'>
When running a fresh `bundle install` with gems that contains
executables, Bundler will generate binstubs but soon after will remove
them. This is a regression introduced in https://github.com/ruby/rubygems/commit/573ffad3ea4a.

This results in doing `bundle install &amp;&amp; bundle exec foo` to raise an
error saying `foo` couldn't be found.

This issue only appears if `BUNDLE_CLEAN` is set.

At the end of the installation process, when Bundler has installed
gems and generated binstubs, it runs the cleanup.

1. It [detects](https://github.com/ruby/rubygems/blob/4f8aa3b40cded3465bb2cd761e9ce7f8673b7fcb/bundler/lib/bundler/runtime.rb#L182) the executable for the current specs
2. Any existing executables not detected is then removed https://github.com/ruby/rubygems/blob/4f8aa3b40cded3465bb2cd761e9ce7f8673b7fcb/bundler/lib/bundler/runtime.rb#L194.

The issue being that 1. now returns an empty array where as it should
return the executables of the gems from the current bundle.

The problem is in https://github.com/ruby/rubygems/commit/573ffad3ea4a where we
removed the `executables` method from the `EndpointSpecification`.
When Bundler reads the lockfile, it creates a `EndpointSpecification`
object for each spec. At this point, the EndpointSpecification doesn't
know about the `executables` of a gem. Once Bundler fetches the
`gemspec` from the remote, it swaps the the "spec" with the real one
and from here knows what executables the gem has.

Reintroduce the `executables` method and the `bindir` in the
EndpointSpecification class. From what I'm seeing, the removal
of those wasn't needed to resolve the issue where Bundler remembers
CLI flags. This is probably an oversight.

https://github.com/ruby/rubygems/commit/b47f6b0247
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When running a fresh `bundle install` with gems that contains
executables, Bundler will generate binstubs but soon after will remove
them. This is a regression introduced in https://github.com/ruby/rubygems/commit/573ffad3ea4a.

This results in doing `bundle install &amp;&amp; bundle exec foo` to raise an
error saying `foo` couldn't be found.

This issue only appears if `BUNDLE_CLEAN` is set.

At the end of the installation process, when Bundler has installed
gems and generated binstubs, it runs the cleanup.

1. It [detects](https://github.com/ruby/rubygems/blob/4f8aa3b40cded3465bb2cd761e9ce7f8673b7fcb/bundler/lib/bundler/runtime.rb#L182) the executable for the current specs
2. Any existing executables not detected is then removed https://github.com/ruby/rubygems/blob/4f8aa3b40cded3465bb2cd761e9ce7f8673b7fcb/bundler/lib/bundler/runtime.rb#L194.

The issue being that 1. now returns an empty array where as it should
return the executables of the gems from the current bundle.

The problem is in https://github.com/ruby/rubygems/commit/573ffad3ea4a where we
removed the `executables` method from the `EndpointSpecification`.
When Bundler reads the lockfile, it creates a `EndpointSpecification`
object for each spec. At this point, the EndpointSpecification doesn't
know about the `executables` of a gem. Once Bundler fetches the
`gemspec` from the remote, it swaps the the "spec" with the real one
and from here knows what executables the gem has.

Reintroduce the `executables` method and the `bindir` in the
EndpointSpecification class. From what I'm seeing, the removal
of those wasn't needed to resolve the issue where Bundler remembers
CLI flags. This is probably an oversight.

https://github.com/ruby/rubygems/commit/b47f6b0247
</pre>
</div>
</content>
</entry>
<entry>
<title>[rubygems/rubygems] Complete remembered options removal</title>
<updated>2025-09-11T02:54:49+00:00</updated>
<author>
<name>David Rodríguez</name>
<email>2887858+deivid-rodriguez@users.noreply.github.com</email>
</author>
<published>2025-09-09T12:37:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=ecd1284bf246ae739890d154706f4f533bc8d77e'/>
<id>ecd1284bf246ae739890d154706f4f533bc8d77e</id>
<content type='text'>
https://github.com/rubygems/rubygems/commit/573ffad3ea
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/rubygems/rubygems/commit/573ffad3ea
</pre>
</div>
</content>
</entry>
<entry>
<title>[rubygems/rubygems] Remove unnecessary remapping of dependencies</title>
<updated>2025-02-06T06:57:55+00:00</updated>
<author>
<name>David Rodríguez</name>
<email>deivid.rodriguez@riseup.net</email>
</author>
<published>2025-01-30T14:34:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7fed6c887d68e1347defcd1364b0ceb5ba18a2b9'/>
<id>7fed6c887d68e1347defcd1364b0ceb5ba18a2b9</id>
<content type='text'>
Sometimes we'll resolve using bare `Gem::Dependency` instances rather
than `Bundler::Dependency` instances, which is fine, simpler, and saves
some memory.

When resolving from scratch a Gemfile including only `"gem "rails", "~&gt;
8.0.1"`, I get the following results:

### Before

Total allocated: 277.48 MB (3384318 objects)
Total retained:  117.53 MB (1338657 objects)

### After

Total allocated: 265.06 MB (3186053 objects)
Total retained:  116.98 MB (1302280 objects)

https://github.com/rubygems/rubygems/commit/c6dc2966c5
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Sometimes we'll resolve using bare `Gem::Dependency` instances rather
than `Bundler::Dependency` instances, which is fine, simpler, and saves
some memory.

When resolving from scratch a Gemfile including only `"gem "rails", "~&gt;
8.0.1"`, I get the following results:

### Before

Total allocated: 277.48 MB (3384318 objects)
Total retained:  117.53 MB (1338657 objects)

### After

Total allocated: 265.06 MB (3186053 objects)
Total retained:  116.98 MB (1302280 objects)

https://github.com/rubygems/rubygems/commit/c6dc2966c5
</pre>
</div>
</content>
</entry>
<entry>
<title>[rubygems/rubygems] Lazily parse dependencies in EndpointSpecification</title>
<updated>2025-02-06T06:57:54+00:00</updated>
<author>
<name>David Rodríguez</name>
<email>deivid.rodriguez@riseup.net</email>
</author>
<published>2025-01-30T10:31:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=8e7883011a6402413d7d6448235359195b45d781'/>
<id>8e7883011a6402413d7d6448235359195b45d781</id>
<content type='text'>
Since not every dependency gets referenced.

When resolving from scratch a Gemfile including only `"gem "rails", "~&gt;
8.0.1"`, I get the following results:

### Before

Total allocated: 295.01 MB (3624335 objects)
Total retained:  119.31 MB (1364474 objects)

### After
Total allocated: 288.21 MB (3498515 objects)
Total retained:  119.10 MB (1357976 objects)

https://github.com/rubygems/rubygems/commit/61eee39d81

Co-authored-by: Samuel Giddins &lt;segiddins@segiddins.me&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since not every dependency gets referenced.

When resolving from scratch a Gemfile including only `"gem "rails", "~&gt;
8.0.1"`, I get the following results:

### Before

Total allocated: 295.01 MB (3624335 objects)
Total retained:  119.31 MB (1364474 objects)

### After
Total allocated: 288.21 MB (3498515 objects)
Total retained:  119.10 MB (1357976 objects)

https://github.com/rubygems/rubygems/commit/61eee39d81

Co-authored-by: Samuel Giddins &lt;segiddins@segiddins.me&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[rubygems/rubygems] Define a few `inspect` methods to help debugging</title>
<updated>2024-11-19T16:50:04+00:00</updated>
<author>
<name>David Rodríguez</name>
<email>deivid.rodriguez@riseup.net</email>
</author>
<published>2024-11-14T09:54:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b56aacba78c95c1d7151c8cb66165fb69510bac3'/>
<id>b56aacba78c95c1d7151c8cb66165fb69510bac3</id>
<content type='text'>
https://github.com/rubygems/rubygems/commit/ad26ccde38
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/rubygems/rubygems/commit/ad26ccde38
</pre>
</div>
</content>
</entry>
<entry>
<title>[rubygems/rubygems] Warn on insecure materialization</title>
<updated>2024-11-08T12:06:32+00:00</updated>
<author>
<name>David Rodríguez</name>
<email>deivid.rodriguez@riseup.net</email>
</author>
<published>2024-09-12T11:40:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=10d694a1ffdcdaae67a693bb68c4bd658ec2d157'/>
<id>10d694a1ffdcdaae67a693bb68c4bd658ec2d157</id>
<content type='text'>
https://github.com/rubygems/rubygems/commit/bc2537de71
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/rubygems/rubygems/commit/bc2537de71
</pre>
</div>
</content>
</entry>
<entry>
<title>[rubygems/rubygems] Remove unnecessary attribute</title>
<updated>2024-11-08T12:06:29+00:00</updated>
<author>
<name>David Rodríguez</name>
<email>deivid.rodriguez@riseup.net</email>
</author>
<published>2024-09-17T16:02:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=ebf07f7a9c2988848424e2acc6cd5a5bb90ba9c4'/>
<id>ebf07f7a9c2988848424e2acc6cd5a5bb90ba9c4</id>
<content type='text'>
It's defined in the superclass already.

https://github.com/rubygems/rubygems/commit/e269f5477b
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It's defined in the superclass already.

https://github.com/rubygems/rubygems/commit/e269f5477b
</pre>
</div>
</content>
</entry>
<entry>
<title>[rubygems/rubygems] Fix funding metadata not being printed in some situations</title>
<updated>2024-06-14T14:27:02+00:00</updated>
<author>
<name>David Rodríguez</name>
<email>deivid.rodriguez@riseup.net</email>
</author>
<published>2024-05-17T16:27:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4d73f3f9ebefa347acc1ec8031ac4025f5f71ba8'/>
<id>4d73f3f9ebefa347acc1ec8031ac4025f5f71ba8</id>
<content type='text'>
Namely, when a gem has not previously been installed, and Bundler is
using the compact index API, fund metadata was not getting printed
because the proper delegation was not implemented in the specification
class used by the compact index.

https://github.com/rubygems/rubygems/commit/9ef5139f60
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Namely, when a gem has not previously been installed, and Bundler is
using the compact index API, fund metadata was not getting printed
because the proper delegation was not implemented in the specification
class used by the compact index.

https://github.com/rubygems/rubygems/commit/9ef5139f60
</pre>
</div>
</content>
</entry>
<entry>
<title>[rubygems/rubygems] Converts Bundler lockfile checksum validation to opt-in only</title>
<updated>2023-12-05T21:09:53+00:00</updated>
<author>
<name>Martin Emde</name>
<email>martin.emde@gmail.com</email>
</author>
<published>2023-12-01T22:20:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5f0ea3f590f8983669fe478bc9eace6880353b84'/>
<id>5f0ea3f590f8983669fe478bc9eace6880353b84</id>
<content type='text'>
Looks for the CHECKSUMS section in the lockfile, activating the feature
only if the section exists. Without a CHECKSUMS section, Bundler will
continue as normal, validating checksums when gems are installed while
checksums from the compact index are present.

https://github.com/rubygems/rubygems/commit/2353cc93a4
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Looks for the CHECKSUMS section in the lockfile, activating the feature
only if the section exists. Without a CHECKSUMS section, Bundler will
continue as normal, validating checksums when gems are installed while
checksums from the compact index are present.

https://github.com/rubygems/rubygems/commit/2353cc93a4
</pre>
</div>
</content>
</entry>
<entry>
<title>[rubygems/rubygems] Set file path when eval-ing local specification in EndpointSpecification</title>
<updated>2023-10-25T17:24:06+00:00</updated>
<author>
<name>Samuel Giddins</name>
<email>segiddins@segiddins.me</email>
</author>
<published>2023-10-24T22:12:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fa3cc4afcbdebfbf1485a7808189baba54e5eb79'/>
<id>fa3cc4afcbdebfbf1485a7808189baba54e5eb79</id>
<content type='text'>
Not strictly necessary, but there is no reason not to be helpful and set the path

https://github.com/rubygems/rubygems/commit/894c0303dd
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Not strictly necessary, but there is no reason not to be helpful and set the path

https://github.com/rubygems/rubygems/commit/894c0303dd
</pre>
</div>
</content>
</entry>
</feed>
