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