Module: Bundler::FriendlyErrors
- Defined in:
- lib/bundler/friendly_errors.rb
Class Method Summary collapse
- .disable! ⇒ Object
- .disabled? ⇒ Boolean
- .enable! ⇒ Object
- .exception_message(error) ⇒ Object
- .exit_status(error) ⇒ Object
- .issues_url(exception) ⇒ Object
- .log_error(error) ⇒ Object
- .new_issue_url ⇒ Object
- .request_issue_report_for(e) ⇒ Object
- .serialized_exception_for(e) ⇒ Object
Class Method Details
.disable! ⇒ Object
[View source]
17 18 19 |
# File 'lib/bundler/friendly_errors.rb', line 17 def disable! @disabled = true end |
.disabled? ⇒ Boolean
13 14 15 |
# File 'lib/bundler/friendly_errors.rb', line 13 def disabled? @disabled end |
.enable! ⇒ Object
[View source]
9 10 11 |
# File 'lib/bundler/friendly_errors.rb', line 9 def enable! @disabled = false end |
.exception_message(error) ⇒ Object
[View source]
87 88 89 90 91 92 93 |
# File 'lib/bundler/friendly_errors.rb', line 87 def (error) = serialized_exception_for(error) cause = error.cause return unless cause + serialized_exception_for(cause) end |
.exit_status(error) ⇒ Object
[View source]
54 55 56 57 58 59 60 61 |
# File 'lib/bundler/friendly_errors.rb', line 54 def exit_status(error) case error when BundlerError then error.status_code when Thor::Error then 15 when SystemExit then error.status else 1 end end |
.issues_url(exception) ⇒ Object
[View source]
102 103 104 105 106 107 108 |
# File 'lib/bundler/friendly_errors.rb', line 102 def issues_url(exception) = exception..lines.first.tr(":", " ").chomp = .split("-").first if exception.is_a?(Errno) require "cgi" "https://github.com/rubygems/rubygems/search?q=" \ "#{CGI.escape()}&type=Issues" end |
.log_error(error) ⇒ Object
[View source]
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/bundler/friendly_errors.rb', line 21 def log_error(error) case error when YamlSyntaxError Bundler.ui.error error. Bundler.ui.trace error.orig_exception when Dsl::DSLError, GemspecError Bundler.ui.error error. when GemRequireError Bundler.ui.error error. Bundler.ui.trace error.orig_exception when BundlerError if Bundler.ui.debug? Bundler.ui.trace error else Bundler.ui.error error., wrap: true end when Thor::Error Bundler.ui.error error. when Interrupt Bundler.ui.error "\nQuitting..." Bundler.ui.trace error when Gem::InvalidSpecificationException Bundler.ui.error error., wrap: true when SystemExit when *[defined?(Java::JavaLang::OutOfMemoryError) && Java::JavaLang::OutOfMemoryError].compact Bundler.ui.error "\nYour JVM has run out of memory, and Bundler cannot continue. " \ "You can decrease the amount of memory Bundler needs by removing gems from your Gemfile, " \ "especially large gems. (Gems can be as large as hundreds of megabytes, and Bundler has to read those files!). " \ "Alternatively, you can increase the amount of memory the JVM is able to use by running Bundler with jruby -J-Xmx1024m -S bundle (JRuby defaults to 500MB)." else request_issue_report_for(error) end end |
.new_issue_url ⇒ Object
[View source]
110 111 112 |
# File 'lib/bundler/friendly_errors.rb', line 110 def new_issue_url "https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md" end |
.request_issue_report_for(e) ⇒ Object
[View source]
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/bundler/friendly_errors.rb', line 63 def request_issue_report_for(e) Bundler.ui.error <<~EOS, nil, nil --- ERROR REPORT TEMPLATE ------------------------------------------------------- ``` #{(e)} ``` #{Bundler::Env.report} --- TEMPLATE END ---------------------------------------------------------------- EOS Bundler.ui.error "Unfortunately, an unexpected error occurred, and Bundler cannot continue." Bundler.ui.error <<~EOS, nil, :yellow 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 fill in the new issue form located at #{new_issue_url}. Make sure to copy and paste the full output of this command under the "What happened instead?" section. EOS end |
.serialized_exception_for(e) ⇒ Object
[View source]
95 96 97 98 99 100 |
# File 'lib/bundler/friendly_errors.rb', line 95 def serialized_exception_for(e) <<~EOS #{e.class}: #{e.} #{e.backtrace&.join("\n ")&.chomp} EOS end |