mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[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
3 changed files with 4 additions and 109 deletions
|
@ -37,25 +37,13 @@ module Bundler
|
|||
end
|
||||
|
||||
def failure_message
|
||||
return install_error_message if spec.source.options["git"]
|
||||
"#{install_error_message}\n#{gem_install_message}"
|
||||
install_error_message
|
||||
end
|
||||
|
||||
def install_error_message
|
||||
"An error occurred while installing #{spec.name} (#{spec.version}), and Bundler cannot continue."
|
||||
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
|
||||
# Fetch the build settings, if there are any
|
||||
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(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
|
||||
|
||||
it "doesn't blow up when the local .bundle/config is empty" do
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
RSpec.describe "bundle install" 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_gem "activesupport", "2.3.2" do |s|
|
||||
s.extensions << "Rakefile"
|
||||
|
@ -18,102 +18,9 @@ RSpec.describe "bundle install" do
|
|||
source "#{file_uri_for(gem_repo2)}"
|
||||
gem "rails"
|
||||
G
|
||||
expect(err).to start_with("Gem::Ext::BuildError: ERROR: Failed to build gem native extension.")
|
||||
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:
|
||||
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:
|
||||
rails was resolved to 2.3.2, which depends on
|
||||
|
|
Loading…
Add table
Reference in a new issue