### Summary
This PR changes .rubocop.yml.
Regarding the code using `if ... else ... end`, I think the coding style
that Rails expects is as follows.
```ruby
var = if cond
a
else
b
end
```
However, the current .rubocop.yml setting does not offense for the
following code.
```ruby
var = if cond
a
else
b
end
```
I think that the above code expects offense to be warned.
Moreover, the layout by autocorrect is unnatural.
```ruby
var = if cond
a
else
b
end
```
This PR adds a setting to .rubocop.yml to make an offense warning and
autocorrect as expected by the coding style.
And this change also fixes `case ... when ... end` together.
Also this PR itself is an example that arranges the layout using
`rubocop -a`.
### Other Information
Autocorrect of `Lint/EndAlignment` cop is `false` by default.
https://github.com/bbatsov/rubocop/blob/v0.51.0/config/default.yml#L1443
This PR changes this value to `true`.
Also this PR has changed it together as it is necessary to enable
`Layout/ElseAlignment` cop to make this behavior.
The def with blank `()` was newly added in #31176, but we have not used
the blank `()` style in most part of our code base.
So I've enabled `Style/DefWithParentheses` to prevent to newly added the
code.
We are already removing the braces around hash parameters in the last
argument in other places so we should not change the entire codebase
because of two places.
We have some indentation cops. But now there is a little inconsistent
params indentations. Enable `Layout/FirstParameterIndentation` cop to
prevent newly inconsistent indentation added and auto-correct to
existing violations.
Refer 54166bf76b
for the commit
```
/path/to/rails/.rubocop.yml: Style/CaseIndentation has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/CommentIndentation has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/EmptyLines has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/EmptyLinesAroundClassBody has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/EmptyLinesAroundMethodBody has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/EmptyLinesAroundModuleBody has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/IndentationConsistency has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/IndentationWidth has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/SpaceAfterColon has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/SpaceAfterComma has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/SpaceAroundEqualsInParameterDefault has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/SpaceAroundKeyword has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/SpaceAroundOperators has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/SpaceBeforeFirstArg has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/SpaceBeforeBlockBraces has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/SpaceInsideBlockBraces has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/SpaceInsideHashLiteralBraces has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/SpaceInsideParens has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/Tab has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/TrailingBlankLines has the wrong namespace - should be Layout
/path/to/rails/.rubocop.yml: Style/TrailingWhitespace has the wrong namespace - should be Layout
```
This change will help to catch ruby 2.3+ syntax in code base. Right now, minimal ruby version set to 2.2.2 in gemspecs.
Rubocop output before:
$ rubocop
Inspecting 2133 files
.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................CC.........................................................................................................................................................................................................................................................
Offenses:
activerecord/test/cases/schema_dumper_test.rb:454:32: C: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
output = dump_table_schema('infinity_defaults')
^^^^^^^^^^^^^^^^^^^
guides/bug_report_templates/active_record_migrations_gem.rb:65:4: C: Final newline missing.
end
guides/bug_report_templates/active_record_migrations_master.rb:64:4: C: Final newline missing.
end
2133 files inspected, 3 offenses detected
$
After:
$ rubocop
Inspecting 2133 files
.............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................CC.........................................................................................................................................................................................................................................................
Offenses:
activerecord/test/cases/schema_dumper_test.rb:454:32: C: Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
output = dump_table_schema('infinity_defaults')
^^^^^^^^^^^^^^^^^^^
guides/bug_report_templates/active_record_migrations_gem.rb:65:4: C: Final newline missing.
end
guides/bug_report_templates/active_record_migrations_master.rb:64:4: C: Final newline missing.
end
2133 files inspected, 3 offenses detected
$
All indentation was normalized by rubocop auto-correct at 80e66cc4d90bf8c15d1a5f6e3152e90147f00772.
But comments was still kept absolute position. This commit aligns
comments with method definitions for consistency.
For consistency mainly.
Also, some have a name that could make the reader think they
enforce the opposite of what they do, because the default is
not visible there.