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