Enable Style/MutableConstant cop with literals style#53
Draft
Enable Style/MutableConstant cop with literals style#53
Style/MutableConstant cop with literals style#53Conversation
817a767 to
1e51435
Compare
Ractor safety requires that for any class/module that can be shared between Ractors all of their constants are shareable as well. For simple constants that is trivially possible by freezing the constants at definition time, unless the constant is being used for a mutable context. This PR enables the MutableConstant cop for literal constant assignments, which should mostly be static values for the lifetime of the framework. For the rare cases where constants are being used for mutation (e.g. hashes used for caching, or constants defined for extension by framework consumers) have been marked with a `rubocop:disable` comment, until we have better fixes for them.
1e51435 to
5700c17
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Ractor safety requires that for any class/module that can be shared between Ractors all of their constants are shareable as well. For simple constants that is trivially possible by freezing the constants at definition time, unless the constant is being used for a mutable context.
This PR enables the MutableConstant cop for literal constant assignments, which should mostly be static values for the lifetime of the framework. For the rare cases where constants are being used in order to be mutated (e.g. hashes used for caching, or constants defined for extension by framework consumers) have been turned into non-literal definitions.
Motivation / Background
This Pull Request has been created because [REPLACE ME]
Detail
This Pull Request changes [REPLACE ME]
Additional information
Checklist
Before submitting the PR make sure the following are checked:
[Fix #issue-number]