rubocop-rails 2.9.0 → 2.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +4 -4
  4. data/config/default.yml +111 -5
  5. data/config/obsoletion.yml +7 -0
  6. data/lib/rubocop/cop/mixin/active_record_helper.rb +11 -0
  7. data/lib/rubocop/cop/rails/add_column_index.rb +64 -0
  8. data/lib/rubocop/cop/rails/attribute_default_block_value.rb +1 -1
  9. data/lib/rubocop/cop/rails/belongs_to.rb +1 -1
  10. data/lib/rubocop/cop/rails/blank.rb +4 -0
  11. data/lib/rubocop/cop/rails/content_tag.rb +18 -3
  12. data/lib/rubocop/cop/rails/date.rb +17 -6
  13. data/lib/rubocop/cop/rails/dynamic_find_by.rb +4 -2
  14. data/lib/rubocop/cop/rails/eager_evaluation_log_message.rb +78 -0
  15. data/lib/rubocop/cop/rails/environment_comparison.rb +1 -2
  16. data/lib/rubocop/cop/rails/environment_variable_access.rb +67 -0
  17. data/lib/rubocop/cop/rails/expanded_date_range.rb +86 -0
  18. data/lib/rubocop/cop/rails/file_path.rb +2 -4
  19. data/lib/rubocop/cop/rails/find_by.rb +26 -11
  20. data/lib/rubocop/cop/rails/find_each.rb +6 -7
  21. data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +34 -4
  22. data/lib/rubocop/cop/rails/helper_instance_variable.rb +27 -1
  23. data/lib/rubocop/cop/rails/http_positional_arguments.rb +8 -1
  24. data/lib/rubocop/cop/rails/http_status.rb +12 -3
  25. data/lib/rubocop/cop/rails/i18n_locale_assignment.rb +37 -0
  26. data/lib/rubocop/cop/rails/inverse_of.rb +1 -2
  27. data/lib/rubocop/cop/rails/link_to_blank.rb +5 -1
  28. data/lib/rubocop/cop/rails/reflection_class_name.rb +14 -1
  29. data/lib/rubocop/cop/rails/relative_date_constant.rb +18 -19
  30. data/lib/rubocop/cop/rails/require_dependency.rb +38 -0
  31. data/lib/rubocop/cop/rails/reversible_migration.rb +1 -1
  32. data/lib/rubocop/cop/rails/reversible_migration_method_definition.rb +75 -0
  33. data/lib/rubocop/cop/rails/safe_navigation.rb +20 -2
  34. data/lib/rubocop/cop/rails/time_zone.rb +22 -22
  35. data/lib/rubocop/cop/rails/time_zone_assignment.rb +37 -0
  36. data/lib/rubocop/cop/rails/unknown_env.rb +1 -1
  37. data/lib/rubocop/cop/rails/unused_ignored_columns.rb +69 -0
  38. data/lib/rubocop/cop/rails/where_equals.rb +6 -2
  39. data/lib/rubocop/cop/rails/where_exists.rb +11 -0
  40. data/lib/rubocop/cop/rails/where_not.rb +5 -1
  41. data/lib/rubocop/cop/rails_cops.rb +9 -0
  42. data/lib/rubocop/rails.rb +2 -0
  43. data/lib/rubocop/rails/schema_loader/schema.rb +2 -4
  44. data/lib/rubocop/rails/version.rb +1 -1
  45. metadata +21 -11
@@ -44,9 +44,22 @@ module RuboCop
44
44
  RESTRICT_ON_SEND = %i[try try!].freeze
45
45
 
46
46
  def_node_matcher :try_call, <<~PATTERN
47
- (send !nil? ${:try :try!} $_ ...)
47
+ (send _ ${:try :try!} $_ ...)
48
48
  PATTERN
49
49
 
50
+ # Monkey patching for `Style/RedundantSelf` of RuboCop core.
51
+ # rubocop:disable Style/ClassAndModuleChildren
52
+ class Style::RedundantSelf
53
+ def self.autocorrect_incompatible_with
54
+ [Rails::SafeNavigation]
55
+ end
56
+ end
57
+ # rubocop:enable Style/ClassAndModuleChildren
58
+
59
+ def self.autocorrect_incompatible_with
60
+ [Style::RedundantSelf]
61
+ end
62
+
50
63
  def on_send(node)
51
64
  try_call(node) do |try_method, dispatch|
52
65
  return if try_method == :try && !cop_config['ConvertTry']
