Place the . on the next line, together with the method name. Open
garden_crop = Garden.find(raw_params[:garden_id]).
- Read upRead up
- Exclude checks
This cop checks the . position in multi-line method calls.
Example: EnforcedStyle: leading (default)
# bad
something.
method
# good
something
.method
Example: EnforcedStyle: trailing
# bad
something
.method
# good
something.
method
Use a guard clause (raise OpenfarmErrors::NotAuthorized unless Pundit.policy(current_user, garden).show?
) instead of wrapping the code inside a conditional expression. Open
if Pundit.policy(current_user, garden).show?
- Read upRead up
- Exclude checks
Use a guard clause instead of wrapping the code inside a conditional expression
Example:
# bad
def test
if something
work
end
end
# good
def test
return unless something
work
end
# also good
def test
work if something
end
# bad
if something
raise 'exception'
else
ok
end
# good
raise 'exception' if something
ok
# bad
if something
foo || raise('exception')
else
ok
end
# good
foo || raise('exception') if something
ok
Use a guard clause (raise OpenfarmErrors::NotAuthorized unless Pundit.policy(current_user, garden).show?
) instead of wrapping the code inside a conditional expression. Open
if Pundit.policy(current_user, garden).show?
- Read upRead up
- Exclude checks
Use a guard clause instead of wrapping the code inside a conditional expression
Example:
# bad
def test
if something
work
end
end
# good
def test
return unless something
work
end
# also good
def test
work if something
end
# bad
if something
raise 'exception'
else
ok
end
# good
raise 'exception' if something
ok
# bad
if something
foo || raise('exception')
else
ok
end
# good
foo || raise('exception') if something
ok
Prefer single-quoted strings when you don't need string interpolation or special symbols. Open
render json: "Garden not found", status: 404
- Read upRead up
- Exclude checks
Checks if uses of quotes match the configured preference.
Example: EnforcedStyle: single_quotes (default)
# bad
"No special symbols"
"No string interpolation"
"Just text"
# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"
Example: EnforcedStyle: double_quotes
# bad
'Just some text'
'No special chars or interpolation'
# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"
Avoid comma after the last parameter of a method call. Open
user: current_user,
- Read upRead up
- Exclude checks
This cop checks for trailing comma in argument lists. The supported styles are:
-
consistent_comma
: Requires a comma after the last argument, for all parenthesized method calls with arguments. -
comma
: Requires a comma after the last argument, but only for parenthesized method calls where each argument is on its own line. -
no_comma
: Requires that there is no comma after the last argument.
Example: EnforcedStyleForMultiline: consistent_comma
# bad
method(1, 2,)
# good
method(1, 2)
# good
method(
1, 2,
3,
)
# good
method(
1, 2, 3,
)
# good
method(
1,
2,
)
Example: EnforcedStyleForMultiline: comma
# bad
method(1, 2,)
# good
method(1, 2)
# bad
method(
1, 2,
3,
)
# good
method(
1, 2,
3
)
# bad
method(
1, 2, 3,
)
# good
method(
1, 2, 3
)
# good
method(
1,
2,
)
Example: EnforcedStyleForMultiline: no_comma (default)
# bad
method(1, 2,)
# good
method(1, 2)
# good
method(
1,
2
)
Missing frozen string literal comment. Open
class Api::V1::GardenCropsController < Api::V1::BaseController
- Read upRead up
- Exclude checks
This cop is designed to help you transition from mutable string literals
to frozen string literals.
It will add the comment # frozen_string_literal: true
to the top of
files to enable frozen string literals. Frozen string literals may be
default in future Ruby. The comment will be added below a shebang and
encoding comment.
Note that the cop will ignore files where the comment exists but is set
to false
instead of true
.
Example: EnforcedStyle: always (default)
# The `always` style will always add the frozen string literal comment
# to a file, regardless of the Ruby version or if `freeze` or `<<` are
# called on a string literal.
# bad
module Bar
# ...
end
# good
# frozen_string_literal: true
module Bar
# ...
end
# good
# frozen_string_literal: false
module Bar
# ...
end
Example: EnforcedStyle: never
# The `never` will enforce that the frozen string literal comment does
# not exist in a file.
# bad
# frozen_string_literal: true
module Baz
# ...
end
# good
module Baz
# ...
end
Example: EnforcedStyle: always_true
# The `always_true` style enforces that the frozen string literal
# comment is set to `true`. This is a stricter option than `always`
# and forces projects to use frozen string literals.
# bad
# frozen_string_literal: false
module Baz
# ...
end
# bad
module Baz
# ...
end
# good
# frozen_string_literal: true
module Bar
# ...
end
Align garden_crops
with Garden.find(raw_params[:garden_id]).
on line 51. Open
garden_crops.find(raw_params[:id])
- Read upRead up
- Exclude checks
This cop checks the indentation of the method name part in method calls that span more than one line.
Example: EnforcedStyle: aligned (default)
# bad
while myvariable
.b
# do something
end
# good
while myvariable
.b
# do something
end
# good
Thing.a
.b
.c
Example: EnforcedStyle: indented
# good
while myvariable
.b
# do something
end
Example: EnforcedStyle: indentedrelativeto_receiver
# good
while myvariable
.a
.b
# do something
end
# good
myvariable = Thing
.a
.b
.c
Missing top-level class documentation comment. Open
class Api::V1::GardenCropsController < Api::V1::BaseController
- Read upRead up
- Exclude checks
This cop checks for missing top-level documentation of classes and modules. Classes with no body are exempt from the check and so are namespace modules - modules that have nothing in their bodies except classes, other modules, constant definitions or constant visibility declarations.
The documentation requirement is annulled if the class or module has a "#:nodoc:" comment next to it. Likewise, "#:nodoc: all" does the same for all its children.
Example:
# bad
class Person
# ...
end
module Math
end
# good
# Description/Explanation of Person class
class Person
# ...
end
# allowed
# Class without body
class Person
end
# Namespace - A namespace can be a class or a module
# Containing a class
module Namespace
# Description/Explanation of Person class
class Person
# ...
end
end
# Containing constant visibility declaration
module Namespace
class Private
end
private_constant :Private
end
# Containing constant definition
module Namespace
Public = Class.new
end
Use nested module/class definitions instead of compact style. Open
class Api::V1::GardenCropsController < Api::V1::BaseController
- Read upRead up
- Exclude checks
This cop checks the style of children definitions at classes and modules. Basically there are two different styles:
Example: EnforcedStyle: nested (default)
# good
# have each child on its own line
class Foo
class Bar
end
end
Example: EnforcedStyle: compact
# good
# combine definitions as much as possible
class Foo::Bar
end
The compact style is only forced for classes/modules with one child.
Prefer single-quoted strings when you don't need string interpolation or special symbols. Open
render json: "Garden not found", status: 404
- Read upRead up
- Exclude checks
Checks if uses of quotes match the configured preference.
Example: EnforcedStyle: single_quotes (default)
# bad
"No special symbols"
"No string interpolation"
"Just text"
# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"
Example: EnforcedStyle: double_quotes
# bad
'Just some text'
'No special chars or interpolation'
# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"