Fix error when trying to display error message #11742
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When RuboCop errors, it prints a message that includes the issue tracker URL. It pulls this URL from the gem spec metadata.
Relying on the gem spec can cause problems in bundler standalone mode, where everything is set up by the standalone file and
Gem.loaded_specs
is not populated with the bundled gems.This means that if RuboCop errors, instead of a helpful error message we get a cryptic error that masks the underlying problem. We've seen this a number of times at GitHub (although mostly when developing our own internal cops and not from bugs in RuboCop itself).
This commit makes the error reporting more resilient by skipping the issue tracker URL when the rubocop spec is unavailable. Leaving out the URL in this case seems OK to me, since it's basically falling back to the error message before ef74a18. Hard-coding the URL is another option, although there's some risk of it falling out of sync some day.
I didn't find any existing test coverage for this code (perhaps because it only gets run if something else is broken), so I haven't added any additional coverage here.
Before submitting the PR make sure the following are checked:
[Fix #issue-number]
(if the related issue exists).master
(if not - rebase it).bundle exec rake default
. It executes all tests and runs RuboCop on its own code.{change_type}_{change_description}.md
if the new code introduces user-observable changes. See changelog entry format for details.