inherit_from: .rubocop_todo.yml # Please: # # - Comment any deviations from the Ruby Style Guide # - Alphabetize cops # - Only include permanent config; temporary goes in .rubocop_todo.yml # We do not control `schema.rb`. Exclude it from all cops. AllCops: Exclude: - test/dummy/db/schema.rb # Migrations often contain long up/down methods, and extracting smaller methods # from these is of questionable value. Metrics/AbcSize: Exclude: - 'test/dummy/db/migrate/*' Metrics/ClassLength: Exclude: - test/**/* # The Ruby Style Guide recommends to "Limit lines to 80 characters." # (https://github.com/bbatsov/ruby-style-guide#80-character-limits) # but 100 is also reasonable. Metrics/LineLength: Max: 100 # The number of lines in a method is not a useful metric compared to `AbcSize`. # It's common to have very long methods (> 50 lines) which are quite simple. For # example, a method that returns a long string with only a few interpolations. Metrics/MethodLength: Enabled: false Style/AlignParameters: EnforcedStyle: with_fixed_indentation # Please use semantic style, e.g. `do` when there's a side-effect, else `{}`. # The semantic style is too nuanced to lint, so the cop is disabled. Style/BlockDelimiters: Enabled: false Style/DotPosition: EnforcedStyle: trailing # Use double negation wherever it would otherwise be impractical to convert # a value to an actual boolean. Style/DoubleNegation: Enabled: false # The decision of when to use a guard clause to improve readability is subtle, # and it's not clear that it can be linted. Certainly, the default # `MinBodyLength` of 1 can actually hurt readability. Style/GuardClause: MinBodyLength: 3 # The Ruby Style Guide says: # # > Use \ instead of + or << to concatenate two string literals at line end. # # but in my experience the `\` style is rarely used and less readable. Please # concatenate multiline strings with `+` or use a HEREDOC. Style/LineEndConcatenation: Enabled: false # Using `module_function` instead of `extend self` would make the instance # methods in these modules private. That would be a breaking change, so these # modules are excluded. See discussion in: # - https://github.com/airblade/paper_trail/pull/756 # - https://github.com/bbatsov/ruby-style-guide/issues/556 Style/ModuleFunction: Exclude: - 'lib/paper_trail/serializers/json.rb' - 'lib/paper_trail/serializers/yaml.rb' Style/MultilineMethodCallIndentation: EnforcedStyle: indented Style/MultilineOperationIndentation: EnforcedStyle: indented Style/PredicateName: NameWhitelist: has_paper_trail # The Ruby Style Guide does not prescribe a particular quote character, only # that a project should pick one and be consistent. The decision has no # performance implications. Double quotes are slightly easier to read. Style/StringLiterals: EnforcedStyle: double_quotes