rubocop-rails 2.9.0 → 2.11.1

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 (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.