require:
  - rubocop/rspec/focused

AllCops:
  Exclude:
    - "db/schema.rb"
    - "bin/*"
    - "node_modules/**/*"

Bundler/DuplicatedGem:
  Enabled: true

Bundler/InsecureProtocolSource:
  Enabled: true

Bundler/OrderedGems:
  Enabled: false

Gemspec/DuplicatedAssignment:
  Enabled: true

Gemspec/OrderedDependencies:
  Enabled: true

Gemspec/RequiredRubyVersion:
  Enabled: true

Layout/AccessModifierIndentation:
  Enabled: true

Layout/AlignArray:
  Enabled: true

Layout/AlignHash:
  Enabled: false

Layout/AlignParameters:
  Enabled: true
  EnforcedStyle: with_fixed_indentation

Layout/BlockAlignment:
  Enabled: false

Layout/BlockEndNewline:
  Enabled: true

Layout/CaseIndentation:
  Enabled: true
  EnforcedStyle: end

Layout/ClassStructure:
  Enabled: false

Layout/ClosingParenthesisIndentation:
  Enabled: true

Layout/CommentIndentation:
  Enabled: true

Layout/ConditionPosition:
  Enabled: false

Layout/DefEndAlignment:
  Enabled: false

Layout/DotPosition:
  Enabled: true

Layout/ElseAlignment:
  Enabled: true

Layout/EmptyComment:
  Enabled: true

Layout/EmptyLineAfterMagicComment:
  Enabled: true

Layout/EmptyLineBetweenDefs:
  Enabled: true

Layout/EmptyLines:
  Enabled: true

Layout/EmptyLineAfterGuardClause:
  Enabled: false

Layout/EmptyLinesAroundAccessModifier:
  Enabled: true

Layout/EmptyLinesAroundArguments:
  Enabled: true

Layout/EmptyLinesAroundBeginBody:
  Enabled: true

Layout/EmptyLinesAroundBlockBody:
  Enabled: true

Layout/EmptyLinesAroundClassBody:
  Enabled: true

Layout/EmptyLinesAroundExceptionHandlingKeywords:
  Enabled: false

Layout/EmptyLinesAroundMethodBody:
  Enabled: true

Layout/EmptyLinesAroundModuleBody:
  Enabled: true

Layout/EndAlignment:
  Enabled: true
  EnforcedStyleAlignWith: variable

Layout/EndOfLine:
  Enabled: true
  EnforcedStyle: lf

Layout/ExtraSpacing:
  Enabled: true
  Exclude:
    - "Guardfile"

Layout/FirstArrayElementLineBreak:
  Enabled: true

Layout/FirstHashElementLineBreak:
  Enabled: true

Layout/FirstMethodArgumentLineBreak:
  Enabled: false

Layout/FirstMethodParameterLineBreak:
  Enabled: false

Layout/FirstParameterIndentation:
  Enabled: true

Layout/IndentArray:
  Enabled: true
  EnforcedStyle: consistent

Layout/IndentAssignment:
  Enabled: true

Layout/IndentHash:
  Enabled: true
  EnforcedStyle: consistent

Layout/IndentHeredoc:
  Enabled: true

Layout/IndentationConsistency:
  Enabled: true

Layout/IndentationWidth:
  Enabled: true

Layout/InitialIndentation:
  Enabled: true

Layout/LeadingCommentSpace:
  Enabled: true

Layout/MultilineArrayBraceLayout:
  Enabled: true
  EnforcedStyle: new_line

Layout/MultilineAssignmentLayout:
  Enabled: false

Layout/MultilineBlockLayout:
  Enabled: true

Layout/MultilineHashBraceLayout:
  Enabled: true
  EnforcedStyle: new_line

Layout/MultilineMethodCallBraceLayout:
  Enabled: true
  EnforcedStyle: symmetrical

Layout/MultilineMethodCallIndentation:
  Enabled: true
  EnforcedStyle: indented

Layout/MultilineMethodDefinitionBraceLayout:
  Enabled: true

