rubocop-rails 2.5.1 → 2.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +2 -2
  4. data/config/default.yml +192 -11
  5. data/lib/rubocop/cop/mixin/active_record_helper.rb +22 -0
  6. data/lib/rubocop/cop/mixin/index_method.rb +25 -1
  7. data/lib/rubocop/cop/rails/active_record_callbacks_order.rb +143 -0
  8. data/lib/rubocop/cop/rails/after_commit_override.rb +84 -0
  9. data/lib/rubocop/cop/rails/content_tag.rb +69 -0
  10. data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +1 -3
  11. data/lib/rubocop/cop/rails/default_scope.rb +54 -0
  12. data/lib/rubocop/cop/rails/delegate.rb +2 -4
  13. data/lib/rubocop/cop/rails/dynamic_find_by.rb +40 -15
  14. data/lib/rubocop/cop/rails/exit.rb +2 -2
  15. data/lib/rubocop/cop/rails/file_path.rb +2 -1
  16. data/lib/rubocop/cop/rails/find_by_id.rb +103 -0
  17. data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +1 -5
  18. data/lib/rubocop/cop/rails/helper_instance_variable.rb +2 -0
  19. data/lib/rubocop/cop/rails/http_positional_arguments.rb +1 -1
  20. data/lib/rubocop/cop/rails/http_status.rb +2 -0
  21. data/lib/rubocop/cop/rails/index_by.rb +8 -0
  22. data/lib/rubocop/cop/rails/index_with.rb +8 -0
  23. data/lib/rubocop/cop/rails/inquiry.rb +38 -0
  24. data/lib/rubocop/cop/rails/inverse_of.rb +0 -4
  25. data/lib/rubocop/cop/rails/link_to_blank.rb +3 -3
  26. data/lib/rubocop/cop/rails/mailer_name.rb +80 -0
  27. data/lib/rubocop/cop/rails/match_route.rb +119 -0
  28. data/lib/rubocop/cop/rails/negate_include.rb +39 -0
  29. data/lib/rubocop/cop/rails/order_by_id.rb +53 -0
  30. data/lib/rubocop/cop/rails/pick.rb +55 -0
  31. data/lib/rubocop/cop/rails/pluck.rb +59 -0
  32. data/lib/rubocop/cop/rails/pluck_id.rb +58 -0
  33. data/lib/rubocop/cop/rails/pluck_in_where.rb +70 -0
  34. data/lib/rubocop/cop/rails/presence.rb +2 -6
  35. data/lib/rubocop/cop/rails/rake_environment.rb +17 -0
  36. data/lib/rubocop/cop/rails/redundant_foreign_key.rb +80 -0
  37. data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +0 -3
  38. data/lib/rubocop/cop/rails/reflection_class_name.rb +1 -1
  39. data/lib/rubocop/cop/rails/relative_date_constant.rb +5 -2
  40. data/lib/rubocop/cop/rails/render_inline.rb +40 -0
  41. data/lib/rubocop/cop/rails/render_plain_text.rb +76 -0
  42. data/lib/rubocop/cop/rails/reversible_migration.rb +79 -0
  43. data/lib/rubocop/cop/rails/safe_navigation.rb +1 -1
  44. data/lib/rubocop/cop/rails/save_bang.rb +8 -9
  45. data/lib/rubocop/cop/rails/short_i18n.rb +76 -0
  46. data/lib/rubocop/cop/rails/skips_model_validations.rb +46 -8
  47. data/lib/rubocop/cop/rails/squished_sql_heredocs.rb +83 -0
  48. data/lib/rubocop/cop/rails/time_zone.rb +1 -3
  49. data/lib/rubocop/cop/rails/uniq_before_pluck.rb +14 -12
  50. data/lib/rubocop/cop/rails/unique_validation_without_index.rb +15 -11
  51. data/lib/rubocop/cop/rails/unknown_env.rb +18 -6
  52. data/lib/rubocop/cop/rails/where_exists.rb +131 -0
  53. data/lib/rubocop/cop/rails/where_not.rb +106 -0
  54. data/lib/rubocop/cop/rails_cops.rb +21 -0
  55. data/lib/rubocop/rails/schema_loader.rb +10 -10
  56. data/lib/rubocop/rails/schema_loader/schema.rb +4 -4
  57. data/lib/rubocop/rails/version.rb +1 -1
  58. metadata +31 -10
@@ -6,8 +6,10 @@ require_relative 'mixin/target_rails_version'
6
6
 
7
7
  require_relative 'rails/action_filter'
8
8
  require_relative 'rails/active_record_aliases'
