rubocop-rails 2.8.1 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -0
  3. data/config/default.yml +33 -1
  4. data/lib/rubocop/cop/mixin/active_record_helper.rb +4 -3
  5. data/lib/rubocop/cop/mixin/enforce_superclass.rb +40 -0
  6. data/lib/rubocop/cop/mixin/index_method.rb +8 -11
  7. data/lib/rubocop/cop/rails/action_filter.rb +10 -14
  8. data/lib/rubocop/cop/rails/active_record_aliases.rb +13 -17
  9. data/lib/rubocop/cop/rails/active_record_callbacks_order.rb +17 -12
  10. data/lib/rubocop/cop/rails/active_record_override.rb +1 -1
  11. data/lib/rubocop/cop/rails/active_support_aliases.rb +12 -21
  12. data/lib/rubocop/cop/rails/after_commit_override.rb +1 -1
  13. data/lib/rubocop/cop/rails/application_controller.rb +3 -7
  14. data/lib/rubocop/cop/rails/application_job.rb +2 -1
  15. data/lib/rubocop/cop/rails/application_mailer.rb +2 -7
  16. data/lib/rubocop/cop/rails/application_record.rb +2 -7
  17. data/lib/rubocop/cop/rails/arel_star.rb +41 -0
  18. data/lib/rubocop/cop/rails/assert_not.rb +8 -10
  19. data/lib/rubocop/cop/rails/attribute_default_block_value.rb +90 -0
  20. data/lib/rubocop/cop/rails/belongs_to.rb +9 -18
  21. data/lib/rubocop/cop/rails/blank.rb +27 -27
  22. data/lib/rubocop/cop/rails/bulk_change_table.rb +1 -1
  23. data/lib/rubocop/cop/rails/content_tag.rb +16 -16
  24. data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +2 -1
  25. data/lib/rubocop/cop/rails/date.rb +10 -11
  26. data/lib/rubocop/cop/rails/default_scope.rb +11 -4
  27. data/lib/rubocop/cop/rails/delegate.rb +9 -9
  28. data/lib/rubocop/cop/rails/delegate_allow_blank.rb +7 -8
  29. data/lib/rubocop/cop/rails/dynamic_find_by.rb +12 -11
  30. data/lib/rubocop/cop/rails/enum_hash.rb +11 -10
  31. data/lib/rubocop/cop/rails/enum_uniqueness.rb +2 -1
  32. data/lib/rubocop/cop/rails/environment_comparison.rb +18 -14
  33. data/lib/rubocop/cop/rails/exit.rb +4 -10
  34. data/lib/rubocop/cop/rails/file_path.rb +4 -3
  35. data/lib/rubocop/cop/rails/find_by.rb +13 -13
  36. data/lib/rubocop/cop/rails/find_by_id.rb +12 -21
  37. data/lib/rubocop/cop/rails/find_each.rb +16 -14
  38. data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +3 -2
  39. data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +3 -2
  40. data/lib/rubocop/cop/rails/helper_instance_variable.rb +2 -2
  41. data/lib/rubocop/cop/rails/http_positional_arguments.rb +19 -21
  42. data/lib/rubocop/cop/rails/http_status.rb +7 -9
  43. data/lib/rubocop/cop/rails/ignored_skip_action_filter_option.rb +8 -6
  44. data/lib/rubocop/cop/rails/index_by.rb +2 -1
  45. data/lib/rubocop/cop/rails/index_with.rb +2 -1
  46. data/lib/rubocop/cop/rails/inquiry.rb +4 -3
  47. data/lib/rubocop/cop/rails/inverse_of.rb +3 -2
  48. data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +17 -15
  49. data/lib/rubocop/cop/rails/link_to_blank.rb +20 -22
  50. data/lib/rubocop/cop/rails/mailer_name.rb +19 -13
  51. data/lib/rubocop/cop/rails/match_route.rb +14 -13
  52. data/lib/rubocop/cop/rails/negate_include.rb +10 -8
  53. data/lib/rubocop/cop/rails/not_null_column.rb +2 -1
  54. data/lib/rubocop/cop/rails/order_by_id.rb +1 -2
  55. data/lib/rubocop/cop/rails/output.rb +5 -2
  56. data/lib/rubocop/cop/rails/output_safety.rb +3 -2
  57. data/lib/rubocop/cop/rails/pick.rb +14 -12
  58. data/lib/rubocop/cop/rails/pluck.rb +6 -9
  59. data/lib/rubocop/cop/rails/pluck_id.rb +4 -6
  60. data/lib/rubocop/cop/rails/pluck_in_where.rb +7 -7
  61. data/lib/rubocop/cop/rails/pluralization_grammar.rb +10 -14
  62. data/lib/rubocop/cop/rails/presence.rb +12 -13
  63. data/lib/rubocop/cop/rails/present.rb +30 -24
  64. data/lib/rubocop/cop/rails/rake_environment.rb +8 -10
  65. data/lib/rubocop/cop/rails/read_write_attribute.rb +12 -11
  66. data/lib/rubocop/cop/rails/redundant_allow_nil.rb +29 -31
  67. data/lib/rubocop/cop/rails/redundant_foreign_key.rb +9 -12
  68. data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +11 -10
  69. data/lib/rubocop/cop/rails/reflection_class_name.rb +3 -2
  70. data/lib/rubocop/cop/rails/refute_methods.rb +9 -10
  71. data/lib/rubocop/cop/rails/relative_date_constant.rb +16 -8
  72. data/lib/rubocop/cop/rails/render_inline.rb +2 -1
  73. data/lib/rubocop/cop/rails/render_plain_text.rb +9 -14
  74. data/lib/rubocop/cop/rails/request_referer.rb +7 -7
  75. data/lib/rubocop/cop/rails/reversible_migration.rb +2 -6
  76. data/lib/rubocop/cop/rails/safe_navigation.rb +11 -10
  77. data/lib/rubocop/cop/rails/safe_navigation_with_blank.rb +5 -10
  78. data/lib/rubocop/cop/rails/save_bang.rb +17 -20
  79. data/lib/rubocop/cop/rails/scope_args.rb +2 -1
  80. data/lib/rubocop/cop/rails/short_i18n.rb +7 -9
  81. data/lib/rubocop/cop/rails/skips_model_validations.rb +4 -4
  82. data/lib/rubocop/cop/rails/squished_sql_heredocs.rb +5 -6
  83. data/lib/rubocop/cop/rails/time_zone.rb +22 -20
  84. data/lib/rubocop/cop/rails/uniq_before_pluck.rb +4 -6
  85. data/lib/rubocop/cop/rails/unique_validation_without_index.rb +2 -2
  86. data/lib/rubocop/cop/rails/unknown_env.rb +2 -2
  87. data/lib/rubocop/cop/rails/validation.rb +15 -14
  88. data/lib/rubocop/cop/rails/where_equals.rb +94 -0
  89. data/lib/rubocop/cop/rails/where_exists.rb +8 -13
  90. data/lib/rubocop/cop/rails/where_not.rb +5 -16
  91. data/lib/rubocop/cop/rails_cops.rb +4 -0
  92. data/lib/rubocop/rails/schema_loader.rb +4 -4
  93. data/lib/rubocop/rails/schema_loader/schema.rb +1 -1
  94. data/lib/rubocop/rails/version.rb +5 -1
  95. metadata +19 -9
