Skip to content
This repository has been archived by the owner on Apr 14, 2021. It is now read-only.

Fix bundle exec'ing to rubygems being silent #7442

Merged
1 commit merged into from Nov 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
15 changes: 12 additions & 3 deletions lib/bundler/cli/exec.rb
Expand Up @@ -25,12 +25,12 @@ def run
SharedHelpers.set_bundle_environment
if bin_path = Bundler.which(cmd)
if !Bundler.settings[:disable_exec_load] && ruby_shebang?(bin_path)
return kernel_load(bin_path, *args)
return with_verbose_rubygems { kernel_load(bin_path, *args) }
end
kernel_exec(bin_path, *args)
with_verbose_rubygems { kernel_exec(bin_path, *args) }
else
# exec using the given command
kernel_exec(cmd, *args)
with_verbose_rubygems { kernel_exec(cmd, *args) }
end
end

Expand Down Expand Up @@ -89,5 +89,14 @@ def ruby_shebang?(file)
first_line = File.open(file, "rb") {|f| f.read(possibilities.map(&:size).max) }
possibilities.any? {|shebang| first_line.start_with?(shebang) }
end

def with_verbose_rubygems
old_ui = Gem::DefaultUserInteraction.ui
Gem::DefaultUserInteraction.ui = nil

yield
ensure
Gem::DefaultUserInteraction.ui = old_ui
end
end
end
6 changes: 6 additions & 0 deletions spec/commands/exec_spec.rb
Expand Up @@ -55,6 +55,12 @@
expect(out).to eq("hi")
end

it "works when exec'ing to rubygems" do
install_gemfile 'gem "rack"'
bundle "exec gem --version"
expect(out).to eq(Gem::VERSION)
end

it "respects custom process title when loading through ruby" do
script_that_changes_its_own_title_and_checks_if_picked_up_by_ps_unix_utility = <<~'RUBY'
Process.setproctitle("1-2-3-4-5-6-7-8-9-10-11-12-13-14-15")
Expand Down