9
+ require_relative 'rails/active_record_callbacks_order'
9
10
  require_relative 'rails/active_record_override'
10
11
  require_relative 'rails/active_support_aliases'
12
+ require_relative 'rails/after_commit_override'
11
13
  require_relative 'rails/application_controller'
12
14
  require_relative 'rails/application_job'
13
15
  require_relative 'rails/application_mailer'
@@ -16,8 +18,10 @@ require_relative 'rails/assert_not'
16
18
  require_relative 'rails/belongs_to'
17
19
  require_relative 'rails/blank'
18
20
  require_relative 'rails/bulk_change_table'
21
+ require_relative 'rails/content_tag'
19
22
  require_relative 'rails/create_table_with_timestamps'
20
23
  require_relative 'rails/date'
24
+ require_relative 'rails/default_scope'
21
25
  require_relative 'rails/delegate'
22
26
  require_relative 'rails/delegate_allow_blank'
23
27
  require_relative 'rails/dynamic_find_by'
@@ -27,6 +31,7 @@ require_relative 'rails/environment_comparison'
27
31
  require_relative 'rails/exit'
28
32
  require_relative 'rails/file_path'
29
33
  require_relative 'rails/find_by'
34
+ require_relative 'rails/find_by_id'
30
35
  require_relative 'rails/find_each'
31
36
  require_relative 'rails/has_and_belongs_to_many'
32
37
  require_relative 'rails/has_many_or_has_one_dependent'
@@ -36,31 +41,47 @@ require_relative 'rails/http_status'
36
41
  require_relative 'rails/ignored_skip_action_filter_option'
37
42
  require_relative 'rails/index_by'
38
43
  require_relative 'rails/index_with'
44
+ require_relative 'rails/inquiry'
39
45
  require_relative 'rails/inverse_of'
40
46
  require_relative 'rails/lexically_scoped_action_filter'
41
47
  require_relative 'rails/link_to_blank'
48
+ require_relative 'rails/mailer_name'
49
+ require_relative 'rails/match_route'
50
+ require_relative 'rails/negate_include'
42
51
  require_relative 'rails/not_null_column'
52
+ require_relative 'rails/order_by_id'
43
53
  require_relative 'rails/output'
44
54
  require_relative 'rails/output_safety'
55
+ require_relative 'rails/pick'
56
+ require_relative 'rails/pluck'
57
+ require_relative 'rails/pluck_id'
58
+ require_relative 'rails/pluck_in_where'
45
59
  require_relative 'rails/pluralization_grammar'
46
60
  require_relative 'rails/presence'
47
61
  require_relative 'rails/present'
48
62
  require_relative 'rails/rake_environment'
49
63
  require_relative 'rails/read_write_attribute'
50
64
  require_relative 'rails/redundant_allow_nil'
65
+ require_relative 'rails/redundant_foreign_key'
51
66
  require_relative 'rails/redundant_receiver_in_with_options'
52
67
  require_relative 'rails/reflection_class_name'
53
68
  require_relative 'rails/refute_methods'
54
69
  require_relative 'rails/relative_date_constant'
70
+ require_relative 'rails/render_inline'
71
+ require_relative 'rails/render_plain_text'
55
72
  require_relative 'rails/request_referer'
56
73
  require_relative 'rails/reversible_migration'
57
74
  require_relative 'rails/safe_navigation'
58
75
  require_relative 'rails/safe_navigation_with_blank'
59
76
  require_relative 'rails/save_bang'
60
77
  require_relative 'rails/scope_args'
78
+ require_relative 'rails/short_i18n'
61
79
  require_relative 'rails/skips_model_validations'
80
+ require_relative 'rails/squished_sql_heredocs'
62
81
  require_relative 'rails/time_zone'
63
82
  require_relative 'rails/uniq_before_pluck'
64
83
  require_relative 'rails/unique_validation_without_index'
65
84
  require_relative 'rails/unknown_env'
66
85
  require_relative 'rails/validation'
86
+ require_relative 'rails/where_exists'
87
+ require_relative 'rails/where_not'
@@ -24,16 +24,6 @@ module RuboCop
24
24
  remove_instance_variable(:@schema)
25
25
  end
26
26
 
27
- private
28
-
29
- def load!(target_ruby_version)
30
- path = db_schema_path
31
- return unless path
32
-
33
- ast = parse(path, target_ruby_version)
34
- Schema.new(ast)
35
- end
36
-
37
27
  def db_schema_path
38
28
  path = Pathname.pwd
39
29
  until path.root?
@@ -46,6 +36,16 @@ module RuboCop
46
36
  nil
