Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rubocop with Rails 7.0 defaults + autofixes #1137

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
302 changes: 302 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,302 @@
require:
- rubocop-minitest
- rubocop-performance
- rubocop-rails

AllCops:
TargetRubyVersion: 3.1
# RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
# to ignore them, so only the ones explicitly set in this file are enabled.
DisabledByDefault: true
SuggestExtensions: false
Exclude:
- "**/tmp/**/*"
- "**/templates/**/*"
- "**/vendor/**/*"
- "actionpack/lib/action_dispatch/journey/parser.rb"
- "actionmailbox/test/dummy/**/*"
- "actiontext/test/dummy/**/*"
- "**/node_modules/**/*"

Performance:
Exclude:
- "**/test/**/*"

# Prefer assert_not over assert !
Rails/AssertNot:
Include:
- "**/test/**/*"

# Prefer assert_not_x over refute_x
Rails/RefuteMethods:
Include:
- "**/test/**/*"

Rails/IndexBy:
Enabled: true

Rails/IndexWith:
Enabled: true

# Prefer &&/|| over and/or.
Style/AndOr:
Enabled: true

# Align `when` with `case`.
Layout/CaseIndentation:
Enabled: true

Layout/ClosingHeredocIndentation:
Enabled: true

Layout/ClosingParenthesisIndentation:
Enabled: true

# Align comments with method definitions.
Layout/CommentIndentation:
Enabled: true

Layout/ElseAlignment:
Enabled: true

# Align `end` with the matching keyword or starting expression except for
# assignments, where it should be aligned with the LHS.
Layout/EndAlignment:
Enabled: true
EnforcedStyleAlignWith: variable
AutoCorrect: true

Layout/EndOfLine:
Enabled: true

Layout/EmptyLineAfterMagicComment:
Enabled: true

Layout/EmptyLinesAroundAccessModifier:
Enabled: true
EnforcedStyle: only_before

Layout/EmptyLinesAroundBlockBody:
Enabled: true

# In a regular class definition, no empty lines around the body.
Layout/EmptyLinesAroundClassBody:
Enabled: true

# In a regular method definition, no empty lines around the body.
Layout/EmptyLinesAroundMethodBody:
Enabled: true

# In a regular module definition, no empty lines around the body.
Layout/EmptyLinesAroundModuleBody:
Enabled: true

# Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
Style/HashSyntax:
Enabled: true

# Method definitions after `private` or `protected` isolated calls need one
# extra level of indentation.
Layout/IndentationConsistency:
Enabled: true
EnforcedStyle: indented_internal_methods

# Two spaces, no tabs (for indentation).
Layout/IndentationWidth:
Enabled: true

Layout/LeadingCommentSpace:
Enabled: true

Layout/SpaceAfterColon:
Enabled: true

Layout/SpaceAfterComma:
Enabled: true

Layout/SpaceAfterSemicolon:
Enabled: true

Layout/SpaceAroundEqualsInParameterDefault:
Enabled: true

Layout/SpaceAroundKeyword:
Enabled: true

Layout/SpaceAroundOperators:
Enabled: true

Layout/SpaceBeforeComma:
Enabled: true

Layout/SpaceBeforeComment:
Enabled: true

Layout/SpaceBeforeFirstArg:
Enabled: true

Style/DefWithParentheses:
Enabled: true

# Defining a method with parameters needs parentheses.
Style/MethodDefParentheses:
Enabled: true

Style/ExplicitBlockArgument:
Enabled: true

Style/FrozenStringLiteralComment:
Enabled: true
EnforcedStyle: always
Exclude:
- "actionview/test/**/*.builder"
- "actionview/test/**/*.ruby"
- "actionpack/test/**/*.builder"
- "actionpack/test/**/*.ruby"
- "activestorage/db/migrate/**/*.rb"
- "activestorage/db/update_migrate/**/*.rb"
- "actionmailbox/db/migrate/**/*.rb"
- "actiontext/db/migrate/**/*.rb"

Style/RedundantFreeze:
Enabled: true

# Use `foo {}` not `foo{}`.
Layout/SpaceBeforeBlockBraces:
Enabled: true

# Use `foo { bar }` not `foo {bar}`.
Layout/SpaceInsideBlockBraces:
Enabled: true
EnforcedStyleForEmptyBraces: space

# Use `{ a: 1 }` not `{a:1}`.
Layout/SpaceInsideHashLiteralBraces:
Enabled: true

Layout/SpaceInsideParens:
Enabled: true

# Check quotes usage according to lint rule below.
Style/StringLiterals:
Enabled: true
EnforcedStyle: double_quotes

# Detect hard tabs, no hard tabs.
Layout/IndentationStyle:
Enabled: true