@@ -64,7 +77,12 @@ module RuboCop
64
77
  method_node, *params = *node.arguments
65
78
  method = method_node.source[1..-1]
66
79
 
67
- range = range_between(node.loc.dot.begin_pos, node.loc.expression.end_pos)
80
+ range = if node.receiver
81
+ range_between(node.loc.dot.begin_pos, node.loc.expression.end_pos)
82
+ else
83
+ corrector.insert_before(node, 'self')
84
+ node
85
+ end
68
86
 
69
87
  corrector.replace(range, replacement(method, params))
70
88
  end
@@ -8,40 +8,33 @@ module RuboCop
8
8
  # Built on top of Ruby on Rails style guide (https://rails.rubystyle.guide#time)
9
9
  # and the article http://danilenko.org/2012/7/6/rails_timezones/
10
10
  #
11
- # Two styles are supported for this cop. When EnforcedStyle is 'strict'
12
- # then only use of Time.zone is allowed.
11
+ # Two styles are supported for this cop. When `EnforcedStyle` is 'strict'
12
+ # then only use of `Time.zone` is allowed.
13
13
  #
14
14
  # When EnforcedStyle is 'flexible' then it's also allowed
15
- # to use Time.in_time_zone.
16
- #
17
- # @example EnforcedStyle: strict
18
- # # `strict` means that `Time` should be used with `zone`.
15
+ # to use `Time#in_time_zone`.
19
16
  #
17
+ # @example
20
18
  # # bad
21
19
  # Time.now
22
- # Time.parse('2015-03-02 19:05:37')
23
- #
24
- # # bad
25
- # Time.current
26
- # Time.at(timestamp).in_time_zone
20
+ # Time.parse('2015-03-02T19:05:37')
27
21
  #
28
22
  # # good
23
+ # Time.current
29
24
  # Time.zone.now
30
- # Time.zone.parse('2015-03-02 19:05:37')
25
+ # Time.zone.parse('2015-03-02T19:05:37')
26
+ # Time.zone.parse('2015-03-02T19:05:37Z') # Respect ISO 8601 format with timezone specifier.
31
27
  #
32
- # @example EnforcedStyle: flexible (default)
33
- # # `flexible` allows usage of `in_time_zone` instead of `zone`.
28
+ # @example EnforcedStyle: strict
29
+ # # `strict` means that `Time` should be used with `zone`.
34
30
  #
35
31
  # # bad
36
- # Time.now
37
- # Time.parse('2015-03-02 19:05:37')
32
+ # Time.at(timestamp).in_time_zone
38
33
  #
39
- # # good
40
- # Time.zone.now
41
- # Time.zone.parse('2015-03-02 19:05:37')
34
+ # @example EnforcedStyle: flexible (default)
35
+ # # `flexible` allows usage of `in_time_zone` instead of `zone`.
42
36
  #
43
37
  # # good
44
- # Time.current
45
38
  # Time.at(timestamp).in_time_zone
46
39
  class TimeZone < Base
47
40
  include ConfigurableEnforcedStyle
@@ -58,11 +51,13 @@ module RuboCop
58
51
 
59
52
  GOOD_METHODS = %i[zone zone_default find_zone find_zone!].freeze
60
53
 
61
- DANGEROUS_METHODS = %i[now local new parse at current].freeze
54
+ DANGEROUS_METHODS = %i[now local new parse at].freeze
62
55
 
63
56
  ACCEPTED_METHODS = %i[in_time_zone utc getlocal xmlschema iso8601
64
57
  jisx0301 rfc3339 httpdate to_i to_f].freeze
65
58
 
59
+ TIMEZONE_SPECIFIER = /[A-z]/.freeze
60
+
66
61
  def on_const(node)
67
62
  mod, klass = *node
68
63
  # we should only check core classes
@@ -116,9 +111,10 @@ module RuboCop
116
111
  end
117
112
 
118
113
  def check_time_node(klass, node)
114
+ return if attach_timezone_specifier?(node.first_argument)
115
+
119
116
  chain = extract_method_chain(node)
120
117
  return if not_danger_chain?(chain)
121
-
122
118
  return check_localtime(node) if need_check_localtime?(chain)
123
119
 
124
120
  method_name = (chain & DANGEROUS_METHODS).join('.')
@@ -132,6 +128,10 @@ module RuboCop
132
128
  end
133
129
  end
134
130
 
131
+ def attach_timezone_specifier?(date)
132
+ date.respond_to?(:value) && TIMEZONE_SPECIFIER.match?(date.value.to_s[-1])
133
+ end
134
+
135
135
  def build_message(klass, method_name, node)