@@ -45,11 +45,13 @@ module RuboCop
45
45
  # # good
46
46
  # Model.distinct.pluck(:id)
47
47
  #
48
- class UniqBeforePluck < RuboCop::Cop::Cop
48
+ class UniqBeforePluck < Base
49
49
  include ConfigurableEnforcedStyle
50
50
  include RangeHelp
51
+ extend AutoCorrector
51
52
 
52
53
  MSG = 'Use `distinct` before `pluck`.'
54
+ RESTRICT_ON_SEND = %i[uniq distinct pluck].freeze
53
55
  NEWLINE = "\n"
54
56
  PATTERN = '[!^block (send (send %<type>s :pluck ...) ' \
55
57
  '${:uniq :distinct} ...)]'
@@ -69,11 +71,7 @@ module RuboCop
69
71
 
70
72
  return unless method
71
73
 
72
- add_offense(node, location: :selector)
73
- end
74
-
75
- def autocorrect(node)
76
- lambda do |corrector|
74
+ add_offense(node.loc.selector) do |corrector|
77
75
  method = node.method_name
78
76
 
79
77
  corrector.remove(dot_method_with_whitespace(method, node))
@@ -24,13 +24,13 @@ module RuboCop
24
24
  # # good - even if the schema does not have a unique index
25
25
  # validates :account, length: { minimum: MIN_LENGTH }
