rubocop-rails 2.21.1 → 2.21.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.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/config/default.yml +3 -0
- data/lib/rubocop/cop/mixin/index_method.rb +2 -2
- data/lib/rubocop/cop/rails/redundant_active_record_all_method.rb +25 -3
- data/lib/rubocop/cop/rails/select_map.rb +4 -1
- data/lib/rubocop/cop/rails/unique_validation_without_index.rb +1 -1
- data/lib/rubocop/cop/rails/unused_render_content.rb +2 -3
- data/lib/rubocop/rails/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e154e69d10b43226db08e454d992d724dc7504d54cac804e597156ee5cf13e5
|
4
|
+
data.tar.gz: 60d4697e076620a134f48eff2f81be7b2004fd824796b1a1b15f5822239e3ce3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0aa0f69a7aa3b90d1e402ab26bdf5a4d03680080d9b06ba157cd92f3c5c290f821e81d4a99636009e17ec4ea2de0cfd405cea00134ebccd4323d424fb790ec8
|
7
|
+
data.tar.gz: 6b6ddbe47c1b112638cc3693464d9509f589a6683317b0bb30925a27788e39351a3a10853ecf286b419d3ec3b17e13aee9fd09ae07581d209635f0a56a44065b
|
data/README.md
CHANGED
@@ -72,7 +72,9 @@ module YourCoolApp
|
|
72
72
|
class Application < Rails::Application
|
73
73
|
config.generators.after_generate do |files|
|
74
74
|
parsable_files = files.filter { |file| file.end_with?('.rb') }
|
75
|
-
|
75
|
+
unless parsable_files.empty?
|
76
|
+
system("bundle exec rubocop -A --fail-level=E #{parsable_files.shelljoin}", exception: true)
|
77
|
+
end
|
76
78
|
end
|
77
79
|
end
|
78
80
|
end
|
data/config/default.yml
CHANGED
@@ -801,6 +801,9 @@ Rails/RedundantActiveRecordAllMethod:
|
|
801
801
|
StyleGuide: 'https://rails.rubystyle.guide/#redundant-all'
|
802
802
|
Enabled: pending
|
803
803
|
Safe: false
|
804
|
+
AllowedReceivers:
|
805
|
+
- ActionMailer::Preview
|
806
|
+
- ActiveSupport::TimeZone
|
804
807
|
VersionAdded: '2.21'
|
805
808
|
|
806
809
|
Rails/RedundantAllowNil:
|
@@ -102,7 +102,7 @@ module RuboCop
|
|
102
102
|
end
|
103
103
|
|
104
104
|
# Internal helper class to hold match data
|
105
|
-
Captures = Struct.new(
|
105
|
+
Captures = ::Struct.new(
|
106
106
|
:transformed_argname,
|
107
107
|
:transforming_body_expr
|
108
108
|
) do
|
@@ -112,7 +112,7 @@ module RuboCop
|
|
112
112
|
end
|
113
113
|
|
114
114
|
# Internal helper class to hold autocorrect data
|
115
|
-
Autocorrection = Struct.new(:match, :block_node, :leading, :trailing) do
|
115
|
+
Autocorrection = ::Struct.new(:match, :block_node, :leading, :trailing) do
|
116
116
|
def self.from_each_with_object(node, match)
|
117
117
|
new(match, node, 0, 0)
|
118
118
|
end
|
@@ -20,8 +20,15 @@ module RuboCop
|
|
20
20
|
# User.order(:created_at)
|
21
21
|
# users.where(id: ids)
|
22
22
|
# user.articles.order(:created_at)
|
23
|
+
#
|
24
|
+
# @example AllowedReceivers: ['ActionMailer::Preview', 'ActiveSupport::TimeZone'] (default)
|
25
|
+
# # good
|
26
|
+
# ActionMailer::Preview.all.first
|
27
|
+
# ActiveSupport::TimeZone.all.first
|
23
28
|
class RedundantActiveRecordAllMethod < Base
|
24
29
|
include ActiveRecordHelper
|
30
|
+
include AllowedReceivers
|
31
|
+
include RangeHelp
|
25
32
|
extend AutoCorrector
|
26
33
|
|
27
34
|
MSG = 'Redundant `all` detected.'
|
@@ -126,20 +133,35 @@ module RuboCop
|
|
126
133
|
without
|
127
134
|
].to_set.freeze
|
128
135
|
|
136
|
+
POSSIBLE_ENUMERABLE_BLOCK_METHODS = %i[any? count find none? one? select sum].freeze
|
137
|
+
|
129
138
|
def_node_matcher :followed_by_query_method?, <<~PATTERN
|
130
139
|
(send (send _ :all) QUERYING_METHODS ...)
|
131
140
|
PATTERN
|
132
141
|
|
133
142
|
def on_send(node)
|
134
|
-
return
|
135
|
-
return if node.receiver
|
143
|
+
return if !followed_by_query_method?(node.parent) || possible_enumerable_block_method?(node)
|
144
|
+
return if node.receiver ? allowed_receiver?(node.receiver) : !inherit_active_record_base?(node)
|
136
145
|
|
137
|
-
range_of_all_method = node
|
146
|
+
range_of_all_method = offense_range(node)
|
138
147
|
add_offense(range_of_all_method) do |collector|
|
139
148
|
collector.remove(range_of_all_method)
|
140
149
|
collector.remove(node.parent.loc.dot)
|
141
150
|
end
|
142
151
|
end
|
152
|
+
|
153
|
+
private
|
154
|
+
|
155
|
+
def possible_enumerable_block_method?(node)
|
156
|
+
parent = node.parent
|
157
|
+
return false unless POSSIBLE_ENUMERABLE_BLOCK_METHODS.include?(parent.method_name)
|
158
|
+
|
159
|
+
parent.parent&.block_type? || parent.parent&.numblock_type? || parent.first_argument&.block_pass_type?
|
160
|
+
end
|
161
|
+
|
162
|
+
def offense_range(node)
|
163
|
+
range_between(node.loc.selector.begin_pos, node.source_range.end_pos)
|
164
|
+
end
|
143
165
|
end
|
144
166
|
end
|
145
167
|
end
|
@@ -51,10 +51,13 @@ module RuboCop
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
+
# rubocop:disable Metrics/AbcSize
|
54
55
|
def autocorrect(corrector, select_node, node, preferred_method)
|
55
|
-
corrector.remove(select_node.loc.dot.
|
56
|
+
corrector.remove(select_node.loc.dot || node.loc.dot)
|
57
|
+
corrector.remove(select_node.loc.selector.begin.join(select_node.source_range.end))
|
56
58
|
corrector.replace(node.loc.selector.begin.join(node.source_range.end), preferred_method)
|
57
59
|
end
|
60
|
+
# rubocop:enable Metrics/AbcSize
|
58
61
|
|
59
62
|
def match_column_name?(select_candidate, column_name)
|
60
63
|
return false unless select_candidate.arguments.one?
|
@@ -125,7 +125,7 @@ module RuboCop
|
|
125
125
|
|
126
126
|
def uniqueness_part(node)
|
127
127
|
pairs = node.arguments.last
|
128
|
-
return unless pairs
|
128
|
+
return unless pairs&.hash_type?
|
129
129
|
|
130
130
|
pairs.each_pair.find do |pair|
|
131
131
|
next unless pair.key.sym_type? && pair.key.value == :uniqueness
|
@@ -14,10 +14,9 @@ module RuboCop
|
|
14
14
|
# render status: 100, plain: 'Ruby!'
|
15
15
|
#
|
16
16
|
# # good
|
17
|
-
#
|
18
|
-
#
|
17
|
+
# head :continue
|
18
|
+
# head 100
|
19
19
|
class UnusedRenderContent < Base
|
20
|
-
extend AutoCorrector
|
21
20
|
include RangeHelp
|
22
21
|
|
23
22
|
MSG = 'Do not specify body content for a response with a non-content status code'
|
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.21.
|
4
|
+
version: 2.21.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: 2023-09-
|
13
|
+
date: 2023-09-30 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|