lib/bundler/friendly_errors.rb in bundler-1.10.6 vs lib/bundler/friendly_errors.rb in bundler-1.11.0.pre.1
- old
+ new
@@ -3,13 +3,21 @@
require "bundler/vendored_thor"
module Bundler
def self.with_friendly_errors
yield
+ rescue YAMLSyntaxError => e
+ Bundler.ui.error e.message
+ Bundler.ui.trace e.orig_exception
+ exit e.status_code
rescue Bundler::Dsl::DSLError => e
Bundler.ui.error e.message
exit e.status_code
+ rescue Bundler::GemRequireError => e
+ Bundler.ui.error e.message
+ Bundler.ui.trace e.orig_exception, nil, true
+ exit e.status_code
rescue Bundler::BundlerError => e
Bundler.ui.error e.message, :wrap => true
Bundler.ui.trace e
exit e.status_code
rescue Thor::AmbiguousTaskError => e
@@ -41,15 +49,15 @@
request_issue_report_for(e)
exit 1
end
def self.request_issue_report_for(e)
- Bundler.ui.info <<-EOS.gsub(/^ {6}/, '')
- #{'--- ERROR REPORT TEMPLATE -------------------------------------------------------'}
+ Bundler.ui.info <<-EOS.gsub(/^ {6}/, "")
+ --- ERROR REPORT TEMPLATE -------------------------------------------------------
- What did you do?
- I ran the command `#{$PROGRAM_NAME} #{ARGV.join(' ')}`
+ I ran the command `#{$PROGRAM_NAME} #{ARGV.join(" ")}`
- What did you expect to happen?
I expected Bundler to...
@@ -61,28 +69,27 @@
Error details
#{e.class}: #{e.message}
#{e.backtrace.join("\n ")}
- #{Bundler::Env.new.report(:print_gemfile => false).gsub(/\n/, "\n ").strip}
- #{'--- TEMPLATE END ----------------------------------------------------------------'}
+ #{Bundler::Env.new.report(:print_gemfile => false, :print_gemspecs => false).gsub(/\n/, "\n ").strip}
+ --- TEMPLATE END ----------------------------------------------------------------
EOS
Bundler.ui.error "Unfortunately, an unexpected error occurred, and Bundler cannot continue."
- Bundler.ui.warn <<-EOS.gsub(/^ {6}/, '')
+ Bundler.ui.warn <<-EOS.gsub(/^ {6}/, "")
First, try this link to see if there are any existing issue reports for this error:
#{issues_url(e)}
If there aren't any reports for this error yet, please create copy and paste the report template above into a new issue. Don't forget to anonymize any private data! The new issue form is located at:
https://github.com/bundler/bundler/issues/new
EOS
end
def self.issues_url(exception)
- 'https://github.com/bundler/bundler/search?q=' \
+ "https://github.com/bundler/bundler/search?q=" \
"#{CGI.escape(exception.message.lines.first.chomp)}&type=Issues"
end
-
end