26
26
  #
27
- class UniqueValidationWithoutIndex < Cop
27
+ class UniqueValidationWithoutIndex < Base
28
28
  include ActiveRecordHelper
29
29
 
30
30
  MSG = 'Uniqueness validation should be with a unique index.'
31
+ RESTRICT_ON_SEND = %i[validates].freeze
31
32
 
32
33
  def on_send(node)
33
- return unless node.method?(:validates)
34
34
  return unless uniqueness_part(node)
35
35
  return if condition_part?(node)
36
36
  return unless schema
@@ -17,7 +17,7 @@ module RuboCop
17
17
  # # good
18
18
  # Rails.env.production?
19
19
  # Rails.env == 'production'
20
- class UnknownEnv < Cop
20
+ class UnknownEnv < Base
21
21
  MSG = 'Unknown environment `%<name>s`.'
22
22
  MSG_SIMILAR = 'Unknown environment `%<name>s`. ' \
23
23
  'Did you mean `%<similar>s`?'
@@ -41,7 +41,7 @@ module RuboCop
41
41
 
42
42
  def on_send(node)
43
43
  unknown_environment_predicate?(node) do |name|
44
- add_offense(node, location: :selector, message: message(name))
44
+ add_offense(node.loc.selector, message: message(name))
45
45
  end
46
46
 
47
47
  unknown_environment_equal?(node) do |str_node|
@@ -32,7 +32,9 @@ module RuboCop
32
32
  # validates :foo, size: true
33
33
  # validates :foo, uniqueness: true
34
34
  #
35
- class Validation < Cop
35
+ class Validation < Base
36
+ extend AutoCorrector
37
+
36
38
  MSG = 'Prefer the new style validations `%<prefer>s` over ' \
37
39
  '`%<current>s`.'
38
40
 
@@ -50,22 +52,20 @@ module RuboCop
50
52
  uniqueness
51
53
  ].freeze
52
54
 
53
- DENYLIST = TYPES.map { |p| "validates_#{p}_of".to_sym }.freeze
55
+ RESTRICT_ON_SEND = TYPES.map { |p| "validates_#{p}_of".to_sym }.freeze
54
56
  ALLOWLIST = TYPES.map { |p| "validates :column, #{p}: value" }.freeze
55
57
 
56
58
  def on_send(node)
57
- return unless !node.receiver && DENYLIST.include?(node.method_name)
59
+ return if node.receiver
58
60
 
59
- add_offense(node, location: :selector)
60
- end
61
+ range = node.loc.selector
61
62
 
62
- def autocorrect(node)
63
- last_argument = node.arguments.last
64
- return if !last_argument.literal? && !last_argument.splat_type? &&
65
- !frozen_array_argument?(last_argument)
63
+ add_offense(range, message: message(node)) do |corrector|
64
+ last_argument = node.arguments.last
65
+ return if !last_argument.literal? && !last_argument.splat_type? &&
66
+ !frozen_array_argument?(last_argument)
66
67
 
67
- lambda do |corrector|
68
- corrector.replace(node.loc.selector, 'validates')
68
+ corrector.replace(range, 'validates')
69
69
  correct_validate_type(corrector, node)
70
70
  end
71
71
  end
@@ -73,12 +73,13 @@ module RuboCop
73
73
  private
74
74
 
75
75
  def message(node)
76
- format(MSG, prefer: preferred_method(node.method_name),
77
- current: node.method_name)
76
+ method_name = node.method_name
77
+
78
+ format(MSG, prefer: preferred_method(method_name), current: method_name)
78
79
  end
79
80
 
80
81
  def preferred_method(method)
81
- ALLOWLIST[DENYLIST.index(method.to_sym)]
82
+ ALLOWLIST[RESTRICT_ON_SEND.index(method.to_sym)]
82
83
  end
83
84
 
