summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorEdouard CHIN <chin.edouard@gmail.com>2025-12-08 17:39:34 +0100
committergit <svn-admin@ruby-lang.org>2025-12-09 02:01:59 +0000
commit12c16f9dedb38af8111809229495e28e8d37b569 (patch)
tree8d5d0dcc1d961f600feb934fad2e713d4ce9ba59 /test/ruby
parent19172d64ebe909f185e28b1d8368a8a920f94a8b (diff)
[ruby/rubygems] Fix Bundler removing executables after creating them
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 && 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
Diffstat (limited to 'test/ruby')
0 files changed, 0 insertions, 0 deletions