summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2023-12-14 18:43:35 +0100
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2023-12-16 10:06:07 +0800
commit299eb8d1179ed7bea49c50b0fa003bf0724f6fb4 (patch)
tree00145465f3e22619d888f4091bf305f4e189d844 /lib
parentc8e9cd2b8b65e58e48d4ca14203c5a5d08a2d728 (diff)
[rubygems/rubygems] Improve command suggestion when gems are missing
Previous attempt to use a full path when the running version is different than the one that would be activated by default are different was not correct. This is because if this error happens in a `bundle exec` context, the `Gem.loaded_specs` is cleared because we're in an exec'd process, so will be always using a full path in these cases. This alternative approach should do what I was expecting. https://github.com/rubygems/rubygems/commit/e0bb8bf51b
Diffstat (limited to 'lib')
-rw-r--r--lib/bundler/setup.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/bundler/setup.rb b/lib/bundler/setup.rb
index c40607a0f0..7131d15055 100644
--- a/lib/bundler/setup.rb
+++ b/lib/bundler/setup.rb
@@ -12,7 +12,9 @@ if Bundler::SharedHelpers.in_bundle?
Bundler.ui.error e.message
Bundler.ui.warn e.backtrace.join("\n") if ENV["DEBUG"]
if e.is_a?(Bundler::GemNotFound)
- suggested_bundle = Gem.loaded_specs["bundler"] ? "bundle" : Bundler::SharedHelpers.bundle_bin_path
+ default_bundle = Gem.bin_path("bundler", "bundle")
+ current_bundle = Bundler::SharedHelpers.bundle_bin_path
+ suggested_bundle = default_bundle == current_bundle ? "bundle" : current_bundle
suggested_cmd = "#{suggested_bundle} install"
original_gemfile = Bundler.original_env["BUNDLE_GEMFILE"]
suggested_cmd += " --gemfile #{original_gemfile}" if original_gemfile