84
85
  def correct_validate_type(corrector, node)
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Rails
6
+ # This cop identifies places where manually constructed SQL
7
+ # in `where` can be replaced with `where(attribute: value)`.
8
+ #
9
+ # @example
10
+ # # bad
11
+ # User.where('name = ?', 'Gabe')
12
+ # User.where('name = :name', name: 'Gabe')
13
+ # User.where('name IS NULL')
14
+ # User.where('name IN (?)', ['john', 'jane'])
15
+ # User.where('name IN (:names)', names: ['john', 'jane'])
16
+ #
17
+ # # good
18
+ # User.where(name: 'Gabe')
19
+ # User.where(name: nil)
20
+ # User.where(name: ['john', 'jane'])
21
+ class WhereEquals < Base
22
+ include RangeHelp
23
+ extend AutoCorrector
24
+
25
+ MSG = 'Use `%<good_method>s` instead of manually constructing SQL.'
26
+ RESTRICT_ON_SEND = %i[where].freeze
27
+
28
+ def_node_matcher :where_method_call?, <<~PATTERN
29
+ {
30
+ (send _ :where (array $str_type? $_ ?))
31
+ (send _ :where $str_type? $_ ?)
32
+ }
33
+ PATTERN
34
+
35
+ def on_send(node)
36
+ where_method_call?(node) do |template_node, value_node|
37
+ value_node = value_node.first
38
+
39
+ range = offense_range(node)
40
+
41
+ column_and_value = extract_column_and_value(template_node, value_node)
42
+ return unless column_and_value
43
+
44
+ good_method = build_good_method(*column_and_value)
45
+ message = format(MSG, good_method: good_method)
46
+
47
+ add_offense(range, message: message) do |corrector|
48
+ corrector.replace(range, good_method)
49
+ end
50
+ end
51
+ end
52
+
53
+ EQ_ANONYMOUS_RE = /\A([\w.]+)\s+=\s+\?\z/.freeze # column = ?
54
+ IN_ANONYMOUS_RE = /\A([\w.]+)\s+IN\s+\(\?\)\z/i.freeze # column IN (?)
55
+ EQ_NAMED_RE = /\A([\w.]+)\s+=\s+:(\w+)\z/.freeze # column = :column
56
+ IN_NAMED_RE = /\A([\w.]+)\s+IN\s+\(:(\w+)\)\z/i.freeze # column IN (:column)
57
+ IS_NULL_RE = /\A([\w.]+)\s+IS\s+NULL\z/i.freeze # column IS NULL
58
+
59
+ private
60
+
61
+ def offense_range(node)
62
+ range_between(node.loc.selector.begin_pos, node.loc.expression.end_pos)
63
+ end
64
+
65
+ def extract_column_and_value(template_node, value_node)
66
+ value =
67
+ case template_node.value
68
+ when EQ_ANONYMOUS_RE, IN_ANONYMOUS_RE
69
+ value_node.source
70
+ when EQ_NAMED_RE, IN_NAMED_RE
71
+ return unless value_node.hash_type?
72
+
73
+ pair = value_node.pairs.find { |p| p.key.value.to_sym == Regexp.last_match(2).to_sym }
74
+ pair.value.source
75
+ when IS_NULL_RE
76
+ 'nil'
77
+ else
78
+ return
79
+ end
80
+
81
+ [Regexp.last_match(1), value]
82
+ end
83
+
84
+ def build_good_method(column, value)
85
+ if column.include?('.')
86
+ "where('#{column}' => #{value})"
87
+ else
88
+ "where(#{column}: #{value})"
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -36,10 +36,12 @@ module RuboCop
36
36
  # User.where('name = ?', 'john').exists?
37
37
  # user.posts.where(published: true).exists?
38
38
  # User.where('length(name) > 10').exists?
39
- class WhereExists < Cop
39
+ class WhereExists < Base
40
40
  include ConfigurableEnforcedStyle
41
+ extend AutoCorrector
41
42
 
42
43
  MSG = 'Prefer `%<good_method>s` over `%<bad_method>s`.'
44
+ RESTRICT_ON_SEND = %i[exists?].freeze
43
45
 
44
46
  def_node_matcher :where_exists_call?, <<~PATTERN
45
47
  (send (send _ :where $...) :exists?)