Layout/MultilineOperationIndentation:
  Enabled: false

Layout/RescueEnsureAlignment:
  Enabled: true

Layout/SpaceAfterColon:
  Enabled: true

Layout/SpaceAfterComma:
  Enabled: false

Layout/SpaceAfterMethodName:
  Enabled: true

Layout/SpaceAfterNot:
  Enabled: true

Layout/SpaceAfterSemicolon:
  Enabled: true

Layout/SpaceAroundBlockParameters:
  Enabled: true

Layout/SpaceAroundEqualsInParameterDefault:
  Enabled: true

Layout/SpaceAroundKeyword:
  Enabled: true

Layout/SpaceAroundOperators:
  Enabled: true

Layout/SpaceBeforeBlockBraces:
  Enabled: false

Layout/SpaceBeforeComma:
  Enabled: true

Layout/SpaceBeforeComment:
  Enabled: true

Layout/SpaceBeforeFirstArg:
  Enabled: true

Layout/SpaceBeforeSemicolon:
  Enabled: true

Layout/SpaceInLambdaLiteral:
  Enabled: true
  EnforcedStyle: require_space

Layout/SpaceInsideArrayPercentLiteral:
  Enabled: true

Layout/SpaceInsideBlockBraces:
  Enabled: true

Layout/SpaceInsideHashLiteralBraces:
  Enabled: true

Layout/SpaceInsideArrayLiteralBrackets:
  Enabled: false

Layout/SpaceInsideParens:
  Enabled: true

Layout/SpaceInsidePercentLiteralDelimiters:
  Enabled: true

Layout/SpaceInsideRangeLiteral:
  Enabled: true

Layout/SpaceInsideReferenceBrackets:
  Enabled: true

Layout/SpaceInsideStringInterpolation:
  Enabled: true

Layout/Tab:
  Enabled: true

Layout/TrailingBlankLines:
  Enabled: true

Layout/TrailingWhitespace:
  Enabled: true

Lint/AmbiguousBlockAssociation:
  Enabled: false

Lint/AmbiguousOperator:
  Enabled: true

Lint/AmbiguousRegexpLiteral:
  Enabled: true

Lint/AssignmentInCondition:
  Enabled: true

Lint/BigDecimalNew:
  Enabled: true

Lint/BooleanSymbol:
  Enabled: true

Lint/CircularArgumentReference:
  Enabled: true

Lint/Debugger:
  Enabled: true

Lint/DeprecatedClassMethods:
  Enabled: true

Lint/DuplicateCaseCondition:
  Enabled: true

Lint/DuplicateMethods:
  Enabled: true

Lint/DuplicatedKey:
  Enabled: true

Lint/EachWithObjectArgument:
  Enabled: true

Lint/ElseLayout:
  Enabled: true

Lint/EmptyEnsure:
  Enabled: true

Lint/EmptyExpression:
  Enabled: true

Lint/EmptyInterpolation:
  Enabled: true

Lint/EmptyWhen:
  Enabled: true

Lint/EndInMethod:
  Enabled: true

Lint/EnsureReturn:
  Enabled: false

Lint/FloatOutOfRange:
  Enabled: false

Lint/FormatParameterMismatch:
  Enabled: false

Lint/HandleExceptions:
  Enabled: false

Lint/ImplicitStringConcatenation:
  Enabled: false

Lint/IneffectiveAccessModifier:
  Enabled: false

Lint/InheritException:
  Enabled: false

Lint/InterpolationCheck:
  Enabled: true

Lint/LiteralAsCondition:
  Enabled: false

Lint/LiteralInInterpolation:
  Enabled: false

Lint/Loop:
  Enabled: false

Lint/MissingCopEnableDirective:
  Enabled: true

Lint/MultipleCompare:
  Enabled: false

Lint/NestedMethodDefinition:
  Enabled: false

Lint/NestedPercentLiteral:
  Enabled: true

Lint/NextWithoutAccumulator:
  Enabled: false