# Empty lines should not have any spaces.
Layout/TrailingEmptyLines:
Enabled: true

# No trailing whitespace.
Layout/TrailingWhitespace:
Enabled: true

# Use quotes for string literals when they are enough.
Style/RedundantPercentQ:
Enabled: true

Lint/AmbiguousOperator:
Enabled: true

Lint/AmbiguousRegexpLiteral:
Enabled: true

Lint/DuplicateRequire:
Enabled: true

Lint/DuplicateMethods:
Enabled: true

Lint/ErbNewArguments:
Enabled: true

# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
Lint/RequireParentheses:
Enabled: true

Lint/RedundantStringCoercion:
Enabled: true

Lint/UriEscapeUnescape:
Enabled: true

Lint/UselessAssignment:
Enabled: true

Lint/DeprecatedClassMethods:
Enabled: true

Style/ParenthesesAroundCondition:
Enabled: true

Style/HashTransformKeys:
Enabled: true

Style/HashTransformValues:
Enabled: true

Style/RedundantBegin:
Enabled: true

Style/RedundantReturn:
Enabled: true
AllowMultipleReturnValues: true

Style/RedundantRegexpEscape:
Enabled: true

Style/Semicolon:
Enabled: true
AllowAsExpressionSeparator: true

# Prefer Foo.method over Foo::method
Style/ColonMethodCall:
Enabled: true

Style/TrivialAccessors:
Enabled: true

Performance/BindCall:
Enabled: true

Performance/FlatMap:
Enabled: true

Performance/MapCompact:
Enabled: true

Performance/SelectMap:
Enabled: true

Performance/RedundantMerge:
Enabled: true

Performance/StartWith:
Enabled: true

Performance/EndWith:
Enabled: true

Performance/RegexpMatch:
Enabled: true

Performance/ReverseEach:
Enabled: true

Performance/StringReplacement:
Enabled: true

Performance/UnfreezeString:
Enabled: true

Performance/DeletePrefix:
Enabled: true

Performance/DeleteSuffix:
Enabled: true

Minitest/UnreachableAssertion:
Enabled: true
47 changes: 26 additions & 21 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

Expand All @@ -24,35 +26,35 @@ gem "jbuilder", "~> 2.11"

# The latest release doesn't include the test helpers. Using this branch includes those.
# See: https://github.com/ErwinM/acts_as_tenant/issues/215#issuecomment-552076674
gem "activerecord-postgres_enum"
gem "acts_as_tenant"
gem "devise"
gem "pundit"
gem "audited", github: "simmerz/audited"
gem "turbolinks_render"
gem "money-rails"
gem "devise"
gem "http"
gem "mjml-rails" # , github: "jim/mjml-rails", branch: "webpacker"
gem "money-rails"
gem "pagy"
gem "pg_search"
gem "activerecord-postgres_enum"
gem "scenic"
gem "pundit"
gem "reverse_markdown"
gem "http"
gem "translation"
gem "scenic"
gem "store_model"
gem "translation"
gem "turbolinks_render"

gem "square.rb"
gem "aws-sdk-s3", require: false
gem "sentry-raven"
gem "omniauth-google-oauth2"
gem "omniauth-rails_csrf_protection"
gem "sentry-raven"
gem "square.rb"

gem "image_processing", "~> 1.12"
gem "mini_magick"

gem "appsignal"
gem "barnes"
gem "sucker_punch"
gem "dotenv-rails"
gem "appsignal"
gem "sucker_punch"

gem "chronic"

Expand All @@ -61,30 +63,33 @@ gem "bootsnap", ">= 1.4.1", require: false

group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem "byebug", platforms: [:mri, :mingw, :x64_mingw]
gem "standard"
gem "byebug", platforms: %i[mri mingw x64_mingw]
gem "factory_bot_rails"
gem "spy"
gem "letter_opener"
gem "rubocop", ">= 1.25.1", require: false
gem "rubocop-minitest", require: false
gem "rubocop-rails", require: false
gem "spy"
gem "standard"
end

group :development do
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
gem "web-console", ">= 3.3.0"
gem "listen"
gem "solargraph"
gem "active_storage_log_suppressor", path: "gems/active_storage_log_suppressor"
gem "lefthook"
gem "erb_lint", "~> 0.1.1"
gem "lefthook"
gem "listen"
gem "solargraph"
gem "web-console", ">= 3.3.0"
end

group :test do
# Adds support for Capybara system testing and selenium driver
gem "minitest", "5.15.0"
gem "capybara", ">= 2.15"
gem "selenium-webdriver"
gem "minitest", "5.15.0"
gem "minitest-ci"
gem "rails-controller-testing"
gem "selenium-webdriver"
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
Expand Down
Loading
Loading