@@ -54,19 +56,12 @@ module RuboCop
54
56
  return unless convertable_args?(args)
55
57
 
56
58
  range = correction_range(node)
57
- message = format(MSG, good_method: build_good_method(args), bad_method: range.source)
58
- add_offense(node, location: range, message: message)
59
- end
60
- end
61
-
62
- def autocorrect(node)
63
- args = find_offenses(node)
59
+ good_method = build_good_method(args)
60
+ message = format(MSG, good_method: good_method, bad_method: range.source)
64
61
 
65
- lambda do |corrector|
66
- corrector.replace(
67
- correction_range(node),
68
- build_good_method(args)
69
- )
62
+ add_offense(range, message: message) do |corrector|
63
+ corrector.replace(range, good_method)
64
+ end
70
65
  end
71
66
  end
72
67
 
@@ -21,10 +21,12 @@ module RuboCop
21
21
  # User.where.not(name: nil)
22
22
  # User.where.not(name: ['john', 'jane'])
23
23
  #
24
- class WhereNot < Cop
24
+ class WhereNot < Base
25
25
  include RangeHelp
26
+ extend AutoCorrector
26
27
 
27
28
  MSG = 'Use `%<good_method>s` instead of manually constructing negated SQL in `where`.'
29
+ RESTRICT_ON_SEND = %i[where].freeze
28
30
 
29
31
  def_node_matcher :where_method_call?, <<~PATTERN
