lib/bundler/friendly_errors.rb in bundler-1.7.15 vs lib/bundler/friendly_errors.rb in bundler-1.8.0.pre
- old
+ new
@@ -1,5 +1,6 @@
+# encoding: utf-8
require "bundler/vendored_thor"
module Bundler
def self.with_friendly_errors
yield
@@ -31,12 +32,44 @@
Bundler.ui.trace e
exit 1
rescue SystemExit => e
exit e.status
rescue Exception => e
- Bundler.ui.error <<-ERR, :wrap => true
- Unfortunately, a fatal error has occurred. Please see the Bundler \
- troubleshooting documentation at http://bit.ly/bundler-issues. Thanks!
- ERR
- raise e
+ request_issue_report_for(e)
+ exit 1
end
+
+ def self.request_issue_report_for(e)
+ Bundler.ui.info <<-EOS.gsub(/^ {6}/, '')
+ #{'――― ERROR REPORT TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――'}
+ - What did you do?
+ - What did you expect to happen?
+ - What happened instead?
+
+ Error details
+
+ #{e.class}: #{e.message}
+ #{e.backtrace.join("\n ")}
+
+ #{Bundler::Env.new.report(:print_gemfile => 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}/, '')
+
+ 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=' \
+ "#{CGI.escape(exception.message)}&type=Issues"
+ end
+
end