136
136
  if flexible?
137
137
  format(
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Rails
6
+ # This cop checks for the use of `Time.zone=` method.
7
+ #
8
+ # The `zone` attribute persists for the rest of the Ruby runtime, potentially causing
9
+ # unexpected behavior at a later time.
10
+ # Using `Time.use_zone` ensures the code passed in the block is the only place Time.zone is affected.
11
+ # It eliminates the possibility of a `zone` sticking around longer than intended.
12
+ #
13
+ # @example
14
+ # # bad
15
+ # Time.zone = 'EST'
16
+ #
17
+ # # good
18
+ # Time.use_zone('EST') do
19
+ # end
20
+ #
21
+ class TimeZoneAssignment < Base
22
+ MSG = 'Use `Time.use_zone` with block instead of `Time.zone=`.'
23
+ RESTRICT_ON_SEND = %i[zone=].freeze
24
+
25
+ def_node_matcher :time_zone_assignement?, <<~PATTERN
26
+ (send (const nil? :Time) :zone= ...)
27
+ PATTERN
28
+
29
+ def on_send(node)
30
+ return unless time_zone_assignement?(node)
31
+
32
+ add_offense(node)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -62,7 +62,7 @@ module RuboCop
62
62
  # DidYouMean::SpellChecker is not available in all versions of Ruby,
63
63
  # and even on versions where it *is* available (>= 2.3), it is not
64
64
  # always required correctly. So we do a feature check first. See:
65
- # https://github.com/rubocop-hq/rubocop/issues/7979
65
+ # https://github.com/rubocop/rubocop/issues/7979
66
66
  similar_names = if defined?(DidYouMean::SpellChecker)
67
67
  spell_checker = DidYouMean::SpellChecker.new(dictionary: environments)
68
68
  spell_checker.correct(name)
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Rails
6
+ # This cop suggests you remove a column that does not exist in the schema from `ignored_columns`.
7
+ # `ignored_columns` is necessary to drop a column from RDBMS, but you don't need it after the migration
8
+ # to drop the column. You avoid forgetting to remove `ignored_columns` by this cop.
9
+ #
10
+ # @example
11
+ # # bad
12
+ # class User < ApplicationRecord
13
+ # self.ignored_columns = [:already_removed_column]
14
+ # end
15
+ #
16
+ # # good
17
+ # class User < ApplicationRecord
18
+ # self.ignored_columns = [:still_existing_column]
19
+ # end
20
+ #
21
+ class UnusedIgnoredColumns < Base
22
+ include ActiveRecordHelper
23
+
24
+ MSG = 'Remove `%<column_name>s` from `ignored_columns` because the column does not exist.'
25
+ RESTRICT_ON_SEND = %i[ignored_columns=].freeze
26
+
27
+ def_node_matcher :ignored_columns, <<~PATTERN
28
+ (send self :ignored_columns= $array)
29
+ PATTERN
30
+
31
+ def_node_matcher :column_name, <<~PATTERN
32
+ ({str sym} $_)
33
+ PATTERN
34
+
35
+ def on_send(node)
36
+ return unless (columns = ignored_columns(node))
37
+ return unless schema
38
+
39
+ table = table(node)
40
+ return unless table
41
+
42
+ columns.children.each do |column_node|
43
+ check_column_existence(column_node, table)
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def check_column_existence(column_node, table)
50
+ column_name = column_name(column_node)
51
+ return unless column_name
52
+ return if table.with_column?(name: column_name.to_s)
53
+
54
+ message = format(MSG, column_name: column_name)
55
+ add_offense(column_node, message: message)
56
+ end
57
+
58
+ def class_node(node)
59
+ node.each_ancestor.find(&:class_type?)
60
+ end
61
+
62
+ def table(node)
63
+ klass = class_node(node)
64
+ schema.table_by(name: table_name(klass))
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -13,11 +13,13 @@ module RuboCop
13
13
  # User.where('name IS NULL')
14
14
  # User.where('name IN (?)', ['john', 'jane'])
15
15
  # User.where('name IN (:names)', names: ['john', 'jane'])
16
+ # User.where('users.name = :name', name: 'Gabe')
16
17
  #
17
18
  # # good
18
19
  # User.where(name: 'Gabe')
19
20
  # User.where(name: nil)
20
21
  # User.where(name: ['john', 'jane'])
22
+ # User.where(users: { name: 'Gabe' })
21
23
  class WhereEquals < Base
22
24
  include RangeHelp
23
25
  extend AutoCorrector
@@ -68,7 +70,7 @@ module RuboCop
68
70
  when EQ_ANONYMOUS_RE, IN_ANONYMOUS_RE
69
71
  value_node.source
70
72
  when EQ_NAMED_RE, IN_NAMED_RE
71
- return unless value_node.hash_type?
73
+ return unless value_node&.hash_type?
72
74
 
73
75
  pair = value_node.pairs.find { |p| p.key.value.to_sym == Regexp.last_match(2).to_sym }
74
76
  pair.value.source
@@ -83,7 +85,9 @@ module RuboCop
83
85
 
84
86
  def build_good_method(column, value)
85
87
  if column.include?('.')
86
- "where('#{column}' => #{value})"
88
+ table, column = column.split('.')
89
+
90
+ "where(#{table}: { #{column}: #{value} })"
87
91
  else
88
92
  "where(#{column}: #{value})"
89
93
  end
@@ -11,6 +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:
15
+ #
16
+ # [source,ruby]
17
+ # ----
18
+ # Author.includes(:articles).where(articles: {id: id}).exists?
19
+ # #=> Perform `eager_load` behavior (`LEFT JOIN` query) and get result.
20
+ #
21
+ # Author.includes(:articles).exists?(articles: {id: id})
22
+ # #=> Perform `preload` behavior and `ActiveRecord::StatementInvalid` error occurs.
23
+ # ----
24
+ #
14
25
  # @example EnforcedStyle: exists (default)
15
26
  # # bad
16
27
  # User.where(name: 'john').exists?
@@ -15,11 +15,13 @@ module RuboCop
15
15
  # User.where('name IS NOT NULL')
16
16
  # User.where('name NOT IN (?)', ['john', 'jane'])
17
17
  # User.where('name NOT IN (:names)', names: ['john', 'jane'])
18
+ # User.where('users.name != :name', name: 'Gabe')
18
19
  #
19
20
  # # good
20
21
  # User.where.not(name: 'Gabe')
21
22
  # User.where.not(name: nil)
22
23
  # User.where.not(name: ['john', 'jane'])
24
+ # User.where.not(users: { name: 'Gabe' })
23
25
  #
24
26
  class WhereNot < Base
25
27
  include RangeHelp
@@ -86,7 +88,9 @@ module RuboCop
86
88
 
87
89
  def build_good_method(column, value)
88
90
  if column.include?('.')
89
- "where.not('#{column}' => #{value})"
91
+ table, column = column.split('.')
92
+
93
+ "where.not(#{table}: { #{column}: #{value} })"
90
94
  else
91
95
  "where.not(#{column}: #{value})"
92
96
  end
@@ -10,6 +10,7 @@ require_relative 'rails/active_record_aliases'
10
10
  require_relative 'rails/active_record_callbacks_order'
11
11
  require_relative 'rails/active_record_override'
12
12
  require_relative 'rails/active_support_aliases'
13
+ require_relative 'rails/add_column_index'
13
14
  require_relative 'rails/after_commit_override'
14
15
  require_relative 'rails/application_controller'
15
16
  require_relative 'rails/application_job'
@@ -28,10 +29,13 @@ require_relative 'rails/default_scope'
28
29
  require_relative 'rails/delegate'
29
30
  require_relative 'rails/delegate_allow_blank'
30
31
  require_relative 'rails/dynamic_find_by'
32
+ require_relative 'rails/eager_evaluation_log_message'
31
33
  require_relative 'rails/enum_hash'
32
34
  require_relative 'rails/enum_uniqueness'
33
35
  require_relative 'rails/environment_comparison'
36
+ require_relative 'rails/environment_variable_access'
34
37
  require_relative 'rails/exit'
38
+ require_relative 'rails/expanded_date_range'
35
39
  require_relative 'rails/file_path'
36
40
  require_relative 'rails/find_by'
37
41
  require_relative 'rails/find_by_id'
@@ -41,6 +45,7 @@ require_relative 'rails/has_many_or_has_one_dependent'
41
45
  require_relative 'rails/helper_instance_variable'
42
46
  require_relative 'rails/http_positional_arguments'
43
47
  require_relative 'rails/http_status'
48
+ require_relative 'rails/i18n_locale_assignment'
44
49
  require_relative 'rails/ignored_skip_action_filter_option'
45
50
  require_relative 'rails/index_by'
46
51
  require_relative 'rails/index_with'
@@ -73,7 +78,9 @@ require_relative 'rails/relative_date_constant'
73
78
  require_relative 'rails/render_inline'
74
79
  require_relative 'rails/render_plain_text'
75
80
  require_relative 'rails/request_referer'
81
+ require_relative 'rails/require_dependency'
76
82
  require_relative 'rails/reversible_migration'
83
+ require_relative 'rails/reversible_migration_method_definition'
77
84
  require_relative 'rails/safe_navigation'
78
85
  require_relative 'rails/safe_navigation_with_blank'
79
86
  require_relative 'rails/save_bang'
@@ -82,9 +89,11 @@ require_relative 'rails/short_i18n'
82
89
  require_relative 'rails/skips_model_validations'
83
90
  require_relative 'rails/squished_sql_heredocs'
84
91
  require_relative 'rails/time_zone'
92
+ require_relative 'rails/time_zone_assignment'
85
93
  require_relative 'rails/uniq_before_pluck'
86
94
  require_relative 'rails/unique_validation_without_index'
87
95
  require_relative 'rails/unknown_env'
96
+ require_relative 'rails/unused_ignored_columns'
88
97
  require_relative 'rails/validation'
89
98
  require_relative 'rails/where_equals'
90
99
  require_relative 'rails/where_exists'
data/lib/rubocop/rails.rb CHANGED
@@ -8,5 +8,7 @@ module RuboCop
8
8
  CONFIG = YAML.safe_load(CONFIG_DEFAULT.read).freeze
9
9
 
10
10
  private_constant(:CONFIG_DEFAULT, :PROJECT_ROOT)
11
+
12
+ ::RuboCop::ConfigObsoletion.files << PROJECT_ROOT.join('config', 'obsoletion.yml')
11
13
  end
12
14
  end
@@ -114,7 +114,7 @@ module RuboCop
114
114
  attr_reader :name, :type, :not_null
115
115
 
116
116
  def initialize(node)
117
- @name = node.first_argument.value
117
+ @name = node.first_argument.str_content
118
118
  @type = node.method_name
119
119
  @not_null = nil
120
120
 
@@ -128,9 +128,7 @@ module RuboCop
128
128
  return unless pairs.hash_type?
129
129
 
130
130
  pairs.each_pair do |k, v|
131
- if k.value == :null
132
- @not_null = v.true_type? ? false : true
133
- end
131
+ @not_null = !v.true_type? if k.value == :null
134
132
  end
135
133
  end
136
134
  end
@@ -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.9.0'
7
+ STRING = '2.11.1'
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.9.0
4
+ version: 2.11.1
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: 2020-12-08 00:00:00.000000000 Z
13
+ date: 2021-06-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -46,7 +46,7 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.90.0
49
+ version: 1.7.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '2.0'
@@ -56,7 +56,7 @@ dependencies:
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.90.0
59
+ version: 1.7.0
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '2.0'
@@ -74,6 +74,7 @@ files:
74
74
  - README.md
75
75
  - bin/setup
76
76
  - config/default.yml
77
+ - config/obsoletion.yml
77
78
  - lib/rubocop-rails.rb
78
79
  - lib/rubocop/cop/mixin/active_record_helper.rb
79
80
  - lib/rubocop/cop/mixin/enforce_superclass.rb
@@ -84,6 +85,7 @@ files:
84
85
  - lib/rubocop/cop/rails/active_record_callbacks_order.rb
85
86
  - lib/rubocop/cop/rails/active_record_override.rb
86
87
  - lib/rubocop/cop/rails/active_support_aliases.rb
88
+ - lib/rubocop/cop/rails/add_column_index.rb
87
89
  - lib/rubocop/cop/rails/after_commit_override.rb
88
90
  - lib/rubocop/cop/rails/application_controller.rb
89
91
  - lib/rubocop/cop/rails/application_job.rb
@@ -102,10 +104,13 @@ files:
102
104
  - lib/rubocop/cop/rails/delegate.rb
103
105
  - lib/rubocop/cop/rails/delegate_allow_blank.rb
104
106
  - lib/rubocop/cop/rails/dynamic_find_by.rb
107
+ - lib/rubocop/cop/rails/eager_evaluation_log_message.rb
105
108
  - lib/rubocop/cop/rails/enum_hash.rb
106
109
  - lib/rubocop/cop/rails/enum_uniqueness.rb
107
110
  - lib/rubocop/cop/rails/environment_comparison.rb
111
+ - lib/rubocop/cop/rails/environment_variable_access.rb
108
112
  - lib/rubocop/cop/rails/exit.rb
113
+ - lib/rubocop/cop/rails/expanded_date_range.rb
109
114
  - lib/rubocop/cop/rails/file_path.rb
110
115
  - lib/rubocop/cop/rails/find_by.rb
111
116
  - lib/rubocop/cop/rails/find_by_id.rb
@@ -115,6 +120,7 @@ files:
115
120
  - lib/rubocop/cop/rails/helper_instance_variable.rb
116
121
  - lib/rubocop/cop/rails/http_positional_arguments.rb
117
122
  - lib/rubocop/cop/rails/http_status.rb
123
+ - lib/rubocop/cop/rails/i18n_locale_assignment.rb
118
124
  - lib/rubocop/cop/rails/ignored_skip_action_filter_option.rb
119
125
  - lib/rubocop/cop/rails/index_by.rb
120
126
  - lib/rubocop/cop/rails/index_with.rb
@@ -147,7 +153,9 @@ files:
147
153
  - lib/rubocop/cop/rails/render_inline.rb
148
154
  - lib/rubocop/cop/rails/render_plain_text.rb
149
155
  - lib/rubocop/cop/rails/request_referer.rb
156
+ - lib/rubocop/cop/rails/require_dependency.rb
150
157
  - lib/rubocop/cop/rails/reversible_migration.rb
158
+ - lib/rubocop/cop/rails/reversible_migration_method_definition.rb
151
159
  - lib/rubocop/cop/rails/safe_navigation.rb
152
160
  - lib/rubocop/cop/rails/safe_navigation_with_blank.rb
153
161
  - lib/rubocop/cop/rails/save_bang.rb
@@ -156,9 +164,11 @@ files:
156
164
  - lib/rubocop/cop/rails/skips_model_validations.rb
157
165
  - lib/rubocop/cop/rails/squished_sql_heredocs.rb
158
166
  - lib/rubocop/cop/rails/time_zone.rb
167
+ - lib/rubocop/cop/rails/time_zone_assignment.rb
159
168
  - lib/rubocop/cop/rails/uniq_before_pluck.rb
160
169
  - lib/rubocop/cop/rails/unique_validation_without_index.rb
161
170
  - lib/rubocop/cop/rails/unknown_env.rb
171
+ - lib/rubocop/cop/rails/unused_ignored_columns.rb
162
172
  - lib/rubocop/cop/rails/validation.rb
163
173
  - lib/rubocop/cop/rails/where_equals.rb
164
174
  - lib/rubocop/cop/rails/where_exists.rb
@@ -169,15 +179,15 @@ files:
169
179
  - lib/rubocop/rails/schema_loader.rb
170
180
  - lib/rubocop/rails/schema_loader/schema.rb
171
181
  - lib/rubocop/rails/version.rb
172
- homepage: https://github.com/rubocop-hq/rubocop-rails
182
+ homepage: https://github.com/rubocop/rubocop-rails
173
183
  licenses:
174
184
  - MIT
175
185
  metadata:
176
186
  homepage_uri: https://docs.rubocop.org/rubocop-rails/
177
- changelog_uri: https://github.com/rubocop-hq/rubocop-rails/blob/master/CHANGELOG.md
178
- source_code_uri: https://github.com/rubocop-hq/rubocop-rails/
179
- documentation_uri: https://docs.rubocop.org/rubocop-rails/2.9/
180
- bug_tracker_uri: https://github.com/rubocop-hq/rubocop-rails/issues
187
+ changelog_uri: https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md
188
+ source_code_uri: https://github.com/rubocop/rubocop-rails/
189
+ documentation_uri: https://docs.rubocop.org/rubocop-rails/2.11/
190
+ bug_tracker_uri: https://github.com/rubocop/rubocop-rails/issues
181
191
  post_install_message:
182
192
  rdoc_options: []
183
193
  require_paths:
@@ -186,14 +196,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
196
  requirements:
187
197
  - - ">="
188
198
  - !ruby/object:Gem::Version
189
- version: 2.4.0
199
+ version: 2.5.0
190
200
  required_rubygems_version: !ruby/object:Gem::Requirement
191
201
  requirements:
192
202
  - - ">="
193
203
  - !ruby/object:Gem::Version
194
204
  version: '0'
195
205
  requirements: []
196
- rubygems_version: 3.2.0.rc.2
206
+ rubygems_version: 3.2.18
197
207
  signing_key:
198
208
  specification_version: 4
199
209
  summary: Automatic Rails code style checking tool.