Checks that include
, extend
and prepend
statements appear
inside classes and modules, not at the top level, so as to not affect
the behavior of Object
.
# badinclude M class Cend # badextend M class Cend # badprepend M class Cend # goodclass C include Mend # goodclass C extend Mend # goodclass C prepend Mend
Helps you transition from mutable string literals
to frozen string literals.
It will add the # frozen_string_literal: true
magic comment to the top
of files to enable frozen string literals. Frozen string literals may be
default in future Ruby. The comment will be added below a shebang and
encoding comment. The frozen string literal comment is only valid in Ruby 2.3+.
Note that the cop will accept files where the comment exists but is set
to false
instead of true
.
To require a blank line after this comment, please see
Layout/EmptyLineAfterMagicComment
cop.
This cop's autocorrection is unsafe since any strings mutations will
change from being accepted to raising FrozenError
, as all strings
will become frozen by default, and will need to be manually refactored.
# The `always` style will always add the frozen string literal comment# to a file, regardless of the Ruby version or if `freeze` or `<<` are# called on a string literal.# badmodule Bar # ...end # good# frozen_string_literal: true module Bar # ...end # good# frozen_string_literal: false module Bar # ...end
# The `never` will enforce that the frozen string literal comment does# not exist in a file.# bad# frozen_string_literal: true module Baz # ...end # goodmodule Baz # ...end
# The `always_true` style enforces that the frozen string literal# comment is set to `true`. This is a stricter option than `always`# and forces projects to use frozen string literals.# bad# frozen_string_literal: false module Baz # ...end # badmodule Baz # ...end # good# frozen_string_literal: true module Bar # ...end