30
32
  {
@@ -45,21 +47,8 @@ module RuboCop
45
47
  good_method = build_good_method(*column_and_value)
46
48
  message = format(MSG, good_method: good_method)
47
49
 
48
- add_offense(node, location: range, message: message)
49
- end
50
- end
51
-
52
- def autocorrect(node)
53
- where_method_call?(node) do |template_node, value_node|
54
- value_node = value_node.first
55
-
56
- lambda do |corrector|
57
- range = offense_range(node)
58
-
59
- column, value = *extract_column_and_value(template_node, value_node)
60
- replacement = build_good_method(column, value)
61
-
62
- corrector.replace(range, replacement)
50
+ add_offense(range, message: message) do |corrector|
51
+ corrector.replace(range, good_method)
63
52
  end
64
53
  end
65
54
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'mixin/active_record_helper'
4
+ require_relative 'mixin/enforce_superclass'
4
5
  require_relative 'mixin/index_method'
5
6
  require_relative 'mixin/target_rails_version'
6
7
 
@@ -14,7 +15,9 @@ require_relative 'rails/application_controller'
14
15
  require_relative 'rails/application_job'
15
16
  require_relative 'rails/application_mailer'
16
17
  require_relative 'rails/application_record'
18
+ require_relative 'rails/arel_star'
17
19
  require_relative 'rails/assert_not'
20
+ require_relative 'rails/attribute_default_block_value'
18
21
  require_relative 'rails/belongs_to'
19
22
  require_relative 'rails/blank'
20
23
  require_relative 'rails/bulk_change_table'
@@ -83,5 +86,6 @@ require_relative 'rails/uniq_before_pluck'
83
86
  require_relative 'rails/unique_validation_without_index'
84
87
  require_relative 'rails/unknown_env'
85
88
  require_relative 'rails/validation'
89
+ require_relative 'rails/where_equals'
86
90
  require_relative 'rails/where_exists'
87
91
  require_relative 'rails/where_not'
@@ -13,15 +13,15 @@ module RuboCop
13
13
  #
14
14
  # @return [Schema, nil]
15
15
  def load(target_ruby_version)
16
- return @schema if defined?(@schema)
16
+ return @load if defined?(@load)
17
17
 
18
- @schema = load!(target_ruby_version)
18
+ @load = load!(target_ruby_version)
19
19
  end
20
20
 
21
21
  def reset!
22
- return unless instance_variable_defined?(:@schema)
22
+ return unless instance_variable_defined?(:@load)
23
23
 
24
- remove_instance_variable(:@schema)
24
+ remove_instance_variable(:@load)
25
25
  end
26
26
 
27
27
  def db_schema_path
@@ -98,7 +98,7 @@ module RuboCop
98
98
  end
99
99
 
100
100
  def each_content(node, &block)
101
- return enum_for(__method__, node) unless block_given?
101
+ return enum_for(__method__, node) unless block
102
102
 
103
103
  case node.body&.type
104
104
  when :begin
@@ -4,7 +4,11 @@ module RuboCop
4
4
  module Rails
5
5
  # This module holds the RuboCop Rails version information.
6
6
  module Version
7
- STRING = '2.8.1'
7
+ STRING = '2.9.0'
8
+
9
+ def self.document_version
10
+ STRING.match('\d+\.\d+').to_s
11
+ end
8
12
  end
9
13
  end
10
14
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.1
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
8
8
  - Jonas Arvidsson
9
9
  - Yuji Nakayama
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-09-15 00:00:00.000000000 Z
13
+ date: 2020-12-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -46,14 +46,20 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.87.0
49
+ version: 0.90.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '2.0'
50
53
  type: :runtime
51
54
  prerelease: false
52
55
  version_requirements: !ruby/object:Gem::Requirement
53
56
  requirements:
54
57
  - - ">="
55
58
  - !ruby/object:Gem::Version
56
- version: 0.87.0
59
+ version: 0.90.0
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.0'
57
63
  description: |
58
64
  Automatic Rails code style checking tool.
59
65
  A RuboCop extension focused on enforcing Rails best practices and coding conventions.
@@ -70,6 +76,7 @@ files:
70
76
  - config/default.yml
71
77
  - lib/rubocop-rails.rb
72
78
  - lib/rubocop/cop/mixin/active_record_helper.rb
79
+ - lib/rubocop/cop/mixin/enforce_superclass.rb
73
80
  - lib/rubocop/cop/mixin/index_method.rb
74
81
  - lib/rubocop/cop/mixin/target_rails_version.rb
75
82
  - lib/rubocop/cop/rails/action_filter.rb
@@ -82,7 +89,9 @@ files:
82
89
  - lib/rubocop/cop/rails/application_job.rb
83
90
  - lib/rubocop/cop/rails/application_mailer.rb
84
91
  - lib/rubocop/cop/rails/application_record.rb
92
+ - lib/rubocop/cop/rails/arel_star.rb
85
93
  - lib/rubocop/cop/rails/assert_not.rb
94
+ - lib/rubocop/cop/rails/attribute_default_block_value.rb
86
95
  - lib/rubocop/cop/rails/belongs_to.rb
87
96
  - lib/rubocop/cop/rails/blank.rb
88
97
  - lib/rubocop/cop/rails/bulk_change_table.rb
@@ -151,6 +160,7 @@ files:
151
160
  - lib/rubocop/cop/rails/unique_validation_without_index.rb
152
161
  - lib/rubocop/cop/rails/unknown_env.rb
153
162
  - lib/rubocop/cop/rails/validation.rb
163
+ - lib/rubocop/cop/rails/where_equals.rb
154
164
  - lib/rubocop/cop/rails/where_exists.rb
155
165
  - lib/rubocop/cop/rails/where_not.rb
156
166
  - lib/rubocop/cop/rails_cops.rb
@@ -166,9 +176,9 @@ metadata:
166
176
  homepage_uri: https://docs.rubocop.org/rubocop-rails/
167
177
  changelog_uri: https://github.com/rubocop-hq/rubocop-rails/blob/master/CHANGELOG.md
168
178
  source_code_uri: https://github.com/rubocop-hq/rubocop-rails/
169
- documentation_uri: https://docs.rubocop.org/rubocop-rails/
179
+ documentation_uri: https://docs.rubocop.org/rubocop-rails/2.9/
170
180
  bug_tracker_uri: https://github.com/rubocop-hq/rubocop-rails/issues
171
- post_install_message:
181
+ post_install_message:
172
182
  rdoc_options: []
173
183
  require_paths:
174
184
  - lib
@@ -183,8 +193,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
193
  - !ruby/object:Gem::Version
184
194
  version: '0'
185
195
  requirements: []
186
- rubygems_version: 3.1.4
187
- signing_key:
196
+ rubygems_version: 3.2.0.rc.2
197
+ signing_key:
188
198
  specification_version: 4
189
199
  summary: Automatic Rails code style checking tool.
190
200
  test_files: []