rubocop-rails 2.12.3 → 2.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/config/default.yml +40 -8
- data/lib/rubocop/cop/mixin/active_record_migrations_helper.rb +34 -0
- data/lib/rubocop/cop/mixin/migrations_helper.rb +26 -0
- data/lib/rubocop/cop/rails/active_record_aliases.rb +6 -2
- data/lib/rubocop/cop/rails/application_controller.rb +5 -1
- data/lib/rubocop/cop/rails/application_job.rb +5 -1
- data/lib/rubocop/cop/rails/application_mailer.rb +5 -1
- data/lib/rubocop/cop/rails/application_record.rb +6 -1
- data/lib/rubocop/cop/rails/arel_star.rb +6 -0
- data/lib/rubocop/cop/rails/blank.rb +5 -4
- data/lib/rubocop/cop/rails/compact_blank.rb +99 -0
- data/lib/rubocop/cop/rails/content_tag.rb +2 -2
- data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +2 -7
- data/lib/rubocop/cop/rails/duration_arithmetic.rb +98 -0
- data/lib/rubocop/cop/rails/dynamic_find_by.rb +4 -0
- data/lib/rubocop/cop/rails/find_each.rb +2 -0
- data/lib/rubocop/cop/rails/http_positional_arguments.rb +1 -1
- data/lib/rubocop/cop/rails/index_by.rb +6 -6
- data/lib/rubocop/cop/rails/index_with.rb +6 -6
- data/lib/rubocop/cop/rails/inverse_of.rb +17 -1
- data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +8 -7
- data/lib/rubocop/cop/rails/mailer_name.rb +4 -0
- data/lib/rubocop/cop/rails/negate_include.rb +3 -2
- data/lib/rubocop/cop/rails/output.rb +4 -0
- data/lib/rubocop/cop/rails/pick.rb +7 -0
- data/lib/rubocop/cop/rails/pluck_id.rb +3 -0
- data/lib/rubocop/cop/rails/pluck_in_where.rb +7 -6
- data/lib/rubocop/cop/rails/rake_environment.rb +5 -0
- data/lib/rubocop/cop/rails/read_write_attribute.rb +51 -14
- data/lib/rubocop/cop/rails/redundant_presence_validation_on_belongs_to.rb +257 -0
- data/lib/rubocop/cop/rails/reflection_class_name.rb +4 -2
- data/lib/rubocop/cop/rails/relative_date_constant.rb +3 -0
- data/lib/rubocop/cop/rails/reversible_migration.rb +5 -3
- data/lib/rubocop/cop/rails/reversible_migration_method_definition.rb +2 -10
- data/lib/rubocop/cop/rails/root_join_chain.rb +72 -0
- data/lib/rubocop/cop/rails/safe_navigation_with_blank.rb +12 -3
- data/lib/rubocop/cop/rails/save_bang.rb +19 -0
- data/lib/rubocop/cop/rails/schema_comment.rb +104 -0
- data/lib/rubocop/cop/rails/squished_sql_heredocs.rb +4 -2
- data/lib/rubocop/cop/rails/time_zone.rb +3 -0
- data/lib/rubocop/cop/rails/uniq_before_pluck.rb +29 -35
- data/lib/rubocop/cop/rails/unused_ignored_columns.rb +2 -0
- data/lib/rubocop/cop/rails/where_equals.rb +4 -0
- data/lib/rubocop/cop/rails/where_exists.rb +9 -8
- data/lib/rubocop/cop/rails_cops.rb +7 -0
- data/lib/rubocop/rails/version.rb +1 -1
- metadata +12 -4
@@ -6,9 +6,18 @@ module RuboCop
|
|
6
6
|
# This cop checks to make sure safe navigation isn't used with `blank?` in
|
7
7
|
# a conditional.
|
8
8
|
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
9
|
+
# @safety
|
10
|
+
# While the safe navigation operator is generally a good idea, when
|
11
|
+
# checking `foo&.blank?` in a conditional, `foo` being `nil` will actually
|
12
|
+
# do the opposite of what the author intends.
|
13
|
+
#
|
14
|
+
# For example:
|
15
|
+
#
|
16
|
+
# [source,ruby]
|
17
|
+
# ----
|
18
|
+
# foo&.blank? #=> nil
|
19
|
+
# foo.blank? #=> true
|
20
|
+
# ----
|
12
21
|
#
|
13
22
|
# @example
|
14
23
|
# # bad
|
@@ -25,6 +25,25 @@ module RuboCop
|
|
25
25
|
# You can permit receivers that are giving false positives with
|
26
26
|
# `AllowedReceivers: []`
|
27
27
|
#
|
28
|
+
# @safety
|
29
|
+
# This cop's autocorrection is unsafe because a custom `update` method call would be changed to `update!`,
|
30
|
+
# but the method name in the definition would be unchanged.
|
31
|
+
#
|
32
|
+
# [source,ruby]
|
33
|
+
# ----
|
34
|
+
# # Original code
|
35
|
+
# def update_attributes
|
36
|
+
# end
|
37
|
+
#
|
38
|
+
# update_attributes
|
39
|
+
#
|
40
|
+
# # After running rubocop --safe-auto-correct
|
41
|
+
# def update_attributes
|
42
|
+
# end
|
43
|
+
#
|
44
|
+
# update
|
45
|
+
# ----
|
46
|
+
#
|
28
47
|
# @example
|
29
48
|
#
|
30
49
|
# # bad
|
@@ -0,0 +1,104 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Rails
|
6
|
+
# This cop enforces the use of the `comment` option when adding a new table or column
|
7
|
+
# to the database during a migration.
|
8
|
+
#
|
9
|
+
# @example
|
10
|
+
# # bad (no comment for a new column or table)
|
11
|
+
# add_column :table, :column, :integer
|
12
|
+
#
|
13
|
+
# create_table :table do |t|
|
14
|
+
# t.type :column
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# # good
|
18
|
+
# add_column :table, :column, :integer, comment: 'Number of offenses'
|
19
|
+
#
|
20
|
+
# create_table :table, comment: 'Table of offenses data' do |t|
|
21
|
+
# t.type :column, comment: 'Number of offenses'
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
class SchemaComment < Base
|
25
|
+
include ActiveRecordMigrationsHelper
|
26
|
+
|
27
|
+
COLUMN_MSG = 'New database column without `comment`.'
|
28
|
+
TABLE_MSG = 'New database table without `comment`.'
|
29
|
+
RESTRICT_ON_SEND = %i[add_column create_table].freeze
|
30
|
+
CREATE_TABLE_COLUMN_METHODS = Set[
|
31
|
+
*(
|
32
|
+
RAILS_ABSTRACT_SCHEMA_DEFINITIONS |
|
33
|
+
RAILS_ABSTRACT_SCHEMA_DEFINITIONS_HELPERS |
|
34
|
+
POSTGRES_SCHEMA_DEFINITIONS |
|
35
|
+
MYSQL_SCHEMA_DEFINITIONS
|
36
|
+
)
|
37
|
+
].freeze
|
38
|
+
|
39
|
+
# @!method comment_present?(node)
|
40
|
+
def_node_matcher :comment_present?, <<~PATTERN
|
41
|
+
(hash <(pair {(sym :comment) (str "comment")} (_ [present?])) ...>)
|
42
|
+
PATTERN
|
43
|
+
|
44
|
+
# @!method add_column?(node)
|
45
|
+
def_node_matcher :add_column?, <<~PATTERN
|
46
|
+
(send nil? :add_column _table _column _type _?)
|
47
|
+
PATTERN
|
48
|
+
|
49
|
+
# @!method add_column_with_comment?(node)
|
50
|
+
def_node_matcher :add_column_with_comment?, <<~PATTERN
|
51
|
+
(send nil? :add_column _table _column _type #comment_present?)
|
52
|
+
PATTERN
|
53
|
+
|
54
|
+
# @!method create_table?(node)
|
55
|
+
def_node_matcher :create_table?, <<~PATTERN
|
56
|
+
(send nil? :create_table _table _?)
|
57
|
+
PATTERN
|
58
|
+
|
59
|
+
# @!method create_table?(node)
|
60
|
+
def_node_matcher :create_table_with_comment?, <<~PATTERN
|
61
|
+
(send nil? :create_table _table #comment_present? ...)
|
62
|
+
PATTERN
|
63
|
+
|
64
|
+
# @!method t_column?(node)
|
65
|
+
def_node_matcher :t_column?, <<~PATTERN
|
66
|
+
(send _var CREATE_TABLE_COLUMN_METHODS ...)
|
67
|
+
PATTERN
|
68
|
+
|
69
|
+
# @!method t_column_with_comment?(node)
|
70
|
+
def_node_matcher :t_column_with_comment?, <<~PATTERN
|
71
|
+
(send _var CREATE_TABLE_COLUMN_METHODS _column _type? #comment_present?)
|
72
|
+
PATTERN
|
73
|
+
|
74
|
+
def on_send(node)
|
75
|
+
if add_column_without_comment?(node)
|
76
|
+
add_offense(node, message: COLUMN_MSG)
|
77
|
+
elsif create_table?(node)
|
78
|
+
if create_table_without_comment?(node)
|
79
|
+
add_offense(node, message: TABLE_MSG)
|
80
|
+
elsif create_table_column_call_without_comment?(node)
|
81
|
+
add_offense(node.parent.body, message: COLUMN_MSG)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
private
|
87
|
+
|
88
|
+
def add_column_without_comment?(node)
|
89
|
+
add_column?(node) && !add_column_with_comment?(node)
|
90
|
+
end
|
91
|
+
|
92
|
+
def create_table_without_comment?(node)
|
93
|
+
create_table?(node) && !create_table_with_comment?(node)
|
94
|
+
end
|
95
|
+
|
96
|
+
def create_table_column_call_without_comment?(node)
|
97
|
+
create_table_with_block?(node.parent) &&
|
98
|
+
t_column?(node.parent.body) &&
|
99
|
+
!t_column_with_comment?(node.parent.body)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -5,8 +5,10 @@ module RuboCop
|
|
5
5
|
module Rails
|
6
6
|
#
|
7
7
|
# Checks SQL heredocs to use `.squish`.
|
8
|
-
#
|
9
|
-
#
|
8
|
+
#
|
9
|
+
# @safety
|
10
|
+
# Some SQL syntax (e.g. PostgreSQL comments and functions) requires newlines
|
11
|
+
# to be preserved in order to work, thus auto-correction for this cop is not safe.
|
10
12
|
#
|
11
13
|
# @example
|
12
14
|
# # bad
|
@@ -3,47 +3,46 @@
|
|
3
3
|
module RuboCop
|
4
4
|
module Cop
|
5
5
|
module Rails
|
6
|
-
# Prefer
|
6
|
+
# Prefer using `distinct` before `pluck` instead of `uniq` after `pluck`.
|
7
7
|
#
|
8
|
-
# The use of distinct before pluck is preferred because it executes
|
8
|
+
# The use of distinct before pluck is preferred because it executes by
|
9
9
|
# the database.
|
10
10
|
#
|
11
11
|
# This cop has two different enforcement modes. When the EnforcedStyle
|
12
|
-
# is conservative (the default) then only calls to pluck on a constant
|
13
|
-
# (i.e. a model class) before
|
12
|
+
# is `conservative` (the default), then only calls to `pluck` on a constant
|
13
|
+
# (i.e. a model class) before `uniq` are added as offenses.
|
14
14
|
#
|
15
|
-
# When the EnforcedStyle is aggressive then all calls to pluck before
|
15
|
+
# When the EnforcedStyle is `aggressive` then all calls to `pluck` before
|
16
16
|
# distinct are added as offenses. This may lead to false positives
|
17
|
-
# as the cop cannot distinguish between calls to pluck on an
|
17
|
+
# as the cop cannot distinguish between calls to `pluck` on an
|
18
18
|
# ActiveRecord::Relation vs a call to pluck on an
|
19
19
|
# ActiveRecord::Associations::CollectionProxy.
|
20
20
|
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
# false positives.
|
21
|
+
# @safety
|
22
|
+
# This cop is unsafe for autocorrection because the behavior may change
|
23
|
+
# depending on the database collation.
|
25
24
|
#
|
26
25
|
# @example EnforcedStyle: conservative (default)
|
27
|
-
# # bad
|
28
|
-
#
|
26
|
+
# # bad - redundantly fetches duplicate values
|
27
|
+
# Album.pluck(:band_name).uniq
|
29
28
|
#
|
30
29
|
# # good
|
31
|
-
#
|
30
|
+
# Album.distinct.pluck(:band_name)
|
32
31
|
#
|
33
32
|
# @example EnforcedStyle: aggressive
|
34
|
-
# # bad
|
35
|
-
#
|
36
|
-
# Model.where(cond: true).pluck(:id).uniq
|
33
|
+
# # bad - redundantly fetches duplicate values
|
34
|
+
# Album.pluck(:band_name).uniq
|
37
35
|
#
|
38
|
-
# # bad
|
39
|
-
#
|
40
|
-
# instance.assoc.pluck(:id).uniq
|
36
|
+
# # bad - redundantly fetches duplicate values
|
37
|
+
# Album.where(year: 1985).pluck(:band_name).uniq
|
41
38
|
#
|
42
|
-
# # bad
|
43
|
-
#
|
39
|
+
# # bad - redundantly fetches duplicate values
|
40
|
+
# customer.favourites.pluck(:color).uniq
|
44
41
|
#
|
45
42
|
# # good
|
46
|
-
#
|
43
|
+
# Album.distinct.pluck(:band_name)
|
44
|
+
# Album.distinct.where(year: 1985).pluck(:band_name)
|
45
|
+
# customer.favourites.distinct.pluck(:color)
|
47
46
|
#
|
48
47
|
class UniqBeforePluck < Base
|
49
48
|
include ConfigurableEnforcedStyle
|
@@ -51,10 +50,9 @@ module RuboCop
|
|
51
50
|
extend AutoCorrector
|
52
51
|
|
53
52
|
MSG = 'Use `distinct` before `pluck`.'
|
54
|
-
RESTRICT_ON_SEND = %i[uniq
|
53
|
+
RESTRICT_ON_SEND = %i[uniq].freeze
|
55
54
|
NEWLINE = "\n"
|
56
|
-
PATTERN = '[!^block (send (send %<type>s :pluck ...) '
|
57
|
-
'${:uniq :distinct} ...)]'
|
55
|
+
PATTERN = '[!^block (send (send %<type>s :pluck ...) :uniq ...)]'
|
58
56
|
|
59
57
|
def_node_matcher :conservative_node_match,
|
60
58
|
format(PATTERN, type: 'const')
|
@@ -63,13 +61,13 @@ module RuboCop
|
|
63
61
|
format(PATTERN, type: '_')
|
64
62
|
|
65
63
|
def on_send(node)
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
64
|
+
uniq = if style == :conservative
|
65
|
+
conservative_node_match(node)
|
66
|
+
else
|
67
|
+
aggressive_node_match(node)
|
68
|
+
end
|
71
69
|
|
72
|
-
return unless
|
70
|
+
return unless uniq
|
73
71
|
|
74
72
|
add_offense(node.loc.selector) do |corrector|
|
75
73
|
method = node.method_name
|
@@ -81,10 +79,6 @@ module RuboCop
|
|
81
79
|
|
82
80
|
private
|
83
81
|
|
84
|
-
def style_parameter_name
|
85
|
-
'EnforcedStyle'
|
86
|
-
end
|
87
|
-
|
88
82
|
def dot_method_with_whitespace(method, node)
|
89
83
|
range_between(dot_method_begin_pos(method, node),
|
90
84
|
node.loc.selector.end_pos)
|
@@ -6,6 +6,10 @@ module RuboCop
|
|
6
6
|
# This cop identifies places where manually constructed SQL
|
7
7
|
# in `where` can be replaced with `where(attribute: value)`.
|
8
8
|
#
|
9
|
+
# @safety
|
10
|
+
# This cop's autocorrection is unsafe because is may change SQL.
|
11
|
+
# See: https://github.com/rubocop/rubocop-rails/issues/403
|
12
|
+
#
|
9
13
|
# @example
|
10
14
|
# # bad
|
11
15
|
# User.where('name = ?', 'Gabe')
|
@@ -11,16 +11,17 @@ module RuboCop
|
|
11
11
|
# When EnforcedStyle is 'where' then the cop enforces
|
12
12
|
# `where(...).exists?` over `exists?(...)`.
|
13
13
|
#
|
14
|
-
#
|
14
|
+
# @safety
|
15
|
+
# This cop is unsafe for auto-correction because the behavior may change on the following case:
|
15
16
|
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
17
|
+
# [source,ruby]
|
18
|
+
# ----
|
19
|
+
# Author.includes(:articles).where(articles: {id: id}).exists?
|
20
|
+
# #=> Perform `eager_load` behavior (`LEFT JOIN` query) and get result.
|
20
21
|
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
22
|
+
# Author.includes(:articles).exists?(articles: {id: id})
|
23
|
+
# #=> Perform `preload` behavior and `ActiveRecord::StatementInvalid` error occurs.
|
24
|
+
# ----
|
24
25
|
#
|
25
26
|
# @example EnforcedStyle: exists (default)
|
26
27
|
# # bad
|
@@ -1,8 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'mixin/active_record_helper'
|
4
|
+
require_relative 'mixin/active_record_migrations_helper'
|
4
5
|
require_relative 'mixin/enforce_superclass'
|
5
6
|
require_relative 'mixin/index_method'
|
7
|
+
require_relative 'mixin/migrations_helper'
|
6
8
|
require_relative 'mixin/target_rails_version'
|
7
9
|
|
8
10
|
require_relative 'rails/action_filter'
|
@@ -22,12 +24,14 @@ require_relative 'rails/attribute_default_block_value'
|
|
22
24
|
require_relative 'rails/belongs_to'
|
23
25
|
require_relative 'rails/blank'
|
24
26
|
require_relative 'rails/bulk_change_table'
|
27
|
+
require_relative 'rails/compact_blank'
|
25
28
|
require_relative 'rails/content_tag'
|
26
29
|
require_relative 'rails/create_table_with_timestamps'
|
27
30
|
require_relative 'rails/date'
|
28
31
|
require_relative 'rails/default_scope'
|
29
32
|
require_relative 'rails/delegate'
|
30
33
|
require_relative 'rails/delegate_allow_blank'
|
34
|
+
require_relative 'rails/duration_arithmetic'
|
31
35
|
require_relative 'rails/dynamic_find_by'
|
32
36
|
require_relative 'rails/eager_evaluation_log_message'
|
33
37
|
require_relative 'rails/enum_hash'
|
@@ -71,6 +75,7 @@ require_relative 'rails/rake_environment'
|
|
71
75
|
require_relative 'rails/read_write_attribute'
|
72
76
|
require_relative 'rails/redundant_allow_nil'
|
73
77
|
require_relative 'rails/redundant_foreign_key'
|
78
|
+
require_relative 'rails/redundant_presence_validation_on_belongs_to'
|
74
79
|
require_relative 'rails/redundant_receiver_in_with_options'
|
75
80
|
require_relative 'rails/redundant_travel_back'
|
76
81
|
require_relative 'rails/reflection_class_name'
|
@@ -82,9 +87,11 @@ require_relative 'rails/request_referer'
|
|
82
87
|
require_relative 'rails/require_dependency'
|
83
88
|
require_relative 'rails/reversible_migration'
|
84
89
|
require_relative 'rails/reversible_migration_method_definition'
|
90
|
+
require_relative 'rails/root_join_chain'
|
85
91
|
require_relative 'rails/safe_navigation'
|
86
92
|
require_relative 'rails/safe_navigation_with_blank'
|
87
93
|
require_relative 'rails/save_bang'
|
94
|
+
require_relative 'rails/schema_comment'
|
88
95
|
require_relative 'rails/scope_args'
|
89
96
|
require_relative 'rails/short_i18n'
|
90
97
|
require_relative 'rails/skips_model_validations'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.13.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2022-01-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -78,8 +78,10 @@ files:
|
|
78
78
|
- config/obsoletion.yml
|
79
79
|
- lib/rubocop-rails.rb
|
80
80
|
- lib/rubocop/cop/mixin/active_record_helper.rb
|
81
|
+
- lib/rubocop/cop/mixin/active_record_migrations_helper.rb
|
81
82
|
- lib/rubocop/cop/mixin/enforce_superclass.rb
|
82
83
|
- lib/rubocop/cop/mixin/index_method.rb
|
84
|
+
- lib/rubocop/cop/mixin/migrations_helper.rb
|
83
85
|
- lib/rubocop/cop/mixin/target_rails_version.rb
|
84
86
|
- lib/rubocop/cop/rails/action_filter.rb
|
85
87
|
- lib/rubocop/cop/rails/active_record_aliases.rb
|
@@ -98,12 +100,14 @@ files:
|
|
98
100
|
- lib/rubocop/cop/rails/belongs_to.rb
|
99
101
|
- lib/rubocop/cop/rails/blank.rb
|
100
102
|
- lib/rubocop/cop/rails/bulk_change_table.rb
|
103
|
+
- lib/rubocop/cop/rails/compact_blank.rb
|
101
104
|
- lib/rubocop/cop/rails/content_tag.rb
|
102
105
|
- lib/rubocop/cop/rails/create_table_with_timestamps.rb
|
103
106
|
- lib/rubocop/cop/rails/date.rb
|
104
107
|
- lib/rubocop/cop/rails/default_scope.rb
|
105
108
|
- lib/rubocop/cop/rails/delegate.rb
|
106
109
|
- lib/rubocop/cop/rails/delegate_allow_blank.rb
|
110
|
+
- lib/rubocop/cop/rails/duration_arithmetic.rb
|
107
111
|
- lib/rubocop/cop/rails/dynamic_find_by.rb
|
108
112
|
- lib/rubocop/cop/rails/eager_evaluation_log_message.rb
|
109
113
|
- lib/rubocop/cop/rails/enum_hash.rb
|
@@ -147,6 +151,7 @@ files:
|
|
147
151
|
- lib/rubocop/cop/rails/read_write_attribute.rb
|
148
152
|
- lib/rubocop/cop/rails/redundant_allow_nil.rb
|
149
153
|
- lib/rubocop/cop/rails/redundant_foreign_key.rb
|
154
|
+
- lib/rubocop/cop/rails/redundant_presence_validation_on_belongs_to.rb
|
150
155
|
- lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb
|
151
156
|
- lib/rubocop/cop/rails/redundant_travel_back.rb
|
152
157
|
- lib/rubocop/cop/rails/reflection_class_name.rb
|
@@ -158,9 +163,11 @@ files:
|
|
158
163
|
- lib/rubocop/cop/rails/require_dependency.rb
|
159
164
|
- lib/rubocop/cop/rails/reversible_migration.rb
|
160
165
|
- lib/rubocop/cop/rails/reversible_migration_method_definition.rb
|
166
|
+
- lib/rubocop/cop/rails/root_join_chain.rb
|
161
167
|
- lib/rubocop/cop/rails/safe_navigation.rb
|
162
168
|
- lib/rubocop/cop/rails/safe_navigation_with_blank.rb
|
163
169
|
- lib/rubocop/cop/rails/save_bang.rb
|
170
|
+
- lib/rubocop/cop/rails/schema_comment.rb
|
164
171
|
- lib/rubocop/cop/rails/scope_args.rb
|
165
172
|
- lib/rubocop/cop/rails/short_i18n.rb
|
166
173
|
- lib/rubocop/cop/rails/skips_model_validations.rb
|
@@ -188,8 +195,9 @@ metadata:
|
|
188
195
|
homepage_uri: https://docs.rubocop.org/rubocop-rails/
|
189
196
|
changelog_uri: https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md
|
190
197
|
source_code_uri: https://github.com/rubocop/rubocop-rails/
|
191
|
-
documentation_uri: https://docs.rubocop.org/rubocop-rails/2.
|
198
|
+
documentation_uri: https://docs.rubocop.org/rubocop-rails/2.13/
|
192
199
|
bug_tracker_uri: https://github.com/rubocop/rubocop-rails/issues
|
200
|
+
rubygems_mfa_required: 'true'
|
193
201
|
post_install_message:
|
194
202
|
rdoc_options: []
|
195
203
|
require_paths:
|
@@ -205,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
205
213
|
- !ruby/object:Gem::Version
|
206
214
|
version: '0'
|
207
215
|
requirements: []
|
208
|
-
rubygems_version: 3.
|
216
|
+
rubygems_version: 3.3.3
|
209
217
|
signing_key:
|
210
218
|
specification_version: 4
|
211
219
|
summary: Automatic Rails code style checking tool.
|