47
37
  end
48
38
 
39
+ private
40
+
41
+ def load!(target_ruby_version)
42
+ path = db_schema_path
43
+ return unless path
44
+
45
+ ast = parse(path, target_ruby_version)
46
+ Schema.new(ast)
47
+ end
48
+
49
49
  def parse(path, target_ruby_version)
50
50
  klass_name = :"Ruby#{target_ruby_version.to_s.sub('.', '')}"
51
51
  klass = ::Parser.const_get(klass_name)
@@ -97,14 +97,12 @@ module RuboCop
97
97
  end.compact
98
98
  end
99
99
 
100
- def each_content(node)
100
+ def each_content(node, &block)
101
101
  return enum_for(__method__, node) unless block_given?
102
102
 
103
103
  case node.body&.type
104
104
  when :begin
105
- node.body.children.each do |child|
106
- yield(child)
107
- end
105
+ node.body.children.each(&block)
108
106
  else
109
107
  yield(node.body)
110
108
  end
@@ -178,6 +176,8 @@ module RuboCop
178
176
  attr_reader :table_name
179
177
 
180
178
  def initialize(node)
179
+ super(node)
180
+
181
181
  @table_name = node.first_argument.value
182
182
  @columns, @expression = build_columns_or_expr(node.arguments[1])
183
183
  @unique = nil
@@ -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.5.1'
7
+ STRING = '2.8.0'
8
8
  end
9
9
  end
10
10
  end
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.5.1
4
+ version: 2.8.0
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-04-02 00:00:00.000000000 Z
13
+ date: 2020-09-04 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 4.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: '0'
28
+ version: 4.2.0
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: rack
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -46,14 +46,14 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.72.0
49
+ version: 0.87.0
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: 0.72.0
56
+ version: 0.87.0
57
57
  description: |
58
58
  Automatic Rails code style checking tool.
59
59
  A RuboCop extension focused on enforcing Rails best practices and coding conventions.
@@ -74,8 +74,10 @@ files:
74
74
  - lib/rubocop/cop/mixin/target_rails_version.rb
75
75
  - lib/rubocop/cop/rails/action_filter.rb
76
76
  - lib/rubocop/cop/rails/active_record_aliases.rb
77
+ - lib/rubocop/cop/rails/active_record_callbacks_order.rb
77
78
  - lib/rubocop/cop/rails/active_record_override.rb
78
79
  - lib/rubocop/cop/rails/active_support_aliases.rb
80
+ - lib/rubocop/cop/rails/after_commit_override.rb
79
81
  - lib/rubocop/cop/rails/application_controller.rb
80
82
  - lib/rubocop/cop/rails/application_job.rb
81
83
  - lib/rubocop/cop/rails/application_mailer.rb
@@ -84,8 +86,10 @@ files:
84
86
  - lib/rubocop/cop/rails/belongs_to.rb
85
87
  - lib/rubocop/cop/rails/blank.rb
86
88
  - lib/rubocop/cop/rails/bulk_change_table.rb
89
+ - lib/rubocop/cop/rails/content_tag.rb
87
90
  - lib/rubocop/cop/rails/create_table_with_timestamps.rb
88
91
  - lib/rubocop/cop/rails/date.rb
92
+ - lib/rubocop/cop/rails/default_scope.rb
89
93
  - lib/rubocop/cop/rails/delegate.rb
90
94
  - lib/rubocop/cop/rails/delegate_allow_blank.rb
91
95
  - lib/rubocop/cop/rails/dynamic_find_by.rb
@@ -95,6 +99,7 @@ files:
95
99
  - lib/rubocop/cop/rails/exit.rb
96
100
  - lib/rubocop/cop/rails/file_path.rb
97
101
  - lib/rubocop/cop/rails/find_by.rb
102
+ - lib/rubocop/cop/rails/find_by_id.rb
98
103
  - lib/rubocop/cop/rails/find_each.rb
99
104
  - lib/rubocop/cop/rails/has_and_belongs_to_many.rb
100
105
  - lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb
@@ -104,34 +109,50 @@ files:
104
109
  - lib/rubocop/cop/rails/ignored_skip_action_filter_option.rb
105
110
  - lib/rubocop/cop/rails/index_by.rb
106
111
  - lib/rubocop/cop/rails/index_with.rb
112
+ - lib/rubocop/cop/rails/inquiry.rb
107
113
  - lib/rubocop/cop/rails/inverse_of.rb
108
114
  - lib/rubocop/cop/rails/lexically_scoped_action_filter.rb
109
115
  - lib/rubocop/cop/rails/link_to_blank.rb