Lint/NonLocalExitFromIterator:
  Enabled: false

Lint/NumberConversion:
  Enabled: false

Lint/OrderedMagicComments:
  Enabled: true

Lint/ParenthesesAsGroupedExpression:
  Enabled: false

Lint/PercentStringArray:
  Enabled: false

Lint/PercentSymbolArray:
  Enabled: false

Lint/RandOne:
  Enabled: false

Lint/RedundantWithIndex:
  Enabled: true

Lint/RedundantWithObject:
  Enabled: true

Lint/RegexpAsCondition:
  Enabled: true

Lint/RequireParentheses:
  Enabled: false

Lint/RescueException:
  Enabled: false

Lint/RescueType:
  Enabled: false

Lint/ReturnInVoidContext:
  Enabled: false

Lint/SafeNavigationChain:
  Enabled: false

Lint/ScriptPermission:
  Enabled: false

Lint/ShadowedArgument:
  Enabled: true

Lint/ShadowedException:
  Enabled: false

Lint/ShadowingOuterLocalVariable:
  Enabled: false

Lint/StringConversionInInterpolation:
  Enabled: false

Lint/Syntax:
  Enabled: true

Lint/UnderscorePrefixedVariableName:
  Enabled: false

Lint/UnifiedInteger:
  Enabled: false

Lint/UnneededCopDisableDirective:
  Enabled: false

Lint/UnneededCopEnableDirective:
  Enabled: true

Lint/UnneededRequireStatement:
  Enabled: true

Lint/UnneededSplatExpansion:
  Enabled: false

Lint/UnreachableCode:
  Enabled: false

Lint/UnusedBlockArgument:
  Enabled: false

Lint/UnusedMethodArgument:
  Enabled: false

Lint/UriEscapeUnescape:
  Enabled: false

Lint/UriRegexp:
  Enabled: false

Lint/UselessAccessModifier:
  Enabled: false

Lint/UselessAssignment:
  Enabled: false

Lint/UselessComparison:
  Enabled: false

Lint/UselessElseWithoutRescue:
  Enabled: false

Lint/UselessSetterCall:
  Enabled: false

Lint/Void:
  Enabled: false

Metrics/AbcSize:
  Enabled: false

Metrics/BlockLength:
  Enabled: false

Metrics/BlockNesting:
  Enabled: false

Metrics/ClassLength:
  Enabled: false

Metrics/CyclomaticComplexity:
  Enabled: false

Metrics/LineLength:
  Enabled: false

Metrics/MethodLength:
  Enabled: false

Metrics/ModuleLength:
  Enabled: false

Metrics/ParameterLists:
  Enabled: false

Metrics/PerceivedComplexity:
  Enabled: false

Naming/AccessorMethodName:
  Enabled: false

Naming/AsciiIdentifiers:
  Enabled: false

Naming/BinaryOperatorParameterName:
  Enabled: false

Naming/ClassAndModuleCamelCase:
  Enabled: false

Naming/ConstantName:
  Enabled: false

Naming/FileName:
  Enabled: false

Naming/HeredocDelimiterCase:
  Enabled: true

Naming/HeredocDelimiterNaming:
  Enabled: false

Naming/MemoizedInstanceVariableName:
  Enabled: false

Naming/MethodName:
  Enabled: false

Naming/PredicateName:
  Enabled: false

Naming/UncommunicativeBlockParamName:
  Enabled: true

Naming/UncommunicativeMethodParamName:
  Enabled: false

Naming/VariableName:
  Enabled: false

Naming/VariableNumber:
  Enabled: false

Performance/Caller:
  Enabled: true

Performance/CaseWhenSplat:
  Enabled: true

Performance/Casecmp:
  Enabled: true

Performance/CompareWithBlock:
  Enabled: true

Performance/Count:
  Enabled: true

Performance/Detect:
  Enabled: true

Performance/DoubleStartEndWith:
  Enabled: true

Performance/EndWith:
  Enabled: true

