standard-rails 0.0.1 → 0.2.0
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/.standard.yml +1 -1
- data/CHANGELOG.md +10 -4
- data/Gemfile +1 -2
- data/Gemfile.lock +42 -20
- data/README.md +31 -3
- data/Rakefile +42 -1
- data/config/base.yml +483 -115
- data/lib/standard/rails/load_rubocop_rails_without_the_monkey_patch.rb +46 -0
- data/lib/standard/rails/plugin.rb +76 -0
- data/lib/standard/rails/version.rb +1 -1
- data/lib/standard/rails.rb +3 -7
- data/lib/standard-rails.rb +1 -0
- metadata +24 -6
data/config/base.yml
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
-
# Common configuration.
|
2
|
-
|
3
|
-
inherit_mode:
|
4
|
-
merge:
|
5
|
-
- Exclude
|
6
|
-
|
7
1
|
AllCops:
|
8
2
|
Exclude:
|
9
3
|
- bin/*
|
10
|
-
|
4
|
+
# Exclude db/schema.rb and db/[CONFIGURATION_NAMESPACE]_schema.rb by default.
|
5
|
+
# See: https://guides.rubyonrails.org/active_record_multiple_databases.html#setting-up-your-application
|
6
|
+
- db/*schema.rb
|
7
|
+
- log/**/*
|
8
|
+
- public/**/*
|
9
|
+
- storage/**/*
|
10
|
+
# Enable checking Active Support extensions.
|
11
|
+
# See: https://docs.rubocop.org/rubocop/configuration.html#enable-checking-active-support-extensions
|
12
|
+
ActiveSupportExtensionsEnabled: true
|
11
13
|
# What version of Rails is the inspected code using? If a value is specified
|
12
|
-
# for TargetRailsVersion then it is used. Acceptable values are
|
14
|
+
# for TargetRailsVersion then it is used. Acceptable values are specified
|
13
15
|
# as a float (i.e. 5.1); the patch version of Rails should not be included.
|
14
16
|
# If TargetRailsVersion is not set, RuboCop will parse the Gemfile.lock or
|
15
17
|
# gems.locked file to find the version of Rails that has been bound to the
|
@@ -17,9 +19,37 @@ AllCops:
|
|
17
19
|
# as the default.
|
18
20
|
TargetRailsVersion: ~
|
19
21
|
|
22
|
+
# This cop from rubocop was added to the Rubocop-Rails
|
23
|
+
# config as part of this PR:
|
24
|
+
# https://github.com/rubocop/rubocop-rails/pull/1014
|
25
|
+
# in order to support some Rails-specific methods. At the
|
26
|
+
# time of writing, it's disabled in Standard, so it's
|
27
|
+
# disabled here.
|
28
|
+
Lint/RedundantSafeNavigation:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
Rails:
|
32
|
+
DocumentationBaseURL: https://docs.rubocop.org/rubocop-rails
|
33
|
+
|
34
|
+
Rails/ActionControllerFlashBeforeRender:
|
35
|
+
Enabled: false
|
36
|
+
Description: 'Use `flash.now` instead of `flash` before `render`.'
|
37
|
+
SafeAutoCorrect: false
|
38
|
+
VersionAdded: '2.16'
|
39
|
+
|
40
|
+
Rails/ActionControllerTestCase:
|
41
|
+
Enabled: false
|
42
|
+
Description: 'Use `ActionDispatch::IntegrationTest` instead of `ActionController::TestCase`.'
|
43
|
+
StyleGuide: 'https://rails.rubystyle.guide/#integration-testing'
|
44
|
+
Reference: 'https://api.rubyonrails.org/classes/ActionController/TestCase.html'
|
45
|
+
SafeAutoCorrect: false
|
46
|
+
VersionAdded: '2.14'
|
47
|
+
Include:
|
48
|
+
- '**/test/**/*.rb'
|
49
|
+
|
20
50
|
Rails/ActionFilter:
|
51
|
+
Enabled: false
|
21
52
|
Description: 'Enforces consistent use of action filter methods.'
|
22
|
-
Enabled: true
|
23
53
|
VersionAdded: '0.19'
|
24
54
|
EnforcedStyle: action
|
25
55
|
SupportedStyles:
|
@@ -27,109 +57,150 @@ Rails/ActionFilter:
|
|
27
57
|
- filter
|
28
58
|
Include:
|
29
59
|
- app/controllers/**/*.rb
|
60
|
+
- app/mailers/**/*.rb
|
61
|
+
|
62
|
+
Rails/ActionOrder:
|
63
|
+
Enabled: false
|
64
|
+
Description: 'Enforce consistent ordering of controller actions.'
|
65
|
+
VersionAdded: '2.17'
|
66
|
+
ExpectedOrder:
|
67
|
+
- index
|
68
|
+
- show
|
69
|
+
- new
|
70
|
+
- edit
|
71
|
+
- create
|
72
|
+
- update
|
73
|
+
- destroy
|
74
|
+
Include:
|
75
|
+
- app/controllers/**/*.rb
|
30
76
|
|
31
77
|
Rails/ActiveRecordAliases:
|
78
|
+
Enabled: false
|
32
79
|
Description: >-
|
33
80
|
Avoid Active Record aliases:
|
34
81
|
Use `update` instead of `update_attributes`.
|
35
82
|
Use `update!` instead of `update_attributes!`.
|
36
|
-
Enabled: true
|
37
83
|
VersionAdded: '0.53'
|
38
84
|
SafeAutoCorrect: false
|
39
85
|
|
40
86
|
Rails/ActiveRecordCallbacksOrder:
|
87
|
+
Enabled: false
|
41
88
|
Description: 'Order callback declarations in the order in which they will be executed.'
|
42
89
|
StyleGuide: 'https://rails.rubystyle.guide/#callbacks-order'
|
43
|
-
Enabled: 'pending'
|
44
90
|
VersionAdded: '2.7'
|
45
91
|
Include:
|
46
92
|
- app/models/**/*.rb
|
47
93
|
|
48
94
|
Rails/ActiveRecordOverride:
|
95
|
+
Enabled: true
|
49
96
|
Description: >-
|
50
97
|
Check for overriding Active Record methods instead of using
|
51
98
|
callbacks.
|
52
|
-
|
99
|
+
Severity: warning
|
53
100
|
VersionAdded: '0.67'
|
101
|
+
VersionChanged: '2.18'
|
54
102
|
Include:
|
55
103
|
- app/models/**/*.rb
|
56
104
|
|
57
105
|
Rails/ActiveSupportAliases:
|
106
|
+
Enabled: false
|
58
107
|
Description: >-
|
59
108
|
Avoid ActiveSupport aliases of standard ruby methods:
|
60
109
|
`String#starts_with?`, `String#ends_with?`,
|
61
110
|
`Array#append`, `Array#prepend`.
|
62
|
-
Enabled: true
|
63
111
|
VersionAdded: '0.48'
|
64
112
|
|
113
|
+
Rails/ActiveSupportOnLoad:
|
114
|
+
Enabled: false
|
115
|
+
Description: 'Use `ActiveSupport.on_load(...)` to patch Rails framework classes.'
|
116
|
+
Reference:
|
117
|
+
- 'https://api.rubyonrails.org/classes/ActiveSupport/LazyLoadHooks.html'
|
118
|
+
- 'https://guides.rubyonrails.org/engines.html#available-load-hooks'
|
119
|
+
SafeAutoCorrect: false
|
120
|
+
VersionAdded: '2.16'
|
121
|
+
|
122
|
+
Rails/AddColumnIndex:
|
123
|
+
Enabled: false
|
124
|
+
Description: >-
|
125
|
+
Rails migrations don't make use of a given `index` key, but also
|
126
|
+
doesn't given an error when it's used, so it makes it seem like an
|
127
|
+
index might be used.
|
128
|
+
VersionAdded: '2.11'
|
129
|
+
Include:
|
130
|
+
- db/migrate/*.rb
|
131
|
+
|
65
132
|
Rails/AfterCommitOverride:
|
133
|
+
Enabled: false
|
66
134
|
Description: >-
|
67
|
-
|
135
|
+
Enforces that there is only one call to `after_commit`
|
68
136
|
(and its aliases - `after_create_commit`, `after_update_commit`,
|
69
137
|
and `after_destroy_commit`) with the same callback name per model.
|
70
|
-
Enabled: 'pending'
|
71
138
|
VersionAdded: '2.8'
|
72
139
|
|
73
140
|
Rails/ApplicationController:
|
74
|
-
Description: 'Check that controllers subclass ApplicationController.'
|
75
141
|
Enabled: true
|
142
|
+
Description: 'Check that controllers subclass ApplicationController.'
|
76
143
|
SafeAutoCorrect: false
|
77
144
|
VersionAdded: '2.4'
|
78
145
|
VersionChanged: '2.5'
|
79
146
|
|
80
147
|
Rails/ApplicationJob:
|
81
|
-
Description: 'Check that jobs subclass ApplicationJob.'
|
82
148
|
Enabled: true
|
149
|
+
Description: 'Check that jobs subclass ApplicationJob.'
|
83
150
|
SafeAutoCorrect: false
|
84
151
|
VersionAdded: '0.49'
|
85
152
|
VersionChanged: '2.5'
|
86
153
|
|
87
154
|
Rails/ApplicationMailer:
|
88
|
-
Description: 'Check that mailers subclass ApplicationMailer.'
|
89
155
|
Enabled: true
|
156
|
+
Description: 'Check that mailers subclass ApplicationMailer.'
|
90
157
|
SafeAutoCorrect: false
|
91
158
|
VersionAdded: '2.4'
|
92
159
|
VersionChanged: '2.5'
|
93
160
|
|
94
161
|
Rails/ApplicationRecord:
|
95
|
-
Description: 'Check that models subclass ApplicationRecord.'
|
96
162
|
Enabled: true
|
163
|
+
Description: 'Check that models subclass ApplicationRecord.'
|
97
164
|
SafeAutoCorrect: false
|
98
165
|
VersionAdded: '0.49'
|
99
166
|
VersionChanged: '2.5'
|
100
167
|
|
101
168
|
Rails/ArelStar:
|
169
|
+
Enabled: false
|
102
170
|
Description: 'Enforces `Arel.star` instead of `"*"` for expanded columns.'
|
103
|
-
Enabled: true
|
104
171
|
SafeAutoCorrect: false
|
105
172
|
VersionAdded: '2.9'
|
106
173
|
|
107
174
|
Rails/AssertNot:
|
175
|
+
Enabled: false
|
108
176
|
Description: 'Use `assert_not` instead of `assert !`.'
|
109
|
-
Enabled: true
|
110
177
|
VersionAdded: '0.56'
|
111
178
|
Include:
|
112
179
|
- '**/test/**/*'
|
113
180
|
|
114
181
|
Rails/AttributeDefaultBlockValue:
|
182
|
+
Enabled: false
|
115
183
|
Description: 'Pass method call in block for attribute option `default`.'
|
116
|
-
Enabled: pending
|
117
184
|
VersionAdded: '2.9'
|
118
185
|
Include:
|
119
|
-
- 'models/**/*'
|
186
|
+
- 'app/models/**/*'
|
120
187
|
|
121
188
|
Rails/BelongsTo:
|
189
|
+
Enabled: true
|
122
190
|
Description: >-
|
123
191
|
Use `optional: true` instead of `required: false` for
|
124
192
|
`belongs_to` relations.
|
125
|
-
|
193
|
+
Reference:
|
194
|
+
- https://guides.rubyonrails.org/5_0_release_notes.html
|
195
|
+
- https://github.com/rails/rails/pull/18937
|
126
196
|
VersionAdded: '0.62'
|
127
197
|
|
128
198
|
Rails/Blank:
|
129
|
-
Description: 'Enforces use of `blank?`.'
|
130
199
|
Enabled: true
|
200
|
+
Description: 'Enforces use of `blank?`.'
|
201
|
+
SafeAutoCorrect: false
|
131
202
|
VersionAdded: '0.48'
|
132
|
-
VersionChanged: '
|
203
|
+
VersionChanged: '2.10'
|
133
204
|
# Convert usages of `nil? || empty?` to `blank?`
|
134
205
|
NilOrEmpty: true
|
135
206
|
# Convert usages of `!present?` to `blank?`
|
@@ -138,8 +209,11 @@ Rails/Blank:
|
|
138
209
|
UnlessPresent: true
|
139
210
|
|
140
211
|
Rails/BulkChangeTable:
|
212
|
+
Enabled: false
|
141
213
|
Description: 'Check whether alter queries are combinable.'
|
142
|
-
|
214
|
+
Reference:
|
215
|
+
- https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-change_table
|
216
|
+
- https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/Table.html
|
143
217
|
VersionAdded: '0.57'
|
144
218
|
Database: null
|
145
219
|
SupportedDatabases:
|
@@ -148,30 +222,48 @@ Rails/BulkChangeTable:
|
|
148
222
|
Include:
|
149
223
|
- db/migrate/*.rb
|
150
224
|
|
225
|
+
Rails/CompactBlank:
|
226
|
+
Enabled: false
|
227
|
+
Description: 'Checks if collection can be blank-compacted with `compact_blank`.'
|
228
|
+
Safe: false
|
229
|
+
VersionAdded: '2.13'
|
230
|
+
|
151
231
|
Rails/ContentTag:
|
152
|
-
|
232
|
+
Enabled: false
|
233
|
+
Description: 'Use `tag.something` instead of `tag(:something)`.'
|
153
234
|
Reference:
|
235
|
+
- 'https://github.com/rubocop/rubocop-rails/issues/260'
|
154
236
|
- 'https://github.com/rails/rails/issues/25195'
|
155
237
|
- 'https://api.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-content_tag'
|
156
|
-
Enabled: true
|
157
238
|
VersionAdded: '2.6'
|
239
|
+
VersionChanged: '2.12'
|
240
|
+
# This `Exclude` config prevents false positives for `tag` calls to `has_one: tag` and Puma configuration:
|
241
|
+
# https://puma.io/puma/Puma/DSL.html#tag-instance_method
|
242
|
+
# No helpers are used in normal models and configs.
|
243
|
+
Exclude:
|
244
|
+
- app/models/**/*.rb
|
245
|
+
- config/**/*.rb
|
158
246
|
|
159
247
|
Rails/CreateTableWithTimestamps:
|
248
|
+
Enabled: true
|
160
249
|
Description: >-
|
161
250
|
Checks the migration for which timestamps are not included
|
162
251
|
when creating a new table.
|
163
|
-
Enabled: true
|
164
252
|
VersionAdded: '0.52'
|
165
253
|
Include:
|
166
254
|
- db/migrate/*.rb
|
255
|
+
Exclude:
|
256
|
+
# Respect the `active_storage_variant_records` table of `*_create_active_storage_tables.active_storage.rb`
|
257
|
+
# auto-generated by `bin/rails active_storage:install` even if `created_at` is not specified.
|
258
|
+
- db/migrate/*_create_active_storage_tables.active_storage.rb
|
167
259
|
|
168
260
|
Rails/Date:
|
261
|
+
Enabled: true
|
169
262
|
Description: >-
|
170
263
|
Checks the correct usage of date aware methods,
|
171
264
|
such as Date.today, Date.current etc.
|
172
|
-
Enabled: true
|
173
265
|
VersionAdded: '0.30'
|
174
|
-
VersionChanged: '
|
266
|
+
VersionChanged: '2.11'
|
175
267
|
# The value `strict` disallows usage of `Date.today`, `Date.current`,
|
176
268
|
# `Date#to_time` etc.
|
177
269
|
# The value `flexible` allows usage of `Date.current`, `Date.yesterday`, etc
|
@@ -181,16 +273,17 @@ Rails/Date:
|
|
181
273
|
SupportedStyles:
|
182
274
|
- strict
|
183
275
|
- flexible
|
276
|
+
AllowToTime: true
|
184
277
|
|
185
278
|
Rails/DefaultScope:
|
279
|
+
Enabled: false
|
186
280
|
Description: 'Avoid use of `default_scope`.'
|
187
281
|
StyleGuide: 'https://rails.rubystyle.guide#avoid-default-scope'
|
188
|
-
Enabled: false
|
189
282
|
VersionAdded: '2.7'
|
190
283
|
|
191
284
|
Rails/Delegate:
|
285
|
+
Enabled: false
|
192
286
|
Description: 'Prefer delegate method for delegations.'
|
193
|
-
Enabled: true
|
194
287
|
VersionAdded: '0.21'
|
195
288
|
VersionChanged: '0.50'
|
196
289
|
# When set to true, using the target object as a prefix of the
|
@@ -199,50 +292,108 @@ Rails/Delegate:
|
|
199
292
|
EnforceForPrefixed: true
|
200
293
|
|
201
294
|
Rails/DelegateAllowBlank:
|
295
|
+
Enabled: false
|
202
296
|
Description: 'Do not use allow_blank as an option to delegate.'
|
203
|
-
Enabled: true
|
204
297
|
VersionAdded: '0.44'
|
205
298
|
|
299
|
+
Rails/DeprecatedActiveModelErrorsMethods:
|
300
|
+
Enabled: false
|
301
|
+
Description: 'Avoid manipulating ActiveModel errors hash directly.'
|
302
|
+
Severity: warning
|
303
|
+
Safe: false
|
304
|
+
VersionAdded: '2.14'
|
305
|
+
VersionChanged: '2.18'
|
306
|
+
|
307
|
+
Rails/DotSeparatedKeys:
|
308
|
+
Enabled: false
|
309
|
+
Description: 'Enforces the use of dot-separated keys instead of `:scope` options in `I18n` translation methods.'
|
310
|
+
StyleGuide: 'https://rails.rubystyle.guide/#dot-separated-keys'
|
311
|
+
VersionAdded: '2.15'
|
312
|
+
|
313
|
+
Rails/DuplicateAssociation:
|
314
|
+
Enabled: false
|
315
|
+
Description: "Don't repeat associations in a model."
|
316
|
+
Severity: warning
|
317
|
+
VersionAdded: '2.14'
|
318
|
+
VersionChanged: '2.18'
|
319
|
+
|
320
|
+
Rails/DuplicateScope:
|
321
|
+
Enabled: false
|
322
|
+
Description: 'Multiple scopes share this same where clause.'
|
323
|
+
Severity: warning
|
324
|
+
VersionAdded: '2.14'
|
325
|
+
VersionChanged: '2.18'
|
326
|
+
|
327
|
+
Rails/DurationArithmetic:
|
328
|
+
Enabled: false
|
329
|
+
Description: 'Do not use duration as arithmetic operand with `Time.current`.'
|
330
|
+
StyleGuide: 'https://rails.rubystyle.guide#duration-arithmetic'
|
331
|
+
VersionAdded: '2.13'
|
332
|
+
|
206
333
|
Rails/DynamicFindBy:
|
334
|
+
Enabled: false
|
207
335
|
Description: 'Use `find_by` instead of dynamic `find_by_*`.'
|
208
336
|
StyleGuide: 'https://rails.rubystyle.guide#find_by'
|
209
|
-
|
337
|
+
Safe: false
|
210
338
|
VersionAdded: '0.44'
|
211
|
-
VersionChanged: '2.
|
339
|
+
VersionChanged: '2.10'
|
212
340
|
# The `Whitelist` has been deprecated, Please use `AllowedMethods` instead.
|
213
341
|
Whitelist:
|
214
342
|
- find_by_sql
|
343
|
+
- find_by_token_for
|
215
344
|
AllowedMethods:
|
216
345
|
- find_by_sql
|
346
|
+
- find_by_token_for
|
217
347
|
AllowedReceivers:
|
218
348
|
- Gem::Specification
|
349
|
+
- page # Prevents a warning for `page.find_by_id`. See: https://github.com/rubocop/rubocop-rails/issues/778
|
350
|
+
|
351
|
+
Rails/EagerEvaluationLogMessage:
|
352
|
+
Enabled: false
|
353
|
+
Description: 'Checks that blocks are used for interpolated strings passed to `Rails.logger.debug`.'
|
354
|
+
Reference: 'https://guides.rubyonrails.org/debugging_rails_applications.html#impact-of-logs-on-performance'
|
355
|
+
VersionAdded: '2.11'
|
219
356
|
|
220
357
|
Rails/EnumHash:
|
358
|
+
Enabled: false
|
221
359
|
Description: 'Prefer hash syntax over array syntax when defining enums.'
|
222
360
|
StyleGuide: 'https://rails.rubystyle.guide#enums'
|
223
|
-
Enabled: true
|
224
361
|
VersionAdded: '2.3'
|
225
362
|
Include:
|
226
363
|
- app/models/**/*.rb
|
227
364
|
|
228
365
|
Rails/EnumUniqueness:
|
366
|
+
Enabled: false
|
229
367
|
Description: 'Avoid duplicate integers in hash-syntax `enum` declaration.'
|
230
|
-
Enabled: true
|
231
368
|
VersionAdded: '0.46'
|
232
369
|
Include:
|
233
370
|
- app/models/**/*.rb
|
234
371
|
|
235
372
|
Rails/EnvironmentComparison:
|
373
|
+
Enabled: false
|
236
374
|
Description: "Favor `Rails.env.production?` over `Rails.env == 'production'`."
|
237
|
-
Enabled: true
|
238
375
|
VersionAdded: '0.52'
|
239
376
|
|
377
|
+
Rails/EnvironmentVariableAccess:
|
378
|
+
Enabled: true
|
379
|
+
Description: 'Do not access `ENV` directly after initialization.'
|
380
|
+
# TODO: Set to `pending` status in RuboCop Rails 2 series when migration doc will be written.
|
381
|
+
VersionAdded: '2.10'
|
382
|
+
VersionChanged: '2.11'
|
383
|
+
Include:
|
384
|
+
- app/**/*.rb
|
385
|
+
- lib/**/*.rb
|
386
|
+
Exclude:
|
387
|
+
- lib/**/*.rake
|
388
|
+
AllowReads: false
|
389
|
+
AllowWrites: false
|
390
|
+
|
240
391
|
Rails/Exit:
|
392
|
+
Enabled: false
|
241
393
|
Description: >-
|
242
394
|
Favor `fail`, `break`, `return`, etc. over `exit` in
|
243
395
|
application or library code outside of Rake files to avoid
|
244
396
|
exits during unit testing or running in production.
|
245
|
-
Enabled: true
|
246
397
|
VersionAdded: '0.41'
|
247
398
|
Include:
|
248
399
|
- app/**/*.rb
|
@@ -251,9 +402,15 @@ Rails/Exit:
|
|
251
402
|
Exclude:
|
252
403
|
- lib/**/*.rake
|
253
404
|
|
405
|
+
Rails/ExpandedDateRange:
|
406
|
+
Enabled: false
|
407
|
+
Description: 'Checks for expanded date range.'
|
408
|
+
StyleGuide: 'https://rails.rubystyle.guide/#date-time-range'
|
409
|
+
VersionAdded: '2.11'
|
410
|
+
|
254
411
|
Rails/FilePath:
|
412
|
+
Enabled: false
|
255
413
|
Description: 'Use `Rails.root.join` for file path joining.'
|
256
|
-
Enabled: true
|
257
414
|
VersionAdded: '0.47'
|
258
415
|
VersionChanged: '2.4'
|
259
416
|
EnforcedStyle: slashes
|
@@ -262,173 +419,229 @@ Rails/FilePath:
|
|
262
419
|
- arguments
|
263
420
|
|
264
421
|
Rails/FindBy:
|
422
|
+
Enabled: false
|
265
423
|
Description: 'Prefer find_by over where.first.'
|
266
424
|
StyleGuide: 'https://rails.rubystyle.guide#find_by'
|
267
|
-
Enabled: true
|
268
425
|
VersionAdded: '0.30'
|
426
|
+
VersionChanged: '2.11'
|
427
|
+
IgnoreWhereFirst: true
|
269
428
|
Include:
|
270
429
|
- app/models/**/*.rb
|
271
430
|
|
272
431
|
Rails/FindById:
|
432
|
+
Enabled: false
|
273
433
|
Description: >-
|
274
434
|
Favor the use of `find` over `where.take!`, `find_by!`, and `find_by_id!` when you
|
275
435
|
need to retrieve a single record by primary key when you expect it to be found.
|
276
436
|
StyleGuide: 'https://rails.rubystyle.guide/#find'
|
277
|
-
Enabled: 'pending'
|
278
437
|
VersionAdded: '2.7'
|
279
438
|
|
280
439
|
Rails/FindEach:
|
281
|
-
|
440
|
+
Enabled: false
|
441
|
+
Description: 'Prefer all.find_each over all.each.'
|
282
442
|
StyleGuide: 'https://rails.rubystyle.guide#find-each'
|
283
|
-
|
443
|
+
Safe: false
|
284
444
|
VersionAdded: '0.30'
|
285
|
-
VersionChanged: '2.
|
445
|
+
VersionChanged: '2.19'
|
286
446
|
Include:
|
287
447
|
- app/models/**/*.rb
|
288
|
-
|
448
|
+
AllowedMethods:
|
289
449
|
# Methods that don't work well with `find_each`.
|
290
450
|
- order
|
291
451
|
- limit
|
292
452
|
- select
|
293
453
|
- lock
|
454
|
+
AllowedPatterns: []
|
455
|
+
|
456
|
+
Rails/FreezeTime:
|
457
|
+
Enabled: false
|
458
|
+
Description: 'Prefer `freeze_time` over `travel_to` with an argument of the current time.'
|
459
|
+
StyleGuide: 'https://rails.rubystyle.guide/#freeze-time'
|
460
|
+
VersionAdded: '2.16'
|
461
|
+
SafeAutoCorrect: false
|
294
462
|
|
295
463
|
Rails/HasAndBelongsToMany:
|
464
|
+
Enabled: false
|
296
465
|
Description: 'Prefer has_many :through to has_and_belongs_to_many.'
|
297
466
|
StyleGuide: 'https://rails.rubystyle.guide#has-many-through'
|
298
|
-
Enabled: true
|
299
467
|
VersionAdded: '0.12'
|
300
468
|
Include:
|
301
469
|
- app/models/**/*.rb
|
302
470
|
|
303
471
|
Rails/HasManyOrHasOneDependent:
|
472
|
+
Enabled: false
|
304
473
|
Description: 'Define the dependent option to the has_many and has_one associations.'
|
305
474
|
StyleGuide: 'https://rails.rubystyle.guide#has_many-has_one-dependent-option'
|
306
|
-
Enabled: true
|
307
475
|
VersionAdded: '0.50'
|
308
476
|
Include:
|
309
477
|
- app/models/**/*.rb
|
310
478
|
|
311
479
|
Rails/HelperInstanceVariable:
|
480
|
+
Enabled: false
|
312
481
|
Description: 'Do not use instance variables in helpers.'
|
313
|
-
Enabled: true
|
314
482
|
VersionAdded: '2.0'
|
315
483
|
Include:
|
316
484
|
- app/helpers/**/*.rb
|
317
485
|
|
318
486
|
Rails/HttpPositionalArguments:
|
487
|
+
Enabled: false
|
319
488
|
Description: 'Use keyword arguments instead of positional arguments in http method calls.'
|
320
|
-
Enabled: true
|
321
489
|
VersionAdded: '0.44'
|
322
490
|
Include:
|
323
491
|
- 'spec/**/*'
|
324
492
|
- 'test/**/*'
|
325
493
|
|
326
494
|
Rails/HttpStatus:
|
495
|
+
Enabled: false
|
327
496
|
Description: 'Enforces use of symbolic or numeric value to define HTTP status.'
|
328
|
-
Enabled: true
|
329
497
|
VersionAdded: '0.54'
|
498
|
+
VersionChanged: '2.11'
|
330
499
|
EnforcedStyle: symbolic
|
331
500
|
SupportedStyles:
|
332
501
|
- numeric
|
333
502
|
- symbolic
|
334
503
|
|
504
|
+
Rails/I18nLazyLookup:
|
505
|
+
Enabled: false
|
506
|
+
Description: 'Checks for places where I18n "lazy" lookup can be used.'
|
507
|
+
StyleGuide: 'https://rails.rubystyle.guide/#lazy-lookup'
|
508
|
+
Reference: 'https://guides.rubyonrails.org/i18n.html#lazy-lookup'
|
509
|
+
VersionAdded: '2.14'
|
510
|
+
Include:
|
511
|
+
- 'app/controllers/**/*.rb'
|
512
|
+
|
513
|
+
Rails/I18nLocaleAssignment:
|
514
|
+
Enabled: false
|
515
|
+
Description: 'Prefer the usage of `I18n.with_locale` instead of manually updating `I18n.locale` value.'
|
516
|
+
VersionAdded: '2.11'
|
517
|
+
Include:
|
518
|
+
- spec/**/*.rb
|
519
|
+
- test/**/*.rb
|
520
|
+
|
521
|
+
Rails/I18nLocaleTexts:
|
522
|
+
Enabled: false
|
523
|
+
Description: 'Enforces use of I18n and locale files instead of locale specific strings.'
|
524
|
+
StyleGuide: 'https://rails.rubystyle.guide/#locale-texts'
|
525
|
+
VersionAdded: '2.14'
|
526
|
+
|
527
|
+
Rails/IgnoredColumnsAssignment:
|
528
|
+
Enabled: false
|
529
|
+
Description: 'Looks for assignments of `ignored_columns` that override previous assignments.'
|
530
|
+
StyleGuide: 'https://rails.rubystyle.guide/#append-ignored-columns'
|
531
|
+
SafeAutoCorrect: false
|
532
|
+
VersionAdded: '2.17'
|
533
|
+
|
335
534
|
Rails/IgnoredSkipActionFilterOption:
|
535
|
+
Enabled: false
|
336
536
|
Description: 'Checks that `if` and `only` (or `except`) are not used together as options of `skip_*` action filter.'
|
337
537
|
Reference: 'https://api.rubyonrails.org/classes/AbstractController/Callbacks/ClassMethods.html#method-i-_normalize_callback_options'
|
338
|
-
Enabled: true
|
339
538
|
VersionAdded: '0.63'
|
340
539
|
Include:
|
341
540
|
- app/controllers/**/*.rb
|
541
|
+
- app/mailers/**/*.rb
|
342
542
|
|
343
543
|
Rails/IndexBy:
|
544
|
+
Enabled: false
|
344
545
|
Description: 'Prefer `index_by` over `each_with_object`, `to_h`, or `map`.'
|
345
|
-
Enabled: true
|
346
546
|
VersionAdded: '2.5'
|
347
547
|
VersionChanged: '2.8'
|
348
548
|
|
349
549
|
Rails/IndexWith:
|
550
|
+
Enabled: false
|
350
551
|
Description: 'Prefer `index_with` over `each_with_object`, `to_h`, or `map`.'
|
351
|
-
Enabled: true
|
352
552
|
VersionAdded: '2.5'
|
353
553
|
VersionChanged: '2.8'
|
354
554
|
|
355
555
|
Rails/Inquiry:
|
556
|
+
Enabled: false
|
356
557
|
Description: "Prefer Ruby's comparison operators over Active Support's `Array#inquiry` and `String#inquiry`."
|
357
558
|
StyleGuide: 'https://rails.rubystyle.guide/#inquiry'
|
358
|
-
Enabled: 'pending'
|
359
559
|
VersionAdded: '2.7'
|
360
560
|
|
361
561
|
Rails/InverseOf:
|
562
|
+
Enabled: false
|
362
563
|
Description: 'Checks for associations where the inverse cannot be determined automatically.'
|
363
|
-
|
564
|
+
Reference:
|
565
|
+
- https://guides.rubyonrails.org/association_basics.html#bi-directional-associations
|
566
|
+
- https://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#module-ActiveRecord::Associations::ClassMethods-label-Setting+Inverses
|
364
567
|
VersionAdded: '0.52'
|
568
|
+
IgnoreScopes: false
|
365
569
|
Include:
|
366
570
|
- app/models/**/*.rb
|
367
571
|
|
368
572
|
Rails/LexicallyScopedActionFilter:
|
369
|
-
|
573
|
+
Enabled: false
|
574
|
+
Description: "Checks that methods specified in the filter's `only` or `except` options are explicitly defined in the class."
|
370
575
|
StyleGuide: 'https://rails.rubystyle.guide#lexically-scoped-action-filter'
|
371
|
-
Enabled: true
|
372
576
|
Safe: false
|
373
577
|
VersionAdded: '0.52'
|
374
578
|
Include:
|
375
579
|
- app/controllers/**/*.rb
|
580
|
+
- app/mailers/**/*.rb
|
376
581
|
|
377
582
|
Rails/LinkToBlank:
|
583
|
+
Enabled: false
|
378
584
|
Description: 'Checks that `link_to` with a `target: "_blank"` have a `rel: "noopener"` option passed to them.'
|
379
585
|
Reference:
|
380
586
|
- https://mathiasbynens.github.io/rel-noopener/
|
381
587
|
- https://html.spec.whatwg.org/multipage/links.html#link-type-noopener
|
382
588
|
- https://html.spec.whatwg.org/multipage/links.html#link-type-noreferrer
|
383
|
-
Enabled: true
|
384
589
|
VersionAdded: '0.62'
|
385
590
|
|
386
591
|
Rails/MailerName:
|
592
|
+
Enabled: false
|
387
593
|
Description: 'Mailer should end with `Mailer` suffix.'
|
388
594
|
StyleGuide: 'https://rails.rubystyle.guide/#mailer-name'
|
389
|
-
Enabled: 'pending'
|
390
595
|
SafeAutoCorrect: false
|
391
596
|
VersionAdded: '2.7'
|
392
597
|
Include:
|
393
598
|
- app/mailers/**/*.rb
|
394
599
|
|
395
600
|
Rails/MatchRoute:
|
601
|
+
Enabled: false
|
396
602
|
Description: >-
|
397
603
|
Don't use `match` to define any routes unless there is a need to map multiple request types
|
398
604
|
among [:get, :post, :patch, :put, :delete] to a single action using the `:via` option.
|
399
605
|
StyleGuide: 'https://rails.rubystyle.guide/#no-match-routes'
|
400
|
-
Enabled: 'pending'
|
401
606
|
VersionAdded: '2.7'
|
402
607
|
Include:
|
403
608
|
- config/routes.rb
|
404
609
|
- config/routes/**/*.rb
|
405
610
|
|
611
|
+
Rails/MigrationClassName:
|
612
|
+
Enabled: false
|
613
|
+
Description: 'The class name of the migration should match its file name.'
|
614
|
+
VersionAdded: '2.14'
|
615
|
+
Include:
|
616
|
+
- db/migrate/*.rb
|
617
|
+
|
406
618
|
Rails/NegateInclude:
|
619
|
+
Enabled: false
|
407
620
|
Description: 'Prefer `collection.exclude?(obj)` over `!collection.include?(obj)`.'
|
408
621
|
StyleGuide: 'https://rails.rubystyle.guide#exclude'
|
409
|
-
Enabled: 'pending'
|
410
622
|
Safe: false
|
411
623
|
VersionAdded: '2.7'
|
412
624
|
VersionChanged: '2.9'
|
413
625
|
|
414
626
|
Rails/NotNullColumn:
|
627
|
+
Enabled: false
|
415
628
|
Description: 'Do not add a NOT NULL column without a default value.'
|
416
|
-
Enabled: true
|
417
629
|
VersionAdded: '0.43'
|
418
630
|
Include:
|
419
631
|
- db/migrate/*.rb
|
420
632
|
|
421
633
|
Rails/OrderById:
|
634
|
+
Enabled: false
|
422
635
|
Description: >-
|
423
636
|
Do not use the `id` column for ordering.
|
424
637
|
Use a timestamp column to order chronologically.
|
425
638
|
StyleGuide: 'https://rails.rubystyle.guide/#order-by-id'
|
426
|
-
Enabled: false
|
427
639
|
VersionAdded: '2.8'
|
428
640
|
|
429
641
|
Rails/Output:
|
642
|
+
Enabled: false
|
430
643
|
Description: 'Checks for calls to puts, print, etc.'
|
431
|
-
|
644
|
+
SafeAutoCorrect: false
|
432
645
|
VersionAdded: '0.15'
|
433
646
|
VersionChanged: '0.19'
|
434
647
|
Include:
|
@@ -438,33 +651,35 @@ Rails/Output:
|
|
438
651
|
- lib/**/*.rb
|
439
652
|
|
440
653
|
Rails/OutputSafety:
|
654
|
+
Enabled: false
|
441
655
|
Description: 'The use of `html_safe` or `raw` may be a security risk.'
|
442
|
-
Enabled: true
|
443
656
|
VersionAdded: '0.41'
|
444
657
|
|
445
658
|
Rails/Pick:
|
659
|
+
Enabled: false
|
446
660
|
Description: 'Prefer `pick` over `pluck(...).first`.'
|
447
661
|
StyleGuide: 'https://rails.rubystyle.guide#pick'
|
448
|
-
Enabled: true
|
449
662
|
Safe: false
|
450
663
|
VersionAdded: '2.6'
|
451
664
|
|
452
665
|
Rails/Pluck:
|
666
|
+
Enabled: false
|
453
667
|
Description: 'Prefer `pluck` over `map { ... }`.'
|
454
668
|
StyleGuide: 'https://rails.rubystyle.guide#pluck'
|
455
|
-
|
669
|
+
Safe: false
|
456
670
|
VersionAdded: '2.7'
|
671
|
+
VersionChanged: '2.18'
|
457
672
|
|
458
673
|
Rails/PluckId:
|
674
|
+
Enabled: false
|
459
675
|
Description: 'Use `ids` instead of `pluck(:id)` or `pluck(primary_key)`.'
|
460
676
|
StyleGuide: 'https://rails.rubystyle.guide/#ids'
|
461
|
-
Enabled: false
|
462
677
|
Safe: false
|
463
678
|
VersionAdded: '2.7'
|
464
679
|
|
465
680
|
Rails/PluckInWhere:
|
681
|
+
Enabled: false
|
466
682
|
Description: 'Use `select` instead of `pluck` in `where` query methods.'
|
467
|
-
Enabled: 'pending'
|
468
683
|
Safe: false
|
469
684
|
VersionAdded: '2.7'
|
470
685
|
VersionChanged: '2.8'
|
@@ -474,18 +689,18 @@ Rails/PluckInWhere:
|
|
474
689
|
- aggressive
|
475
690
|
|
476
691
|
Rails/PluralizationGrammar:
|
692
|
+
Enabled: false
|
477
693
|
Description: 'Checks for incorrect grammar when using methods like `3.day.ago`.'
|
478
|
-
Enabled: true
|
479
694
|
VersionAdded: '0.35'
|
480
695
|
|
481
696
|
Rails/Presence:
|
697
|
+
Enabled: false
|
482
698
|
Description: 'Checks code that can be written more easily using `Object#presence` defined by Active Support.'
|
483
|
-
Enabled: true
|
484
699
|
VersionAdded: '0.52'
|
485
700
|
|
486
701
|
Rails/Present:
|
702
|
+
Enabled: false
|
487
703
|
Description: 'Enforces use of `present?`.'
|
488
|
-
Enabled: true
|
489
704
|
VersionAdded: '0.48'
|
490
705
|
VersionChanged: '0.67'
|
491
706
|
# Convert usages of `!nil? && !empty?` to `present?`
|
@@ -496,8 +711,8 @@ Rails/Present:
|
|
496
711
|
UnlessBlank: true
|
497
712
|
|
498
713
|
Rails/RakeEnvironment:
|
714
|
+
Enabled: false
|
499
715
|
Description: 'Include `:environment` as a dependency for all Rake tasks.'
|
500
|
-
Enabled: true
|
501
716
|
Safe: false
|
502
717
|
VersionAdded: '2.4'
|
503
718
|
VersionChanged: '2.6'
|
@@ -508,43 +723,59 @@ Rails/RakeEnvironment:
|
|
508
723
|
- 'lib/capistrano/tasks/**/*.rake'
|
509
724
|
|
510
725
|
Rails/ReadWriteAttribute:
|
726
|
+
Enabled: false
|
511
727
|
Description: >-
|
512
728
|
Checks for read_attribute(:attr) and
|
513
729
|
write_attribute(:attr, val).
|
514
730
|
StyleGuide: 'https://rails.rubystyle.guide#read-attribute'
|
515
|
-
Enabled: true
|
516
731
|
VersionAdded: '0.20'
|
517
732
|
VersionChanged: '0.29'
|
518
733
|
Include:
|
519
734
|
- app/models/**/*.rb
|
520
735
|
|
521
736
|
Rails/RedundantAllowNil:
|
737
|
+
Enabled: false
|
522
738
|
Description: >-
|
523
739
|
Finds redundant use of `allow_nil` when `allow_blank` is set to
|
524
740
|
certain values in model validations.
|
525
|
-
Enabled: true
|
526
741
|
VersionAdded: '0.67'
|
527
742
|
Include:
|
528
743
|
- app/models/**/*.rb
|
529
744
|
|
530
745
|
Rails/RedundantForeignKey:
|
746
|
+
Enabled: false
|
531
747
|
Description: 'Checks for associations where the `:foreign_key` option is redundant.'
|
532
|
-
Enabled: true
|
533
748
|
VersionAdded: '2.6'
|
534
749
|
|
750
|
+
Rails/RedundantPresenceValidationOnBelongsTo:
|
751
|
+
Enabled: true
|
752
|
+
Description: 'Checks for redundant presence validation on belongs_to association.'
|
753
|
+
SafeAutoCorrect: false
|
754
|
+
VersionAdded: '2.13'
|
755
|
+
|
535
756
|
Rails/RedundantReceiverInWithOptions:
|
757
|
+
Enabled: false
|
536
758
|
Description: 'Checks for redundant receiver in `with_options`.'
|
537
|
-
Enabled: true
|
538
759
|
VersionAdded: '0.52'
|
539
760
|
|
761
|
+
Rails/RedundantTravelBack:
|
762
|
+
Enabled: false
|
763
|
+
Description: Checks for redundant `travel_back` calls.
|
764
|
+
VersionAdded: '2.12'
|
765
|
+
Include:
|
766
|
+
- spec/**/*.rb
|
767
|
+
- test/**/*.rb
|
768
|
+
|
540
769
|
Rails/ReflectionClassName:
|
770
|
+
Enabled: false
|
541
771
|
Description: 'Use a string for `class_name` option value in the definition of a reflection.'
|
542
|
-
|
772
|
+
Safe: false
|
543
773
|
VersionAdded: '0.64'
|
774
|
+
VersionChanged: '2.10'
|
544
775
|
|
545
776
|
Rails/RefuteMethods:
|
777
|
+
Enabled: false
|
546
778
|
Description: 'Use `assert_not` methods instead of `refute` methods.'
|
547
|
-
Enabled: true
|
548
779
|
VersionAdded: '0.56'
|
549
780
|
EnforcedStyle: assert_not
|
550
781
|
SupportedStyles:
|
@@ -554,47 +785,90 @@ Rails/RefuteMethods:
|
|
554
785
|
- '**/test/**/*'
|
555
786
|
|
556
787
|
Rails/RelativeDateConstant:
|
788
|
+
Enabled: false
|
557
789
|
Description: 'Do not assign relative date to constants.'
|
558
|
-
|
790
|
+
SafeAutoCorrect: false
|
559
791
|
VersionAdded: '0.48'
|
560
|
-
VersionChanged: '
|
561
|
-
AutoCorrect: false
|
792
|
+
VersionChanged: '2.13'
|
562
793
|
|
563
794
|
Rails/RenderInline:
|
795
|
+
Enabled: false
|
564
796
|
Description: 'Prefer using a template over inline rendering.'
|
565
797
|
StyleGuide: 'https://rails.rubystyle.guide/#inline-rendering'
|
566
|
-
Enabled: 'pending'
|
567
798
|
VersionAdded: '2.7'
|
568
799
|
|
569
800
|
Rails/RenderPlainText:
|
801
|
+
Enabled: false
|
570
802
|
Description: 'Prefer `render plain:` over `render text:`.'
|
571
803
|
StyleGuide: 'https://rails.rubystyle.guide/#plain-text-rendering'
|
572
|
-
Enabled: 'pending'
|
573
804
|
VersionAdded: '2.7'
|
574
805
|
# Convert only when `content_type` is explicitly set to `text/plain`.
|
575
806
|
ContentTypeCompatibility: true
|
576
807
|
|
577
808
|
Rails/RequestReferer:
|
809
|
+
Enabled: false
|
578
810
|
Description: 'Use consistent syntax for request.referer.'
|
579
|
-
Enabled: true
|
580
811
|
VersionAdded: '0.41'
|
581
812
|
EnforcedStyle: referer
|
582
813
|
SupportedStyles:
|
583
814
|
- referer
|
584
815
|
- referrer
|
585
816
|
|
817
|
+
Rails/RequireDependency:
|
818
|
+
Enabled: false
|
819
|
+
Description: 'Do not use `require_dependency` when running in Zeitwerk mode. `require_dependency` is for autoloading in classic mode.'
|
820
|
+
Reference: 'https://guides.rubyonrails.org/autoloading_and_reloading_constants.html'
|
821
|
+
VersionAdded: '2.10'
|
822
|
+
|
823
|
+
Rails/ResponseParsedBody:
|
824
|
+
Enabled: false
|
825
|
+
Description: Prefer `response.parsed_body` to `JSON.parse(response.body)`.
|
826
|
+
Safe: false
|
827
|
+
VersionAdded: '2.18'
|
828
|
+
VersionChanged: '2.19'
|
829
|
+
Include:
|
830
|
+
- spec/controllers/**/*.rb
|
831
|
+
- spec/requests/**/*.rb
|
832
|
+
- test/controllers/**/*.rb
|
833
|
+
- test/integration/**/*.rb
|
834
|
+
|
586
835
|
Rails/ReversibleMigration:
|
836
|
+
Enabled: false
|
587
837
|
Description: 'Checks whether the change method of the migration file is reversible.'
|
588
838
|
StyleGuide: 'https://rails.rubystyle.guide#reversible-migration'
|
589
839
|
Reference: 'https://api.rubyonrails.org/classes/ActiveRecord/Migration/CommandRecorder.html'
|
590
|
-
Enabled: true
|
591
840
|
VersionAdded: '0.47'
|
841
|
+
VersionChanged: '2.13'
|
592
842
|
Include:
|
593
|
-
- db
|
843
|
+
- db/**/*.rb
|
844
|
+
|
845
|
+
Rails/ReversibleMigrationMethodDefinition:
|
846
|
+
Enabled: false
|
847
|
+
Description: 'Checks whether the migration implements either a `change` method or both an `up` and a `down` method.'
|
848
|
+
VersionAdded: '2.10'
|
849
|
+
VersionChanged: '2.13'
|
850
|
+
Include:
|
851
|
+
- db/**/*.rb
|
852
|
+
|
853
|
+
Rails/RootJoinChain:
|
854
|
+
Enabled: false
|
855
|
+
Description: 'Use a single `#join` instead of chaining on `Rails.root` or `Rails.public_path`.'
|
856
|
+
VersionAdded: '2.13'
|
857
|
+
|
858
|
+
Rails/RootPathnameMethods:
|
859
|
+
Enabled: false
|
860
|
+
Description: 'Use `Rails.root` IO methods instead of passing it to `File`.'
|
861
|
+
SafeAutoCorrect: false
|
862
|
+
VersionAdded: '2.16'
|
863
|
+
|
864
|
+
Rails/RootPublicPath:
|
865
|
+
Enabled: false
|
866
|
+
Description: "Favor `Rails.public_path` over `Rails.root` with `'public'`."
|
867
|
+
VersionAdded: '2.15'
|
594
868
|
|
595
869
|
Rails/SafeNavigation:
|
596
|
-
Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`."
|
597
870
|
Enabled: true
|
871
|
+
Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`."
|
598
872
|
VersionAdded: '0.43'
|
599
873
|
# This will convert usages of `try` to use safe navigation as well as `try!`.
|
600
874
|
# `try` and `try!` work slightly differently. `try!` and safe navigation will
|
@@ -603,8 +877,8 @@ Rails/SafeNavigation:
|
|
603
877
|
ConvertTry: false
|
604
878
|
|
605
879
|
Rails/SafeNavigationWithBlank:
|
606
|
-
Description: 'Avoid `foo&.blank?` in conditionals.'
|
607
880
|
Enabled: true
|
881
|
+
Description: 'Avoid `foo&.blank?` in conditionals.'
|
608
882
|
VersionAdded: '2.4'
|
609
883
|
# While the safe navigation operator is generally a good idea, when
|
610
884
|
# checking `foo&.blank?` in a conditional, `foo` being `nil` will actually
|
@@ -615,26 +889,34 @@ Rails/SafeNavigationWithBlank:
|
|
615
889
|
SafeAutoCorrect: false
|
616
890
|
|
617
891
|
Rails/SaveBang:
|
892
|
+
Enabled: false
|
618
893
|
Description: 'Identifies possible cases where Active Record save! or related should be used.'
|
619
894
|
StyleGuide: 'https://rails.rubystyle.guide#save-bang'
|
620
|
-
Enabled: false
|
621
895
|
VersionAdded: '0.42'
|
622
896
|
VersionChanged: '0.59'
|
623
897
|
AllowImplicitReturn: true
|
624
898
|
AllowedReceivers: []
|
625
899
|
SafeAutoCorrect: false
|
626
900
|
|
901
|
+
Rails/SchemaComment:
|
902
|
+
Enabled: false
|
903
|
+
Description: >-
|
904
|
+
Enforces the use of the `comment` option when adding a new table or column
|
905
|
+
to the database during a migration.
|
906
|
+
VersionAdded: '2.13'
|
907
|
+
|
627
908
|
Rails/ScopeArgs:
|
628
|
-
Description: 'Checks the arguments of ActiveRecord scopes.'
|
629
909
|
Enabled: true
|
910
|
+
Description: 'Checks the arguments of ActiveRecord scopes.'
|
630
911
|
VersionAdded: '0.19'
|
912
|
+
VersionChanged: '2.12'
|
631
913
|
Include:
|
632
914
|
- app/models/**/*.rb
|
633
915
|
|
634
916
|
Rails/ShortI18n:
|
917
|
+
Enabled: false
|
635
918
|
Description: 'Use the short form of the I18n methods: `t` instead of `translate` and `l` instead of `localize`.'
|
636
919
|
StyleGuide: 'https://rails.rubystyle.guide/#short-i18n'
|
637
|
-
Enabled: 'pending'
|
638
920
|
VersionAdded: '2.7'
|
639
921
|
EnforcedStyle: conservative
|
640
922
|
SupportedStyles:
|
@@ -642,11 +924,11 @@ Rails/ShortI18n:
|
|
642
924
|
- aggressive
|
643
925
|
|
644
926
|
Rails/SkipsModelValidations:
|
927
|
+
Enabled: false
|
645
928
|
Description: >-
|
646
929
|
Use methods that skips model validations with caution.
|
647
930
|
See reference for more information.
|
648
931
|
Reference: 'https://guides.rubyonrails.org/active_record_validations.html#skipping-validations'
|
649
|
-
Enabled: true
|
650
932
|
VersionAdded: '0.47'
|
651
933
|
VersionChanged: '2.7'
|
652
934
|
ForbiddenMethods:
|
@@ -671,88 +953,174 @@ Rails/SkipsModelValidations:
|
|
671
953
|
AllowedMethods: []
|
672
954
|
|
673
955
|
Rails/SquishedSQLHeredocs:
|
956
|
+
Enabled: false
|
674
957
|
Description: 'Checks SQL heredocs to use `.squish`.'
|
675
958
|
StyleGuide: 'https://rails.rubystyle.guide/#squished-heredocs'
|
676
|
-
Enabled: 'pending'
|
677
959
|
VersionAdded: '2.8'
|
678
960
|
VersionChanged: '2.9'
|
679
961
|
# Some SQL syntax (e.g. PostgreSQL comments and functions) requires newlines
|
680
|
-
# to be preserved in order to work, thus
|
962
|
+
# to be preserved in order to work, thus autocorrection is not safe.
|
681
963
|
SafeAutoCorrect: false
|
682
964
|
|
965
|
+
Rails/StripHeredoc:
|
966
|
+
Enabled: true
|
967
|
+
Description: 'Enforces the use of squiggly heredoc over `strip_heredoc`.'
|
968
|
+
StyleGuide: 'https://rails.rubystyle.guide/#prefer-squiggly-heredoc'
|
969
|
+
VersionAdded: '2.15'
|
970
|
+
|
971
|
+
Rails/TableNameAssignment:
|
972
|
+
Enabled: false
|
973
|
+
Description: >-
|
974
|
+
Do not use `self.table_name =`. Use Inflections or `table_name_prefix` instead.
|
975
|
+
StyleGuide: 'https://rails.rubystyle.guide/#keep-ar-defaults'
|
976
|
+
VersionAdded: '2.14'
|
977
|
+
Include:
|
978
|
+
- app/models/**/*.rb
|
979
|
+
|
980
|
+
Rails/ThreeStateBooleanColumn:
|
981
|
+
Enabled: true
|
982
|
+
Description: 'Add a default value and a `NOT NULL` constraint to boolean columns.'
|
983
|
+
StyleGuide: 'https://rails.rubystyle.guide/#three-state-boolean'
|
984
|
+
VersionAdded: '2.19'
|
985
|
+
Include:
|
986
|
+
- db/**/*.rb
|
987
|
+
|
683
988
|
Rails/TimeZone:
|
989
|
+
Enabled: false
|
684
990
|
Description: 'Checks the correct usage of time zone aware methods.'
|
685
991
|
StyleGuide: 'https://rails.rubystyle.guide#time'
|
686
992
|
Reference: 'http://danilenko.org/2012/7/6/rails_timezones'
|
687
|
-
|
688
|
-
Safe: false
|
993
|
+
SafeAutoCorrect: false
|
689
994
|
VersionAdded: '0.30'
|
690
|
-
VersionChanged: '
|
995
|
+
VersionChanged: '2.13'
|
691
996
|
# The value `strict` means that `Time` should be used with `zone`.
|
692
997
|
# The value `flexible` allows usage of `in_time_zone` instead of `zone`.
|
693
998
|
EnforcedStyle: flexible
|
694
999
|
SupportedStyles:
|
695
1000
|
- strict
|
696
1001
|
- flexible
|
1002
|
+
Exclude:
|
1003
|
+
- '**/*.gemspec'
|
1004
|
+
|
1005
|
+
Rails/TimeZoneAssignment:
|
1006
|
+
Enabled: true
|
1007
|
+
Description: 'Prefer the usage of `Time.use_zone` instead of manually updating `Time.zone` value.'
|
1008
|
+
Reference: 'https://thoughtbot.com/blog/its-about-time-zones'
|
1009
|
+
VersionAdded: '2.10'
|
1010
|
+
Include:
|
1011
|
+
- spec/**/*.rb
|
1012
|
+
- test/**/*.rb
|
1013
|
+
|
1014
|
+
Rails/ToFormattedS:
|
1015
|
+
Enabled: false
|
1016
|
+
Description: 'Checks for consistent uses of `to_fs` or `to_formatted_s`.'
|
1017
|
+
StyleGuide: 'https://rails.rubystyle.guide/#prefer-to-fs'
|
1018
|
+
EnforcedStyle: to_fs
|
1019
|
+
SupportedStyles:
|
1020
|
+
- to_fs
|
1021
|
+
- to_formatted_s
|
1022
|
+
VersionAdded: '2.15'
|
1023
|
+
|
1024
|
+
Rails/ToSWithArgument:
|
1025
|
+
Enabled: false
|
1026
|
+
Description: 'Identifies passing any argument to `#to_s`.'
|
1027
|
+
Safe: false
|
1028
|
+
VersionAdded: '2.16'
|
1029
|
+
|
1030
|
+
Rails/TopLevelHashWithIndifferentAccess:
|
1031
|
+
Enabled: false
|
1032
|
+
Description: 'Identifies top-level `HashWithIndifferentAccess`.'
|
1033
|
+
Reference: 'https://guides.rubyonrails.org/upgrading_ruby_on_rails.html#top-level-hashwithindifferentaccess-is-soft-deprecated'
|
1034
|
+
Severity: warning
|
1035
|
+
VersionAdded: '2.16'
|
1036
|
+
VersionChanged: '2.18'
|
1037
|
+
|
1038
|
+
Rails/TransactionExitStatement:
|
1039
|
+
Enabled: false
|
1040
|
+
Description: 'Avoid the usage of `return`, `break` and `throw` in transaction blocks.'
|
1041
|
+
Reference:
|
1042
|
+
- https://github.com/rails/rails/commit/15aa4200e083
|
1043
|
+
VersionAdded: '2.14'
|
697
1044
|
|
698
1045
|
Rails/UniqBeforePluck:
|
699
|
-
Description: 'Prefer the use of uniq or distinct before pluck.'
|
700
1046
|
Enabled: true
|
1047
|
+
Description: 'Prefer the use of uniq or distinct before pluck.'
|
701
1048
|
VersionAdded: '0.40'
|
702
|
-
VersionChanged: '2.
|
1049
|
+
VersionChanged: '2.13'
|
703
1050
|
EnforcedStyle: conservative
|
704
1051
|
SupportedStyles:
|
705
1052
|
- conservative
|
706
1053
|
- aggressive
|
707
1054
|
SafeAutoCorrect: false
|
708
|
-
AutoCorrect: false
|
709
1055
|
|
710
1056
|
Rails/UniqueValidationWithoutIndex:
|
711
|
-
|
712
|
-
|
1057
|
+
Enabled: false
|
1058
|
+
Description: 'Uniqueness validation should have a unique index on the database column.'
|
713
1059
|
VersionAdded: '2.5'
|
714
1060
|
Include:
|
715
1061
|
- app/models/**/*.rb
|
716
1062
|
|
717
1063
|
Rails/UnknownEnv:
|
1064
|
+
Enabled: false
|
718
1065
|
Description: 'Use correct environment name.'
|
719
|
-
|
1066
|
+
Severity: warning
|
720
1067
|
VersionAdded: '0.51'
|
1068
|
+
VersionChanged: '2.18'
|
721
1069
|
Environments:
|
722
1070
|
- development
|
723
1071
|
- test
|
724
1072
|
- production
|
725
1073
|
|
1074
|
+
Rails/UnusedIgnoredColumns:
|
1075
|
+
Enabled: true
|
1076
|
+
Description: 'Remove a column that does not exist from `ignored_columns`.'
|
1077
|
+
VersionAdded: '2.11'
|
1078
|
+
Include:
|
1079
|
+
- app/models/**/*.rb
|
1080
|
+
|
726
1081
|
Rails/Validation:
|
1082
|
+
Enabled: false
|
727
1083
|
Description: 'Use validates :attribute, hash of validations.'
|
728
|
-
Enabled: true
|
729
1084
|
VersionAdded: '0.9'
|
730
1085
|
VersionChanged: '0.41'
|
731
1086
|
Include:
|
732
1087
|
- app/models/**/*.rb
|
733
1088
|
|
734
1089
|
Rails/WhereEquals:
|
1090
|
+
Enabled: false
|
735
1091
|
Description: 'Pass conditions to `where` as a hash instead of manually constructing SQL.'
|
736
1092
|
StyleGuide: 'https://rails.rubystyle.guide/#hash-conditions'
|
737
|
-
|
1093
|
+
SafeAutoCorrect: false
|
738
1094
|
VersionAdded: '2.9'
|
1095
|
+
VersionChanged: '2.10'
|
739
1096
|
|
740
1097
|
Rails/WhereExists:
|
1098
|
+
Enabled: false
|
741
1099
|
Description: 'Prefer `exists?(...)` over `where(...).exists?`.'
|
742
|
-
|
1100
|
+
SafeAutoCorrect: false
|
743
1101
|
EnforcedStyle: exists
|
744
1102
|
SupportedStyles:
|
745
1103
|
- exists
|
746
1104
|
- where
|
747
1105
|
VersionAdded: '2.7'
|
748
|
-
VersionChanged: '2.
|
1106
|
+
VersionChanged: '2.10'
|
1107
|
+
|
1108
|
+
Rails/WhereMissing:
|
1109
|
+
Enabled: true
|
1110
|
+
Description: 'Use `where.missing(...)` to find missing relationship records.'
|
1111
|
+
StyleGuide: 'https://rails.rubystyle.guide/#finding-missing-relationship-records'
|
1112
|
+
VersionAdded: '2.16'
|
749
1113
|
|
750
1114
|
Rails/WhereNot:
|
1115
|
+
Enabled: true
|
751
1116
|
Description: 'Use `where.not(...)` instead of manually constructing negated SQL in `where`.'
|
752
1117
|
StyleGuide: 'https://rails.rubystyle.guide/#hash-conditions'
|
753
|
-
Enabled: 'pending'
|
754
1118
|
VersionAdded: '2.8'
|
755
1119
|
|
756
|
-
|
757
|
-
|
758
|
-
|
1120
|
+
Rails/WhereNotWithMultipleConditions:
|
1121
|
+
Enabled: false
|
1122
|
+
Description: 'Do not use `where.not(...)` with multiple conditions.'
|
1123
|
+
StyleGuide: 'https://rails.rubystyle.guide/#where-not-with-multiple-attributes'
|
1124
|
+
Severity: warning
|
1125
|
+
VersionAdded: '2.17'
|
1126
|
+
VersionChanged: '2.18'
|