116
+ - lib/rubocop/cop/rails/mailer_name.rb
117
+ - lib/rubocop/cop/rails/match_route.rb
118
+ - lib/rubocop/cop/rails/negate_include.rb
110
119
  - lib/rubocop/cop/rails/not_null_column.rb
120
+ - lib/rubocop/cop/rails/order_by_id.rb
111
121
  - lib/rubocop/cop/rails/output.rb
112
122
  - lib/rubocop/cop/rails/output_safety.rb
123
+ - lib/rubocop/cop/rails/pick.rb
124
+ - lib/rubocop/cop/rails/pluck.rb
125
+ - lib/rubocop/cop/rails/pluck_id.rb
126
+ - lib/rubocop/cop/rails/pluck_in_where.rb
113
127
  - lib/rubocop/cop/rails/pluralization_grammar.rb
114
128
  - lib/rubocop/cop/rails/presence.rb
115
129
  - lib/rubocop/cop/rails/present.rb
116
130
  - lib/rubocop/cop/rails/rake_environment.rb
117
131
  - lib/rubocop/cop/rails/read_write_attribute.rb
118
132
  - lib/rubocop/cop/rails/redundant_allow_nil.rb
133
+ - lib/rubocop/cop/rails/redundant_foreign_key.rb
119
134
  - lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb
120
135
  - lib/rubocop/cop/rails/reflection_class_name.rb
121
136
  - lib/rubocop/cop/rails/refute_methods.rb
122
137
  - lib/rubocop/cop/rails/relative_date_constant.rb
138
+ - lib/rubocop/cop/rails/render_inline.rb
139
+ - lib/rubocop/cop/rails/render_plain_text.rb
123
140
  - lib/rubocop/cop/rails/request_referer.rb
124
141
  - lib/rubocop/cop/rails/reversible_migration.rb
125
142
  - lib/rubocop/cop/rails/safe_navigation.rb
126
143
  - lib/rubocop/cop/rails/safe_navigation_with_blank.rb
127
144
  - lib/rubocop/cop/rails/save_bang.rb
128
145
  - lib/rubocop/cop/rails/scope_args.rb
146
+ - lib/rubocop/cop/rails/short_i18n.rb
129
147
  - lib/rubocop/cop/rails/skips_model_validations.rb
148
+ - lib/rubocop/cop/rails/squished_sql_heredocs.rb
130
149
  - lib/rubocop/cop/rails/time_zone.rb
131
150
  - lib/rubocop/cop/rails/uniq_before_pluck.rb
132
151
  - lib/rubocop/cop/rails/unique_validation_without_index.rb
133
152
  - lib/rubocop/cop/rails/unknown_env.rb
134
153
  - lib/rubocop/cop/rails/validation.rb
154
+ - lib/rubocop/cop/rails/where_exists.rb
155
+ - lib/rubocop/cop/rails/where_not.rb
135
156
  - lib/rubocop/cop/rails_cops.rb
136
157
  - lib/rubocop/rails.rb
137
158
  - lib/rubocop/rails/inject.rb
@@ -142,10 +163,10 @@ homepage: https://github.com/rubocop-hq/rubocop-rails
142
163
  licenses:
143
164
  - MIT
144
165
  metadata:
145
- homepage_uri: https://docs.rubocop.org/projects/rails/
166
+ homepage_uri: https://docs.rubocop.org/rubocop-rails/
146
167
  changelog_uri: https://github.com/rubocop-hq/rubocop-rails/blob/master/CHANGELOG.md
147
168
  source_code_uri: https://github.com/rubocop-hq/rubocop-rails/
148
- documentation_uri: https://docs.rubocop.org/projects/rails/
169
+ documentation_uri: https://docs.rubocop.org/rubocop-rails/
149
170
  bug_tracker_uri: https://github.com/rubocop-hq/rubocop-rails/issues
150
171
  post_install_message:
151
172
  rdoc_options: []
@@ -155,14 +176,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
155
176
  requirements:
156
177
  - - ">="
157
178
  - !ruby/object:Gem::Version
158
- version: 2.3.0
179
+ version: 2.4.0
159
180
  required_rubygems_version: !ruby/object:Gem::Requirement
160
181
  requirements:
161
182
  - - ">="
162
183
  - !ruby/object:Gem::Version
163
184
  version: '0'
164
185
  requirements: []
165
- rubygems_version: 3.1.2
186
+ rubygems_version: 3.1.4
166
187
  signing_key:
167
188
  specification_version: 4
168
189
  summary: Automatic Rails code style checking tool.