Add new Rails/IndexBy and Rails/IndexWith cops #208
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.
Active Support provides
Enumerable#index_by
, which creates a hash by yielding each element and using the result as the key and the original element as the value, andEnumerable#index_with
, which uses the result as the value and the original element as the key.These cops identify and correct some patterns for doing the same thing using
each_with_object
,map { ... }.to_h
, orHash[map { ... }]
.This is heavily based on @djudd-stripe's work in rubocop/rubocop#7663, adapted to detect the same patterns when called on an enumerable rather than a hash.
Before submitting the PR make sure the following are checked:
[Fix #issue-number]
(if the related issue exists).master
(if not - rebase it).and description in grammatically correct, complete sentences.
bundle exec rake default
. It executes all tests and RuboCop for itself, and generates the documentation.