Performance/FixedSize:
  Enabled: true

Performance/FlatMap:
  Enabled: true

Performance/LstripRstrip:
  Enabled: true

Performance/RangeInclude:
  Enabled: true

Performance/RedundantBlockCall:
  Enabled: true

Performance/RedundantMatch:
  Enabled: true

Performance/RedundantMerge:
  Enabled: true

Performance/RedundantSortBy:
  Enabled: true

Performance/RegexpMatch:
  Enabled: true

Performance/ReverseEach:
  Enabled: true

Performance/Sample:
  Enabled: true

Performance/Size:
  Enabled: true

Performance/StartWith:
  Enabled: true

Performance/StringReplacement:
  Enabled: true

Performance/TimesMap:
  Enabled: true

Performance/UnfreezeString:
  Enabled: true

Performance/UriDefaultParser:
  Enabled: true

Rails/ActionFilter:
  Enabled: true

Rails/ActiveRecordAliases:
  Enabled: true

Rails/ActiveSupportAliases:
  Enabled: true

Rails/ApplicationJob:
  Enabled: true

Rails/ApplicationRecord:
  Enabled: true

Rails/Blank:
  Enabled: true

Rails/BulkChangeTable:
  Enabled: false

Rails/CreateTableWithTimestamps:
  Enabled: false

Rails/Date:
  Enabled: false

Rails/Delegate:
  Enabled: false

Rails/DelegateAllowBlank:
  Enabled: true

Rails/DynamicFindBy:
  Enabled: true
  Exclude:
    - "spec/features/**/*.rb"

Rails/EnumUniqueness:
  Enabled: true

Rails/EnvironmentComparison:
  Enabled: false

Rails/Exit:
  Enabled: true

Rails/FilePath:
  Enabled: true

Rails/FindBy:
  Enabled: true

Rails/FindEach:
  Enabled: true

Rails/HasAndBelongsToMany:
  Enabled: false

Rails/HasManyOrHasOneDependent:
  Enabled: false

Rails/HttpPositionalArguments:
  Enabled: true

Rails/HttpStatus:
  Enabled: false

Rails/InverseOf:
  Enabled: false

Rails/LexicallyScopedActionFilter:
  Enabled: false

Rails/NotNullColumn:
  Enabled: false

Rails/Output:
  Enabled: false

Rails/OutputSafety:
  Enabled: true

Rails/PluralizationGrammar:
  Enabled: true

Rails/Presence:
  Enabled: true

Rails/Present:
  Enabled: true

Rails/ReadWriteAttribute:
  Enabled: false

Rails/RedundantReceiverInWithOptions:
  Enabled: true

Rails/RelativeDateConstant:
  Enabled: true

Rails/RequestReferer:
  Enabled: true

Rails/ReversibleMigration:
  Enabled: false

Rails/SafeNavigation:
  Enabled: true

Rails/SaveBang:
  Enabled: false

Rails/ScopeArgs:
  Enabled: true

Rails/SkipsModelValidations:
  Enabled: false

Rails/TimeZone:
  Enabled: false

Rails/UniqBeforePluck:
  Enabled: true

Rails/UnknownEnv:
  Enabled: false

Rails/Validation:
  Enabled: true

Rails:
  Enabled: true

RSpec/Focused:
  Enabled: true

Security/Eval:
  Enabled: true

Security/JSONLoad:
  Enabled: true

Security/MarshalLoad:
  Enabled: true

Security/Open:
  Enabled: true

Security/YAMLLoad:
  Enabled: true

Style/AccessModifierDeclarations:
  Enabled: false

Style/Alias:
  Enabled: false

Style/AndOr:
  Enabled: false

Style/ArrayJoin:
  Enabled: false

Style/AsciiComments:
  Enabled: false

Style/Attr:
  Enabled: false

Style/AutoResourceCleanup:
  Enabled: false

Style/BarePercentLiterals:
  Enabled: false

Style/BeginBlock:
  Enabled: false

