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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/config/default.yml +40 -8
  4. data/lib/rubocop/cop/mixin/active_record_migrations_helper.rb +34 -0
  5. data/lib/rubocop/cop/mixin/migrations_helper.rb +26 -0
  6. data/lib/rubocop/cop/rails/active_record_aliases.rb +6 -2
  7. data/lib/rubocop/cop/rails/application_controller.rb +5 -1
  8. data/lib/rubocop/cop/rails/application_job.rb +5 -1
  9. data/lib/rubocop/cop/rails/application_mailer.rb +5 -1
  10. data/lib/rubocop/cop/rails/application_record.rb +6 -1
  11. data/lib/rubocop/cop/rails/arel_star.rb +6 -0
  12. data/lib/rubocop/cop/rails/blank.rb +5 -4
  13. data/lib/rubocop/cop/rails/compact_blank.rb +99 -0
  14. data/lib/rubocop/cop/rails/content_tag.rb +2 -2
  15. data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +2 -7
  16. data/lib/rubocop/cop/rails/duration_arithmetic.rb +98 -0
  17. data/lib/rubocop/cop/rails/dynamic_find_by.rb +4 -0
  18. data/lib/rubocop/cop/rails/find_each.rb +2 -0
  19. data/lib/rubocop/cop/rails/http_positional_arguments.rb +1 -1
  20. data/lib/rubocop/cop/rails/index_by.rb +6 -6
  21. data/lib/rubocop/cop/rails/index_with.rb +6 -6
  22. data/lib/rubocop/cop/rails/inverse_of.rb +17 -1
  23. data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +8 -7
  24. data/lib/rubocop/cop/rails/mailer_name.rb +4 -0
  25. data/lib/rubocop/cop/rails/negate_include.rb +3 -2
  26. data/lib/rubocop/cop/rails/output.rb +4 -0
  27. data/lib/rubocop/cop/rails/pick.rb +7 -0
  28. data/lib/rubocop/cop/rails/pluck_id.rb +3 -0
  29. data/lib/rubocop/cop/rails/pluck_in_where.rb +7 -6
  30. data/lib/rubocop/cop/rails/rake_environment.rb +5 -0
  31. data/lib/rubocop/cop/rails/read_write_attribute.rb +51 -14
  32. data/lib/rubocop/cop/rails/redundant_presence_validation_on_belongs_to.rb +257 -0
  33. data/lib/rubocop/cop/rails/reflection_class_name.rb +4 -2
  34. data/lib/rubocop/cop/rails/relative_date_constant.rb +3 -0
  35. data/lib/rubocop/cop/rails/reversible_migration.rb +5 -3
  36. data/lib/rubocop/cop/rails/reversible_migration_method_definition.rb +2 -10
  37. data/lib/rubocop/cop/rails/root_join_chain.rb +72 -0
  38. data/lib/rubocop/cop/rails/safe_navigation_with_blank.rb +12 -3
  39. data/lib/rubocop/cop/rails/save_bang.rb +19 -0
  40. data/lib/rubocop/cop/rails/schema_comment.rb +104 -0
  41. data/lib/rubocop/cop/rails/squished_sql_heredocs.rb +4 -2
  42. data/lib/rubocop/cop/rails/time_zone.rb +3 -0
  43. data/lib/rubocop/cop/rails/uniq_before_pluck.rb +29 -35
  44. data/lib/rubocop/cop/rails/unused_ignored_columns.rb +2 -0
  45. data/lib/rubocop/cop/rails/where_equals.rb +4 -0
  46. data/lib/rubocop/cop/rails/where_exists.rb +9 -8
  47. data/lib/rubocop/cop/rails_cops.rb +7 -0
  48. data/lib/rubocop/rails/version.rb +1 -1
  49. 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
- # While the safe navigation operator is generally a good idea, when
10
- # checking `foo&.blank?` in a conditional, `foo` being `nil` will actually
11
- # do the opposite of what the author intends.
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
- # Some SQL syntax (e.g. PostgreSQL comments and functions) requires newlines
9
- # to be preserved in order to work, thus auto-correction for this cop is not safe.
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
@@ -14,6 +14,9 @@ module RuboCop
14
14
  # When EnforcedStyle is 'flexible' then it's also allowed
15
15
  # to use `Time#in_time_zone`.
16
16
  #
17
+ # @safety
18
+ # This cop's autocorrection is unsafe because it may change handling time.
19
+ #
17
20
  # @example
18
21
  # # bad
19
22
  # Time.now
@@ -3,47 +3,46 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Rails
6
- # Prefer the use of distinct, before pluck instead of after.
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 within
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 distinct are added as offenses.
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
- # This cop is unsafe because the behavior may change depending on the
22
- # database collation.
23
- # Autocorrect is disabled by default for this cop since it may generate
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
- # Model.pluck(:id).uniq
26
+ # # bad - redundantly fetches duplicate values
27
+ # Album.pluck(:band_name).uniq
29
28
  #
30
29
  # # good
31
- # Model.distinct.pluck(:id)
30
+ # Album.distinct.pluck(:band_name)
32
31
  #
33
32
  # @example EnforcedStyle: aggressive
34
- # # bad
35
- # # this will return a Relation that pluck is called on
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
- # # an association on an instance will return a CollectionProxy
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
- # Model.pluck(:id).uniq
39
+ # # bad - redundantly fetches duplicate values
40
+ # customer.favourites.pluck(:color).uniq
44
41
  #
45
42
  # # good
46
- # Model.distinct.pluck(:id)
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 distinct pluck].freeze
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
- method = if style == :conservative
67
- conservative_node_match(node)
68
- else
69
- aggressive_node_match(node)
70
- end
64
+ uniq = if style == :conservative
65
+ conservative_node_match(node)
66
+ else
67
+ aggressive_node_match(node)
68
+ end
71
69
 
72
- return unless method
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)
@@ -61,6 +61,8 @@ module RuboCop
61
61
 
62
62
  def table(node)
63
63
  klass = class_node(node)
64
+ return unless klass
65
+
64
66
  schema.table_by(name: table_name(klass))
65
67
  end
66
68
  end
@@ -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
- # This cop is unsafe for auto-correction because the behavior may change on the following case:
14
+ # @safety
15
+ # This cop is unsafe for auto-correction because the behavior may change on the following case:
15
16
  #
16
- # [source,ruby]
17
- # ----
18
- # Author.includes(:articles).where(articles: {id: id}).exists?
19
- # #=> Perform `eager_load` behavior (`LEFT JOIN` query) and get result.
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
- # Author.includes(:articles).exists?(articles: {id: id})
22
- # #=> Perform `preload` behavior and `ActiveRecord::StatementInvalid` error occurs.
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'
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module Rails
5
5
  # This module holds the RuboCop Rails version information.
6
6
  module Version
7
- STRING = '2.12.3'
7
+ STRING = '2.13.2'
8
8
 
9
9
  def self.document_version
10
10
  STRING.match('\d+\.\d+').to_s
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.12.3
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: 2021-10-06 00:00:00.000000000 Z
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.12/
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.2.22
216
+ rubygems_version: 3.3.3
209
217
  signing_key:
210
218
  specification_version: 4
211
219
  summary: Automatic Rails code style checking tool.