rubocop-rails 2.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 +7 -0
- data/LICENSE.txt +20 -0
- data/README.md +73 -0
- data/bin/setup +7 -0
- data/config/default.yml +466 -0
- data/lib/rubocop-rails.rb +12 -0
- data/lib/rubocop/cop/mixin/target_rails_version.rb +16 -0
- data/lib/rubocop/cop/rails/action_filter.rb +117 -0
- data/lib/rubocop/cop/rails/active_record_aliases.rb +48 -0
- data/lib/rubocop/cop/rails/active_record_override.rb +82 -0
- data/lib/rubocop/cop/rails/active_support_aliases.rb +69 -0
- data/lib/rubocop/cop/rails/application_job.rb +40 -0
- data/lib/rubocop/cop/rails/application_record.rb +40 -0
- data/lib/rubocop/cop/rails/assert_not.rb +44 -0
- data/lib/rubocop/cop/rails/belongs_to.rb +102 -0
- data/lib/rubocop/cop/rails/blank.rb +164 -0
- data/lib/rubocop/cop/rails/bulk_change_table.rb +289 -0
- data/lib/rubocop/cop/rails/create_table_with_timestamps.rb +91 -0
- data/lib/rubocop/cop/rails/date.rb +161 -0
- data/lib/rubocop/cop/rails/delegate.rb +132 -0
- data/lib/rubocop/cop/rails/delegate_allow_blank.rb +37 -0
- data/lib/rubocop/cop/rails/dynamic_find_by.rb +91 -0
- data/lib/rubocop/cop/rails/enum_uniqueness.rb +45 -0
- data/lib/rubocop/cop/rails/environment_comparison.rb +68 -0
- data/lib/rubocop/cop/rails/exit.rb +67 -0
- data/lib/rubocop/cop/rails/file_path.rb +108 -0
- data/lib/rubocop/cop/rails/find_by.rb +55 -0
- data/lib/rubocop/cop/rails/find_each.rb +51 -0
- data/lib/rubocop/cop/rails/has_and_belongs_to_many.rb +25 -0
- data/lib/rubocop/cop/rails/has_many_or_has_one_dependent.rb +106 -0
- data/lib/rubocop/cop/rails/helper_instance_variable.rb +39 -0
- data/lib/rubocop/cop/rails/http_positional_arguments.rb +117 -0
- data/lib/rubocop/cop/rails/http_status.rb +160 -0
- data/lib/rubocop/cop/rails/ignored_skip_action_filter_option.rb +94 -0
- data/lib/rubocop/cop/rails/inverse_of.rb +246 -0
- data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +175 -0
- data/lib/rubocop/cop/rails/link_to_blank.rb +98 -0
- data/lib/rubocop/cop/rails/not_null_column.rb +67 -0
- data/lib/rubocop/cop/rails/output.rb +49 -0
- data/lib/rubocop/cop/rails/output_safety.rb +99 -0
- data/lib/rubocop/cop/rails/pluralization_grammar.rb +107 -0
- data/lib/rubocop/cop/rails/presence.rb +124 -0
- data/lib/rubocop/cop/rails/present.rb +153 -0
- data/lib/rubocop/cop/rails/read_write_attribute.rb +74 -0
- data/lib/rubocop/cop/rails/redundant_allow_nil.rb +111 -0
- data/lib/rubocop/cop/rails/redundant_receiver_in_with_options.rb +136 -0
- data/lib/rubocop/cop/rails/reflection_class_name.rb +37 -0
- data/lib/rubocop/cop/rails/refute_methods.rb +76 -0
- data/lib/rubocop/cop/rails/relative_date_constant.rb +93 -0
- data/lib/rubocop/cop/rails/request_referer.rb +56 -0
- data/lib/rubocop/cop/rails/reversible_migration.rb +286 -0
- data/lib/rubocop/cop/rails/safe_navigation.rb +87 -0
- data/lib/rubocop/cop/rails/save_bang.rb +316 -0
- data/lib/rubocop/cop/rails/scope_args.rb +29 -0
- data/lib/rubocop/cop/rails/skips_model_validations.rb +87 -0
- data/lib/rubocop/cop/rails/time_zone.rb +238 -0
- data/lib/rubocop/cop/rails/uniq_before_pluck.rb +105 -0
- data/lib/rubocop/cop/rails/unknown_env.rb +63 -0
- data/lib/rubocop/cop/rails/validation.rb +109 -0
- data/lib/rubocop/cop/rails_cops.rb +64 -0
- data/lib/rubocop/rails.rb +12 -0
- data/lib/rubocop/rails/inject.rb +18 -0
- data/lib/rubocop/rails/version.rb +10 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 727746f734b1299c9924a8b66343ab5205dbe5aa672406ddaa95ce6952cc615c
|
4
|
+
data.tar.gz: d86d69036a624be32dd6a71a0f1e28af6da2ebd439d7e18af0e9b27042729445
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b7705ae94fda7c8d47e918f40a6d162b0db708419324118091c31f7bf3bd7c0010b7f1730ba72e8d2c92302fe76ac088b3507f8cb9cb5d9a8ab06af358820fee
|
7
|
+
data.tar.gz: 581176be1884dcff1953b7b51b454ec15febdf6cc6af5f635272c5c8348e7429d3605a6b87a22c2a4f26fc58fc3aef27910c3e7f122981bc47f3a773449acd1a
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2012-18 Bozhidar Batsov
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# RuboCop Rails
|
2
|
+
|
3
|
+
[](https://circleci.com/gh/rubocop-hq/rubocop-rails)
|
4
|
+
|
5
|
+
A [RuboCop](https://github.com/rubocop-hq/rubocop) extension focused on enforcing Rails best practices and coding conventions.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Just install the `rubocop-rails` gem
|
10
|
+
|
11
|
+
```sh
|
12
|
+
gem install rubocop-rails
|
13
|
+
```
|
14
|
+
|
15
|
+
or if you use bundler put this in your `Gemfile`
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
gem 'rubocop-rails'
|
19
|
+
```
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
You need to tell RuboCop to load the Rails extension. There are three
|
24
|
+
ways to do this:
|
25
|
+
|
26
|
+
### RuboCop configuration file
|
27
|
+
|
28
|
+
Put this into your `.rubocop.yml`.
|
29
|
+
|
30
|
+
```yaml
|
31
|
+
require: rubocop-rails
|
32
|
+
```
|
33
|
+
|
34
|
+
Now you can run `rubocop` and it will automatically load the RuboCop Rails
|
35
|
+
cops together with the standard cops.
|
36
|
+
|
37
|
+
### Command line
|
38
|
+
|
39
|
+
```sh
|
40
|
+
rubocop --require rubocop-rails
|
41
|
+
```
|
42
|
+
|
43
|
+
### Rake task
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
RuboCop::RakeTask.new do |task|
|
47
|
+
task.requires << 'rubocop-rails'
|
48
|
+
end
|
49
|
+
```
|
50
|
+
|
51
|
+
## The Cops
|
52
|
+
|
53
|
+
All cops are located under
|
54
|
+
[`lib/rubocop/cop/rails`](lib/rubocop/cop/rails), and contain
|
55
|
+
examples/documentation.
|
56
|
+
|
57
|
+
In your `.rubocop.yml`, you may treat the Rails cops just like any other
|
58
|
+
cop. For example:
|
59
|
+
|
60
|
+
```yaml
|
61
|
+
Rails/FindBy:
|
62
|
+
Exclude:
|
63
|
+
- lib/example.rb
|
64
|
+
```
|
65
|
+
|
66
|
+
## Contributing
|
67
|
+
|
68
|
+
Checkout the [contribution guidelines](CONTRIBUTING.md).
|
69
|
+
|
70
|
+
## License
|
71
|
+
|
72
|
+
`rubocop-rails` is MIT licensed. [See the accompanying file](LICENSE.txt) for
|
73
|
+
the full text.
|
data/bin/setup
ADDED
data/config/default.yml
ADDED
@@ -0,0 +1,466 @@
|
|
1
|
+
# Common configuration.
|
2
|
+
|
3
|
+
AllCops:
|
4
|
+
# What version of Rails is the inspected code using? If a value is specified
|
5
|
+
# for TargetRailsVersion then it is used. Acceptable values are specificed
|
6
|
+
# as a float (i.e. 5.1); the patch version of Rails should not be included.
|
7
|
+
# If TargetRailsVersion is not set, RuboCop will parse the Gemfile.lock or
|
8
|
+
# gems.locked file to find the version of Rails that has been bound to the
|
9
|
+
# application. If neither of those files exist, RuboCop will use Rails 5.0
|
10
|
+
# as the default.
|
11
|
+
TargetRailsVersion: ~
|
12
|
+
|
13
|
+
Rails/ActionFilter:
|
14
|
+
Description: 'Enforces consistent use of action filter methods.'
|
15
|
+
Enabled: true
|
16
|
+
VersionAdded: '0.19'
|
17
|
+
EnforcedStyle: action
|
18
|
+
SupportedStyles:
|
19
|
+
- action
|
20
|
+
- filter
|
21
|
+
Include:
|
22
|
+
- app/controllers/**/*.rb
|
23
|
+
|
24
|
+
Rails/ActiveRecordAliases:
|
25
|
+
Description: >-
|
26
|
+
Avoid Active Record aliases:
|
27
|
+
Use `update` instead of `update_attributes`.
|
28
|
+
Use `update!` instead of `update_attributes!`.
|
29
|
+
Enabled: true
|
30
|
+
VersionAdded: '0.53'
|
31
|
+
|
32
|
+
Rails/ActiveRecordOverride:
|
33
|
+
Description: >-
|
34
|
+
Check for overriding Active Record methods instead of using
|
35
|
+
callbacks.
|
36
|
+
Enabled: true
|
37
|
+
VersionAdded: '0.67'
|
38
|
+
Include:
|
39
|
+
- app/models/**/*.rb
|
40
|
+
|
41
|
+
Rails/ActiveSupportAliases:
|
42
|
+
Description: >-
|
43
|
+
Avoid ActiveSupport aliases of standard ruby methods:
|
44
|
+
`String#starts_with?`, `String#ends_with?`,
|
45
|
+
`Array#append`, `Array#prepend`.
|
46
|
+
Enabled: true
|
47
|
+
VersionAdded: '0.48'
|
48
|
+
|
49
|
+
Rails/ApplicationJob:
|
50
|
+
Description: 'Check that jobs subclass ApplicationJob.'
|
51
|
+
Enabled: true
|
52
|
+
VersionAdded: '0.49'
|
53
|
+
|
54
|
+
Rails/ApplicationRecord:
|
55
|
+
Description: 'Check that models subclass ApplicationRecord.'
|
56
|
+
Enabled: true
|
57
|
+
VersionAdded: '0.49'
|
58
|
+
|
59
|
+
Rails/AssertNot:
|
60
|
+
Description: 'Use `assert_not` instead of `assert !`.'
|
61
|
+
Enabled: true
|
62
|
+
VersionAdded: '0.56'
|
63
|
+
Include:
|
64
|
+
- '**/test/**/*'
|
65
|
+
|
66
|
+
Rails/BelongsTo:
|
67
|
+
Description: >-
|
68
|
+
Use `optional: true` instead of `required: false` for
|
69
|
+
`belongs_to` relations'
|
70
|
+
Enabled: true
|
71
|
+
VersionAdded: '0.62'
|
72
|
+
|
73
|
+
Rails/Blank:
|
74
|
+
Description: 'Enforces use of `blank?`.'
|
75
|
+
Enabled: true
|
76
|
+
VersionAdded: '0.48'
|
77
|
+
VersionChanged: '0.67'
|
78
|
+
# Convert usages of `nil? || empty?` to `blank?`
|
79
|
+
NilOrEmpty: true
|
80
|
+
# Convert usages of `!present?` to `blank?`
|
81
|
+
NotPresent: true
|
82
|
+
# Convert usages of `unless present?` to `if blank?`
|
83
|
+
UnlessPresent: true
|
84
|
+
|
85
|
+
Rails/BulkChangeTable:
|
86
|
+
Description: 'Check whether alter queries are combinable.'
|
87
|
+
Enabled: true
|
88
|
+
VersionAdded: '0.57'
|
89
|
+
Database: null
|
90
|
+
SupportedDatabases:
|
91
|
+
- mysql
|
92
|
+
- postgresql
|
93
|
+
Include:
|
94
|
+
- db/migrate/*.rb
|
95
|
+
|
96
|
+
Rails/CreateTableWithTimestamps:
|
97
|
+
Description: >-
|
98
|
+
Checks the migration for which timestamps are not included
|
99
|
+
when creating a new table.
|
100
|
+
Enabled: true
|
101
|
+
VersionAdded: '0.52'
|
102
|
+
Include:
|
103
|
+
- db/migrate/*.rb
|
104
|
+
|
105
|
+
Rails/Date:
|
106
|
+
Description: >-
|
107
|
+
Checks the correct usage of date aware methods,
|
108
|
+
such as Date.today, Date.current etc.
|
109
|
+
Enabled: true
|
110
|
+
VersionAdded: '0.30'
|
111
|
+
VersionChanged: '0.33'
|
112
|
+
# The value `strict` disallows usage of `Date.today`, `Date.current`,
|
113
|
+
# `Date#to_time` etc.
|
114
|
+
# The value `flexible` allows usage of `Date.current`, `Date.yesterday`, etc
|
115
|
+
# (but not `Date.today`) which are overridden by ActiveSupport to handle current
|
116
|
+
# time zone.
|
117
|
+
EnforcedStyle: flexible
|
118
|
+
SupportedStyles:
|
119
|
+
- strict
|
120
|
+
- flexible
|
121
|
+
|
122
|
+
Rails/Delegate:
|
123
|
+
Description: 'Prefer delegate method for delegations.'
|
124
|
+
Enabled: true
|
125
|
+
VersionAdded: '0.21'
|
126
|
+
VersionChanged: '0.50'
|
127
|
+
# When set to true, using the target object as a prefix of the
|
128
|
+
# method name without using the `delegate` method will be a
|
129
|
+
# violation. When set to false, this case is legal.
|
130
|
+
EnforceForPrefixed: true
|
131
|
+
|
132
|
+
Rails/DelegateAllowBlank:
|
133
|
+
Description: 'Do not use allow_blank as an option to delegate.'
|
134
|
+
Enabled: true
|
135
|
+
VersionAdded: '0.44'
|
136
|
+
|
137
|
+
Rails/DynamicFindBy:
|
138
|
+
Description: 'Use `find_by` instead of dynamic `find_by_*`.'
|
139
|
+
StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#find_by'
|
140
|
+
Enabled: true
|
141
|
+
VersionAdded: '0.44'
|
142
|
+
Whitelist:
|
143
|
+
- find_by_sql
|
144
|
+
|
145
|
+
Rails/EnumUniqueness:
|
146
|
+
Description: 'Avoid duplicate integers in hash-syntax `enum` declaration.'
|
147
|
+
Enabled: true
|
148
|
+
VersionAdded: '0.46'
|
149
|
+
Include:
|
150
|
+
- app/models/**/*.rb
|
151
|
+
|
152
|
+
Rails/EnvironmentComparison:
|
153
|
+
Description: "Favor `Rails.env.production?` over `Rails.env == 'production'`"
|
154
|
+
Enabled: true
|
155
|
+
VersionAdded: '0.52'
|
156
|
+
|
157
|
+
Rails/Exit:
|
158
|
+
Description: >-
|
159
|
+
Favor `fail`, `break`, `return`, etc. over `exit` in
|
160
|
+
application or library code outside of Rake files to avoid
|
161
|
+
exits during unit testing or running in production.
|
162
|
+
Enabled: true
|
163
|
+
VersionAdded: '0.41'
|
164
|
+
Include:
|
165
|
+
- app/**/*.rb
|
166
|
+
- config/**/*.rb
|
167
|
+
- lib/**/*.rb
|
168
|
+
Exclude:
|
169
|
+
- lib/**/*.rake
|
170
|
+
|
171
|
+
Rails/FilePath:
|
172
|
+
Description: 'Use `Rails.root.join` for file path joining.'
|
173
|
+
Enabled: true
|
174
|
+
VersionAdded: '0.47'
|
175
|
+
VersionChanged: '0.57'
|
176
|
+
EnforcedStyle: arguments
|
177
|
+
SupportedStyles:
|
178
|
+
- slashes
|
179
|
+
- arguments
|
180
|
+
|
181
|
+
Rails/FindBy:
|
182
|
+
Description: 'Prefer find_by over where.first.'
|
183
|
+
StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#find_by'
|
184
|
+
Enabled: true
|
185
|
+
VersionAdded: '0.30'
|
186
|
+
Include:
|
187
|
+
- app/models/**/*.rb
|
188
|
+
|
189
|
+
Rails/FindEach:
|
190
|
+
Description: 'Prefer all.find_each over all.find.'
|
191
|
+
StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#find-each'
|
192
|
+
Enabled: true
|
193
|
+
VersionAdded: '0.30'
|
194
|
+
Include:
|
195
|
+
- app/models/**/*.rb
|
196
|
+
|
197
|
+
Rails/HasAndBelongsToMany:
|
198
|
+
Description: 'Prefer has_many :through to has_and_belongs_to_many.'
|
199
|
+
StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#has-many-through'
|
200
|
+
Enabled: true
|
201
|
+
VersionAdded: '0.12'
|
202
|
+
Include:
|
203
|
+
- app/models/**/*.rb
|
204
|
+
|
205
|
+
Rails/HasManyOrHasOneDependent:
|
206
|
+
Description: 'Define the dependent option to the has_many and has_one associations.'
|
207
|
+
StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#has_many-has_one-dependent-option'
|
208
|
+
Enabled: true
|
209
|
+
VersionAdded: '0.50'
|
210
|
+
Include:
|
211
|
+
- app/models/**/*.rb
|
212
|
+
|
213
|
+
Rails/HelperInstanceVariable:
|
214
|
+
Description: 'Do not use instance variables in helpers'
|
215
|
+
Enabled: true
|
216
|
+
VersionAdded: '2.0'
|
217
|
+
Include:
|
218
|
+
- app/helpers/**/*.rb
|
219
|
+
|
220
|
+
Rails/HttpPositionalArguments:
|
221
|
+
Description: 'Use keyword arguments instead of positional arguments in http method calls.'
|
222
|
+
Enabled: true
|
223
|
+
VersionAdded: '0.44'
|
224
|
+
Include:
|
225
|
+
- 'spec/**/*'
|
226
|
+
- 'test/**/*'
|
227
|
+
|
228
|
+
Rails/HttpStatus:
|
229
|
+
Description: 'Enforces use of symbolic or numeric value to define HTTP status.'
|
230
|
+
Enabled: true
|
231
|
+
VersionAdded: '0.54'
|
232
|
+
EnforcedStyle: symbolic
|
233
|
+
SupportedStyles:
|
234
|
+
- numeric
|
235
|
+
- symbolic
|
236
|
+
|
237
|
+
Rails/IgnoredSkipActionFilterOption:
|
238
|
+
Description: 'Checks that `if` and `only` (or `except`) are not used together as options of `skip_*` action filter.'
|
239
|
+
Reference: 'https://api.rubyonrails.org/classes/AbstractController/Callbacks/ClassMethods.html#method-i-_normalize_callback_options'
|
240
|
+
Enabled: true
|
241
|
+
VersionAdded: '0.63'
|
242
|
+
Include:
|
243
|
+
- app/controllers/**/*.rb
|
244
|
+
|
245
|
+
Rails/InverseOf:
|
246
|
+
Description: 'Checks for associations where the inverse cannot be determined automatically.'
|
247
|
+
Enabled: true
|
248
|
+
VersionAdded: '0.52'
|
249
|
+
Include:
|
250
|
+
- app/models/**/*.rb
|
251
|
+
|
252
|
+
Rails/LexicallyScopedActionFilter:
|
253
|
+
Description: "Checks that methods specified in the filter's `only` or `except` options are explicitly defined in the controller."
|
254
|
+
StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#lexically-scoped-action-filter'
|
255
|
+
Enabled: true
|
256
|
+
Safe: false
|
257
|
+
VersionAdded: '0.52'
|
258
|
+
Include:
|
259
|
+
- app/controllers/**/*.rb
|
260
|
+
|
261
|
+
Rails/LinkToBlank:
|
262
|
+
Description: 'Checks that `link_to` with a `target: "_blank"` have a `rel: "noopener"` option passed to them.'
|
263
|
+
Reference:
|
264
|
+
- https://mathiasbynens.github.io/rel-noopener/
|
265
|
+
- https://html.spec.whatwg.org/multipage/links.html#link-type-noopener
|
266
|
+
- https://html.spec.whatwg.org/multipage/links.html#link-type-noreferrer
|
267
|
+
Enabled: true
|
268
|
+
VersionAdded: '0.62'
|
269
|
+
|
270
|
+
Rails/NotNullColumn:
|
271
|
+
Description: 'Do not add a NOT NULL column without a default value'
|
272
|
+
Enabled: true
|
273
|
+
VersionAdded: '0.43'
|
274
|
+
Include:
|
275
|
+
- db/migrate/*.rb
|
276
|
+
|
277
|
+
Rails/Output:
|
278
|
+
Description: 'Checks for calls to puts, print, etc.'
|
279
|
+
Enabled: true
|
280
|
+
VersionAdded: '0.15'
|
281
|
+
VersionChanged: '0.19'
|
282
|
+
Include:
|
283
|
+
- app/**/*.rb
|
284
|
+
- config/**/*.rb
|
285
|
+
- db/**/*.rb
|
286
|
+
- lib/**/*.rb
|
287
|
+
|
288
|
+
Rails/OutputSafety:
|
289
|
+
Description: 'The use of `html_safe` or `raw` may be a security risk.'
|
290
|
+
Enabled: true
|
291
|
+
VersionAdded: '0.41'
|
292
|
+
|
293
|
+
Rails/PluralizationGrammar:
|
294
|
+
Description: 'Checks for incorrect grammar when using methods like `3.day.ago`.'
|
295
|
+
Enabled: true
|
296
|
+
VersionAdded: '0.35'
|
297
|
+
|
298
|
+
Rails/Presence:
|
299
|
+
Description: 'Checks code that can be written more easily using `Object#presence` defined by Active Support.'
|
300
|
+
Enabled: true
|
301
|
+
VersionAdded: '0.52'
|
302
|
+
|
303
|
+
Rails/Present:
|
304
|
+
Description: 'Enforces use of `present?`.'
|
305
|
+
Enabled: true
|
306
|
+
VersionAdded: '0.48'
|
307
|
+
VersionChanged: '0.67'
|
308
|
+
# Convert usages of `!nil? && !empty?` to `present?`
|
309
|
+
NotNilAndNotEmpty: true
|
310
|
+
# Convert usages of `!blank?` to `present?`
|
311
|
+
NotBlank: true
|
312
|
+
# Convert usages of `unless blank?` to `if present?`
|
313
|
+
UnlessBlank: true
|
314
|
+
|
315
|
+
Rails/ReadWriteAttribute:
|
316
|
+
Description: >-
|
317
|
+
Checks for read_attribute(:attr) and
|
318
|
+
write_attribute(:attr, val).
|
319
|
+
StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#read-attribute'
|
320
|
+
Enabled: true
|
321
|
+
VersionAdded: '0.20'
|
322
|
+
VersionChanged: '0.29'
|
323
|
+
Include:
|
324
|
+
- app/models/**/*.rb
|
325
|
+
|
326
|
+
Rails/RedundantAllowNil:
|
327
|
+
Description: >-
|
328
|
+
Finds redundant use of `allow_nil` when `allow_blank` is set to
|
329
|
+
certain values in model validations.
|
330
|
+
Enabled: true
|
331
|
+
VersionAdded: '0.67'
|
332
|
+
Include:
|
333
|
+
- app/models/**/*.rb
|
334
|
+
|
335
|
+
Rails/RedundantReceiverInWithOptions:
|
336
|
+
Description: 'Checks for redundant receiver in `with_options`.'
|
337
|
+
Enabled: true
|
338
|
+
VersionAdded: '0.52'
|
339
|
+
|
340
|
+
Rails/ReflectionClassName:
|
341
|
+
Description: 'Use a string for `class_name` option value in the definition of a reflection.'
|
342
|
+
Enabled: true
|
343
|
+
VersionAdded: '0.64'
|
344
|
+
|
345
|
+
Rails/RefuteMethods:
|
346
|
+
Description: 'Use `assert_not` methods instead of `refute` methods.'
|
347
|
+
Enabled: true
|
348
|
+
VersionAdded: '0.56'
|
349
|
+
Include:
|
350
|
+
- '**/test/**/*'
|
351
|
+
|
352
|
+
Rails/RelativeDateConstant:
|
353
|
+
Description: 'Do not assign relative date to constants.'
|
354
|
+
Enabled: true
|
355
|
+
VersionAdded: '0.48'
|
356
|
+
VersionChanged: '0.59'
|
357
|
+
AutoCorrect: false
|
358
|
+
|
359
|
+
Rails/RequestReferer:
|
360
|
+
Description: 'Use consistent syntax for request.referer.'
|
361
|
+
Enabled: true
|
362
|
+
VersionAdded: '0.41'
|
363
|
+
EnforcedStyle: referer
|
364
|
+
SupportedStyles:
|
365
|
+
- referer
|
366
|
+
- referrer
|
367
|
+
|
368
|
+
Rails/ReversibleMigration:
|
369
|
+
Description: 'Checks whether the change method of the migration file is reversible.'
|
370
|
+
StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#reversible-migration'
|
371
|
+
Reference: 'https://api.rubyonrails.org/classes/ActiveRecord/Migration/CommandRecorder.html'
|
372
|
+
Enabled: true
|
373
|
+
VersionAdded: '0.47'
|
374
|
+
Include:
|
375
|
+
- db/migrate/*.rb
|
376
|
+
|
377
|
+
Rails/SafeNavigation:
|
378
|
+
Description: "Use Ruby's safe navigation operator (`&.`) instead of `try!`"
|
379
|
+
Enabled: true
|
380
|
+
VersionAdded: '0.43'
|
381
|
+
# This will convert usages of `try` to use safe navigation as well as `try!`.
|
382
|
+
# `try` and `try!` work slightly differently. `try!` and safe navigation will
|
383
|
+
# both raise a `NoMethodError` if the receiver of the method call does not
|
384
|
+
# implement the intended method. `try` will not raise an exception for this.
|
385
|
+
ConvertTry: false
|
386
|
+
|
387
|
+
Rails/SaveBang:
|
388
|
+
Description: 'Identifies possible cases where Active Record save! or related should be used.'
|
389
|
+
StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#save-bang'
|
390
|
+
Enabled: false
|
391
|
+
VersionAdded: '0.42'
|
392
|
+
VersionChanged: '0.59'
|
393
|
+
AllowImplicitReturn: true
|
394
|
+
AllowedReceivers: []
|
395
|
+
|
396
|
+
Rails/ScopeArgs:
|
397
|
+
Description: 'Checks the arguments of ActiveRecord scopes.'
|
398
|
+
Enabled: true
|
399
|
+
VersionAdded: '0.19'
|
400
|
+
Include:
|
401
|
+
- app/models/**/*.rb
|
402
|
+
|
403
|
+
Rails/SkipsModelValidations:
|
404
|
+
Description: >-
|
405
|
+
Use methods that skips model validations with caution.
|
406
|
+
See reference for more information.
|
407
|
+
Reference: 'https://guides.rubyonrails.org/active_record_validations.html#skipping-validations'
|
408
|
+
Enabled: true
|
409
|
+
VersionAdded: '0.47'
|
410
|
+
VersionChanged: '0.60'
|
411
|
+
Blacklist:
|
412
|
+
- decrement!
|
413
|
+
- decrement_counter
|
414
|
+
- increment!
|
415
|
+
- increment_counter
|
416
|
+
- toggle!
|
417
|
+
- touch
|
418
|
+
- update_all
|
419
|
+
- update_attribute
|
420
|
+
- update_column
|
421
|
+
- update_columns
|
422
|
+
- update_counters
|
423
|
+
Whitelist: []
|
424
|
+
|
425
|
+
Rails/TimeZone:
|
426
|
+
Description: 'Checks the correct usage of time zone aware methods.'
|
427
|
+
StyleGuide: 'https://github.com/rubocop-hq/rails-style-guide#time'
|
428
|
+
Reference: 'http://danilenko.org/2012/7/6/rails_timezones'
|
429
|
+
Enabled: true
|
430
|
+
Safe: false
|
431
|
+
VersionAdded: '0.30'
|
432
|
+
VersionChanged: '0.68'
|
433
|
+
# The value `strict` means that `Time` should be used with `zone`.
|
434
|
+
# The value `flexible` allows usage of `in_time_zone` instead of `zone`.
|
435
|
+
EnforcedStyle: flexible
|
436
|
+
SupportedStyles:
|
437
|
+
- strict
|
438
|
+
- flexible
|
439
|
+
|
440
|
+
Rails/UniqBeforePluck:
|
441
|
+
Description: 'Prefer the use of uniq or distinct before pluck.'
|
442
|
+
Enabled: true
|
443
|
+
VersionAdded: '0.40'
|
444
|
+
VersionChanged: '0.47'
|
445
|
+
EnforcedStyle: conservative
|
446
|
+
SupportedStyles:
|
447
|
+
- conservative
|
448
|
+
- aggressive
|
449
|
+
AutoCorrect: false
|
450
|
+
|
451
|
+
Rails/UnknownEnv:
|
452
|
+
Description: 'Use correct environment name.'
|
453
|
+
Enabled: true
|
454
|
+
VersionAdded: '0.51'
|
455
|
+
Environments:
|
456
|
+
- development
|
457
|
+
- test
|
458
|
+
- production
|
459
|
+
|
460
|
+
Rails/Validation:
|
461
|
+
Description: 'Use validates :attribute, hash of validations.'
|
462
|
+
Enabled: true
|
463
|
+
VersionAdded: '0.9'
|
464
|
+
VersionChanged: '0.41'
|
465
|
+
Include:
|
466
|
+
- app/models/**/*.rb
|