Style/BlockComments:
  Enabled: false

Style/BlockDelimiters:
  Enabled: false

Style/BracesAroundHashParameters:
  Enabled: false

Style/CaseEquality:
  Enabled: false

Style/CharacterLiteral:
  Enabled: false

Style/ClassAndModuleChildren:
  Enabled: false

Style/ClassCheck:
  Enabled: false

Style/ClassMethods:
  Enabled: false

Style/ClassVars:
  Enabled: false

Style/CollectionMethods:
  Enabled: false

Style/ColonMethodCall:
  Enabled: false

Style/ColonMethodDefinition:
  Enabled: true

Style/CommandLiteral:
  Enabled: false

Style/CommentAnnotation:
  Enabled: false

Style/CommentedKeyword:
  Enabled: false

Style/ConditionalAssignment:
  Enabled: false

Style/Copyright:
  Enabled: false

Style/DateTime:
  Enabled: false

Style/DefWithParentheses:
  Enabled: false

Style/Dir:
  Enabled: true

Style/Documentation:
  Enabled: false

Style/DocumentationMethod:
  Enabled: false

Style/DoubleNegation:
  Enabled: false

Style/EachForSimpleLoop:
  Enabled: false

Style/EachWithObject:
  Enabled: false

Style/EmptyBlockParameter:
  Enabled: true

Style/EmptyCaseCondition:
  Enabled: false

Style/EmptyElse:
  Enabled: false

Style/EmptyLambdaParameter:
  Enabled: true

Style/EmptyLiteral:
  Enabled: false

Style/EmptyMethod:
  Enabled: false

Style/Encoding:
  Enabled: false

Style/EndBlock:
  Enabled: false

Style/EvalWithLocation:
  Enabled: false

Style/EvenOdd:
  Enabled: false

Style/ExpandPathArguments:
  Enabled: true

Style/FlipFlop:
  Enabled: false

Style/For:
  Enabled: false

Style/FormatString:
  Enabled: false

Style/FormatStringToken:
  Enabled: false

Style/FrozenStringLiteralComment:
  Enabled: false

Style/GlobalVars:
  Enabled: false

Style/GuardClause:
  Enabled: false

Style/HashSyntax:
  Enabled: false

Style/IdenticalConditionalBranches:
  Enabled: false

Style/IfInsideElse:
  Enabled: false

Style/IfUnlessModifier:
  Enabled: false

Style/IfUnlessModifierOfIfUnless:
  Enabled: false

Style/IfWithSemicolon:
  Enabled: false

Style/ImplicitRuntimeError:
  Enabled: false

Style/InfiniteLoop:
  Enabled: false

Style/InlineComment:
  Enabled: false

Style/InverseMethods:
  Enabled: false

Style/Lambda:
  Enabled: false

Style/LambdaCall:
  Enabled: false

Style/LineEndConcatenation:
  Enabled: false

Style/MethodCallWithArgsParentheses:
  Enabled: false

Style/MethodCallWithoutArgsParentheses:
  Enabled: false

Style/MethodCalledOnDoEndBlock:
  Enabled: false

Style/MethodDefParentheses:
  Enabled: true

Style/MethodMissingSuper:
  Enabled: false

Style/MinMax:
  Enabled: true

Style/MissingElse:
  Enabled: false

Style/MissingRespondToMissing:
  Enabled: false

Style/MixinGrouping:
  Enabled: false

Style/MixinUsage:
  Enabled: false

Style/ModuleFunction:
  Enabled: false

Style/MultilineBlockChain:
  Enabled: false

Style/MultilineIfModifier:
  Enabled: false

Style/MultilineIfThen:
  Enabled: false

Style/MultilineMemoization:
  Enabled: false

Style/MultilineTernaryOperator:
  Enabled: false

Style/MultipleComparison:
  Enabled: false

Style/MutableConstant:
  Enabled: false

Style/NegatedIf:
  Enabled: false

Style/NegatedWhile:
  Enabled: false

Style/NestedModifier:
  Enabled: false

