[rubygems/rubygems] Remove gem install
hint when installing a gem fails
A fresh `gem install` might not reproduce the exact `bundle install` environment that originally caused the error. It also makes it harder for the user to troubleshoot the error since she needs to run a separate command. Instead, show the original error and backtrace directly. https://github.com/rubygems/rubygems/commit/49c2abfec6
This commit is contained in:
parent
6eb6f740f2
commit
6bcedabfdd
@ -37,25 +37,13 @@ module Bundler
|
|||||||
end
|
end
|
||||||
|
|
||||||
def failure_message
|
def failure_message
|
||||||
return install_error_message if spec.source.options["git"]
|
install_error_message
|
||||||
"#{install_error_message}\n#{gem_install_message}"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def install_error_message
|
def install_error_message
|
||||||
"An error occurred while installing #{spec.name} (#{spec.version}), and Bundler cannot continue."
|
"An error occurred while installing #{spec.name} (#{spec.version}), and Bundler cannot continue."
|
||||||
end
|
end
|
||||||
|
|
||||||
def gem_install_message
|
|
||||||
source = spec.source
|
|
||||||
return unless source.respond_to?(:remotes)
|
|
||||||
|
|
||||||
if source.remotes.size == 1
|
|
||||||
"Make sure that `gem install #{spec.name} -v '#{spec.version}' --source '#{source.remotes.first}'` succeeds before bundling."
|
|
||||||
else
|
|
||||||
"Make sure that `gem install #{spec.name} -v '#{spec.version}'` succeeds before bundling."
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def spec_settings
|
def spec_settings
|
||||||
# Fetch the build settings, if there are any
|
# Fetch the build settings, if there are any
|
||||||
if settings = Bundler.settings["build.#{spec.name}"]
|
if settings = Bundler.settings["build.#{spec.name}"]
|
||||||
|
@ -448,7 +448,7 @@ RSpec.describe "bundle install with gem sources" do
|
|||||||
|
|
||||||
expect(last_command.stdboth).not_to match(/Error Report/i)
|
expect(last_command.stdboth).not_to match(/Error Report/i)
|
||||||
expect(err).to include("An error occurred while installing ajp-rails (0.0.0), and Bundler cannot continue.").
|
expect(err).to include("An error occurred while installing ajp-rails (0.0.0), and Bundler cannot continue.").
|
||||||
and include("Make sure that `gem install ajp-rails -v '0.0.0' --source '#{file_uri_for(gem_repo2)}/'` succeeds before bundling.")
|
and include("Bundler::APIResponseInvalidDependenciesError")
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't blow up when the local .bundle/config is empty" do
|
it "doesn't blow up when the local .bundle/config is empty" do
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
RSpec.describe "bundle install" do
|
RSpec.describe "bundle install" do
|
||||||
context "installing a gem fails" do
|
context "installing a gem fails" do
|
||||||
it "prints out why that gem was being installed" do
|
it "prints out why that gem was being installed and the underlying error" do
|
||||||
build_repo2 do
|
build_repo2 do
|
||||||
build_gem "activesupport", "2.3.2" do |s|
|
build_gem "activesupport", "2.3.2" do |s|
|
||||||
s.extensions << "Rakefile"
|
s.extensions << "Rakefile"
|
||||||
@ -18,102 +18,9 @@ RSpec.describe "bundle install" do
|
|||||||
source "#{file_uri_for(gem_repo2)}"
|
source "#{file_uri_for(gem_repo2)}"
|
||||||
gem "rails"
|
gem "rails"
|
||||||
G
|
G
|
||||||
|
expect(err).to start_with("Gem::Ext::BuildError: ERROR: Failed to build gem native extension.")
|
||||||
expect(err).to end_with(<<-M.strip)
|
expect(err).to end_with(<<-M.strip)
|
||||||
An error occurred while installing activesupport (2.3.2), and Bundler cannot continue.
|
An error occurred while installing activesupport (2.3.2), and Bundler cannot continue.
|
||||||
Make sure that `gem install activesupport -v '2.3.2' --source '#{file_uri_for(gem_repo2)}/'` succeeds before bundling.
|
|
||||||
|
|
||||||
In Gemfile:
|
|
||||||
rails was resolved to 2.3.2, which depends on
|
|
||||||
actionmailer was resolved to 2.3.2, which depends on
|
|
||||||
activesupport
|
|
||||||
M
|
|
||||||
end
|
|
||||||
|
|
||||||
context "when installing a git gem" do
|
|
||||||
it "does not tell the user to run 'gem install'" do
|
|
||||||
build_git "activesupport", "2.3.2", :path => lib_path("activesupport") do |s|
|
|
||||||
s.extensions << "Rakefile"
|
|
||||||
s.write "Rakefile", <<-RUBY
|
|
||||||
task :default do
|
|
||||||
abort "make installing activesupport-2.3.2 fail"
|
|
||||||
end
|
|
||||||
RUBY
|
|
||||||
end
|
|
||||||
|
|
||||||
install_gemfile <<-G, :raise_on_error => false
|
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
|
||||||
gem "rails"
|
|
||||||
gem "activesupport", :git => "#{lib_path("activesupport")}"
|
|
||||||
G
|
|
||||||
|
|
||||||
expect(err).to end_with(<<-M.strip)
|
|
||||||
An error occurred while installing activesupport (2.3.2), and Bundler cannot continue.
|
|
||||||
|
|
||||||
In Gemfile:
|
|
||||||
rails was resolved to 2.3.2, which depends on
|
|
||||||
actionmailer was resolved to 2.3.2, which depends on
|
|
||||||
activesupport
|
|
||||||
M
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "when installing a gem using a git block" do
|
|
||||||
it "does not tell the user to run 'gem install'" do
|
|
||||||
build_git "activesupport", "2.3.2", :path => lib_path("activesupport") do |s|
|
|
||||||
s.extensions << "Rakefile"
|
|
||||||
s.write "Rakefile", <<-RUBY
|
|
||||||
task :default do
|
|
||||||
abort "make installing activesupport-2.3.2 fail"
|
|
||||||
end
|
|
||||||
RUBY
|
|
||||||
end
|
|
||||||
|
|
||||||
install_gemfile <<-G, :raise_on_error => false
|
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
|
||||||
gem "rails"
|
|
||||||
|
|
||||||
git "#{lib_path("activesupport")}" do
|
|
||||||
gem "activesupport"
|
|
||||||
end
|
|
||||||
G
|
|
||||||
|
|
||||||
expect(err).to end_with(<<-M.strip)
|
|
||||||
An error occurred while installing activesupport (2.3.2), and Bundler cannot continue.
|
|
||||||
|
|
||||||
|
|
||||||
In Gemfile:
|
|
||||||
rails was resolved to 2.3.2, which depends on
|
|
||||||
actionmailer was resolved to 2.3.2, which depends on
|
|
||||||
activesupport
|
|
||||||
M
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
it "prints out the hint for the remote source when available" do
|
|
||||||
build_repo2 do
|
|
||||||
build_gem "activesupport", "2.3.2" do |s|
|
|
||||||
s.extensions << "Rakefile"
|
|
||||||
s.write "Rakefile", <<-RUBY
|
|
||||||
task :default do
|
|
||||||
abort "make installing activesupport-2.3.2 fail"
|
|
||||||
end
|
|
||||||
RUBY
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
build_repo4 do
|
|
||||||
build_gem "a"
|
|
||||||
end
|
|
||||||
|
|
||||||
install_gemfile <<-G, :raise_on_error => false
|
|
||||||
source "#{file_uri_for(gem_repo4)}"
|
|
||||||
source "#{file_uri_for(gem_repo2)}" do
|
|
||||||
gem "rails"
|
|
||||||
end
|
|
||||||
G
|
|
||||||
expect(err).to end_with(<<-M.strip)
|
|
||||||
An error occurred while installing activesupport (2.3.2), and Bundler cannot continue.
|
|
||||||
Make sure that `gem install activesupport -v '2.3.2' --source '#{file_uri_for(gem_repo2)}/'` succeeds before bundling.
|
|
||||||
|
|
||||||
In Gemfile:
|
In Gemfile:
|
||||||
rails was resolved to 2.3.2, which depends on
|
rails was resolved to 2.3.2, which depends on
|
||||||
|
Loading…
x
Reference in New Issue
Block a user