.rubocop.yml
# --
# 😞
# Even though I target a specific version,
# a gem might still be looser.
# --
Gemspec/RequiredRubyVersion:
Enabled: false
# --
# ðŸ¤
# My classes, modules, and methods rarely reach this
# length, but sometimes they do, like Pathutil.
# --
Metrics/MethodLength: { Max: 024 }
Metrics/ModuleLength: { Max: 240 }
Metrics/ClassLength:
Max: 240
# --
# 😞
# The default size is too small.
# 24 strikes a balance.
# --
Metrics/AbcSize:
Max: 24
# --
# 😞
# I prefer waterfall styled Gems.
# I find that if you have that many dependends you're
# mostly doing it wrong anyways.
# --
Gemspec/OrderedDependencies: { Enabled: false }
Bundler/OrderedGems:
Enabled: false
# --
# 😞
# This will trip on single line methods.
# I like full blocks on single line methods
# because it makes life easier.
# --
Style/IfUnlessModifier:
Enabled: false
# --
# 😞
# I prefer `private` above every method.
# It's more explicit.
# --
Lint/UselessAccessModifier:
Enabled: false
# --
# 😞
# There are just too many missed cases.
# So this is disabled.
# --
Style/BracesAroundHashParameters:
Enabled: false
# --
# 😞
# Because I like to use Emoji's in comments.
# This will trip up if you use Emoji's that are
# within the private space.
# --
Style/AsciiComments:
Enabled: false
# --
# 😞
# It just causes to many alignment issues.
# It's too opinated.
# --
Layout/MultilineMethodCallBraceLayout:
Enabled: false
# --
# 🎨
# I like my stuff to be indented 2 spaces.
# Not aligned at brackets.
# --
Layout/AlignParameters:
EnforcedStyle: with_fixed_indentation
# --
# 🎨
# Makes reorganizing hashes easier.
# They are non-positional.
# --
Style/TrailingCommaInLiteral:
EnforcedStyleForMultiline: comma
# --
# 🎨
# I like my stuff to be indented 2 spaces.
# Not aligned at brackets.
# --
Layout/MultilineMethodCallIndentation:
EnforcedStyle: indented
# --
# 🎨
# I like my stuff to be indented 2 spaces.
# Not aligned at brackets.
# --
Layout/MultilineOperationIndentation:
EnforcedStyle: indented
# --
# 🎨
# I like my stuff to be indented 2 spaces.
# Not aligned at brackets, or aligned independently,
# depending on if it's first, second, or not.
# --
Layout/FirstParameterIndentation:
EnforcedStyle: consistent
# --
# 🎨
# It's better to have private above the method def,
# this makes it more explicit.
# --
Layout/EmptyLinesAroundAccessModifier:
Enabled: false
# --
# 😞
# Sometimes has false positives.
# Disabled because of it.
# --
Layout/EmptyLinesAroundArguments:
Enabled: false
# --
# 😞
# Sometimes I do not wish to re-enable.
# This isn't always useful.
# --
Lint/MissingCopEnableDirective:
Enabled: false
# --
# 😞
# Because sometimes ternary makes more sense, and
# it might need to be split out.
# --
Style/MultilineTernaryOperator:
Enabled: false
# --
# 🎨
# I like my arrays to be indented 2 spaces.
# Not aligned at the bracket.
# --
Layout/IndentArray:
EnforcedStyle: consistent
# --
# 🎨
# I like my hashes to be indented 2 spaces.
# Not aligned at the bracket.
# --
Layout/IndentHash:
EnforcedStyle: consistent
# --
# 🎨
# Sometimes it makes code neater.
# This is case-by-case.
# --
Style/ParallelAssignment:
Enabled: false
# --
# 😞
# It doesn't always detect it.
# Unknown why.
# --
Style/EvalWithLocation:
Enabled: false
# --
# 😞
# Sometimes has false positives.
# We still prefer [+-]=.
# --
Style/SelfAssignment:
Enabled: false
# --
# 😞
# This will trip on single line methods.
# I like full blocks on single line methods
# because it makes life easier.
# --
Style/GuardClause:
Enabled: false
# --
# 😞
# Because it falsley triggers on DateTime.parse
# When parsing an unknown time, using DateTime is
# the best way to parse out.
# --
Style/DateTime:
Enabled: false
# --
# 😞
# Sometimes I prefer to do simple assignment as
# a single line, if it's readable.
# --
Style/Semicolon:
AllowAsExpressionSeparator: true
# --
Style/PercentLiteralDelimiters:
PreferredDelimiters:
'%q': '{}'
'%Q': '{}'
'%r': '!!'
'%s': '()'
'%w': '()'
'%W': '()'
'%x': '()'
'%i': '()'
'%I': '()'
# --
# Prefer %r!! over //
# 🎨
# --
Style/RegexpLiteral:
EnforcedStyle: percent_r
# Prefer "" over ''
# 🎨
# --
Style/StringLiterals:
EnforcedStyle: double_quotes
# --
AllCops:
TargetRubyVersion: 2.3
Exclude:
- examples/**/*
- node_modules/**/*
- vendor/**/*
Metrics/BlockLength:
Exclude:
- 'spec/**/*_spec.rb'