Style/NestedParenthesizedCalls:
  Enabled: false

Style/NestedTernaryOperator:
  Enabled: false

Style/Next:
  Enabled: false

Style/NilComparison:
  Enabled: false

Style/NonNilCheck:
  Enabled: false

Style/Not:
  Enabled: false

Style/NumericLiteralPrefix:
  Enabled: false

Style/NumericLiterals:
  Enabled: false

Style/NumericPredicate:
  Enabled: false

Style/OneLineConditional:
  Enabled: false

Style/OptionHash:
  Enabled: false

Style/OptionalArguments:
  Enabled: false

Style/ParallelAssignment:
  Enabled: false

Style/OrAssignment:
  Enabled: true

Style/ParenthesesAroundCondition:
  Enabled: false

Style/PercentLiteralDelimiters:
  Enabled: false

Style/PercentQLiterals:
  Enabled: false

Style/PerlBackrefs:
  Enabled: false

Style/PreferredHashMethods:
  Enabled: false

Style/Proc:
  Enabled: false

Style/RaiseArgs:
  Enabled: false

Style/RandomWithOffset:
  Enabled: false

Style/RedundantBegin:
  Enabled: false

Style/RedundantConditional:
  Enabled: true

Style/RedundantException:
  Enabled: false

Style/RedundantFreeze:
  Enabled: false

Style/RedundantParentheses:
  Enabled: false

Style/RedundantReturn:
  Enabled: false

Style/RedundantSelf:
  Enabled: false

Style/RegexpLiteral:
  Enabled: false

Style/RescueModifier:
  Enabled: false

Style/RescueStandardError:
  Enabled: false

Style/ReturnNil:
  Enabled: false

Style/SafeNavigation:
  Enabled: false

Style/SelfAssignment:
  Enabled: false

Style/Semicolon:
  Enabled: false

Style/Send:
  Enabled: false

Style/SignalException:
  Enabled: false

Style/SingleLineBlockParams:
  Enabled: false

Style/SingleLineMethods:
  Enabled: false

Style/SpecialGlobalVars:
  Enabled: false

Style/StabbyLambdaParentheses:
  Enabled: false

Style/StderrPuts:
  Enabled: true

Style/StringHashKeys:
  Enabled: false

Style/StringLiterals:
  Enabled: false

Style/StringLiteralsInInterpolation:
  Enabled: false

Style/StringMethods:
  Enabled: false

Style/StructInheritance:
  Enabled: false

Style/SymbolArray:
  Enabled: true
  EnforcedStyle: brackets

Style/SymbolLiteral:
  Enabled: true

Style/SymbolProc:
  Enabled: true
  IgnoredMethods: [after]

Style/TernaryParentheses:
  Enabled: false

Style/TrailingBodyOnClass:
  Enabled: true

Style/TrailingBodyOnMethodDefinition:
  Enabled: true

Style/TrailingBodyOnModule:
  Enabled: true

Style/TrailingCommaInArguments:
  Enabled: true

Style/TrailingCommaInArrayLiteral:
  Enabled: true

Style/TrailingCommaInHashLiteral:
  Enabled: true

Style/TrailingMethodEndStatement:
  Enabled: true

Style/TrailingUnderscoreVariable:
  Enabled: false

Style/TrivialAccessors:
  Enabled: false

Style/UnlessElse:
  Enabled: true

Style/UnneededCapitalW:
  Enabled: true

Style/UnneededInterpolation:
  Enabled: true

Style/UnneededPercentQ:
  Enabled: true

Style/VariableInterpolation:
  Enabled: true

Style/WhenThen:
  Enabled: false

Style/WhileUntilDo:
  Enabled: true

# Disabled because we don't want to use modifiers
Style/WhileUntilModifier:
  Enabled: false

Style/WordArray:
  Enabled: true
  EnforcedStyle: brackets

Style/YodaCondition:
  Enabled: true

Style/ZeroLengthPredicate:
  Enabled: true
