cookstyle 1.4.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,24 +9,51 @@ inherit_from:
9
9
  AllCops:
10
10
  # Include common Ruby source files.
11
11
  Include:
12
+ - '**/*.builder'
13
+ - '**/*.fcgi'
12
14
  - '**/*.gemspec'
13
- - '**/*.podspec'
15
+ - '**/*.god'
16
+ - '**/*.jb'
14
17
  - '**/*.jbuilder'
15
- - '**/*.rake'
18
+ - '**/*.mspec'
16
19
  - '**/*.opal'
20
+ - '**/*.pluginspec'
21
+ - '**/*.podspec'
22
+ - '**/*.rabl'
23
+ - '**/*.rake'
24
+ - '**/*.rbuild'
25
+ - '**/*.rbw'
26
+ - '**/*.rbx'
27
+ - '**/*.ru'
28
+ - '**/*.ruby'
29
+ - '**/*.spec'
30
+ - '**/*.thor'
31
+ - '**/*.watchr'
32
+ - '**/.irbrc'
33
+ - '**/.pryrc'
34
+ - '**/buildfile'
17
35
  - '**/config.ru'
18
- - '**/Gemfile'
19
- - '**/Rakefile'
36
+ - '**/Appraisals'
37
+ - '**/Berksfile'
38
+ - '**/Brewfile'
39
+ - '**/Buildfile'
20
40
  - '**/Capfile'
41
+ - '**/Cheffile'
42
+ - '**/Dangerfile'
43
+ - '**/Deliverfile'
44
+ - '**/Fastfile'
45
+ - '**/*Fastfile'
46
+ - '**/Gemfile'
21
47
  - '**/Guardfile'
48
+ - '**/Jarfile'
49
+ - '**/Mavenfile'
22
50
  - '**/Podfile'
51
+ - '**/Puppetfile'
52
+ - '**/Rakefile'
53
+ - '**/Snapfile'
23
54
  - '**/Thorfile'
24
- - '**/Vagrantfile'
25
- - '**/Berksfile'
26
- - '**/Cheffile'
27
55
  - '**/Vagabondfile'
28
- - '**/Fastfile'
29
- - '**/*Fastfile'
56
+ - '**/Vagrantfile'
30
57
  Exclude:
31
58
  - 'vendor/**/*'
32
59
  # Default formatter will be used if no `-f/--format` option is given.
@@ -51,11 +78,17 @@ AllCops:
51
78
  # the `--only-guide-cops` option.
52
79
  StyleGuideCopsOnly: false
53
80
  # All cops except the ones in disabled.yml are enabled by default. Change
54
- # this behavior by overriding `DisabledByDefault`. When `DisabledByDefault` is
55
- # `true`, all cops in the default configuration are disabled, and only cops
56
- # in user configuration are enabled. This makes cops opt-in instead of
57
- # opt-out. Note that when `DisabledByDefault` is `true`, cops in user
58
- # configuration will be enabled even if they don't set the Enabled parameter.
81
+ # this behavior by overriding either `DisabledByDefault` or `EnabledByDefault`.
82
+ # When `DisabledByDefault` is `true`, all cops in the default configuration
83
+ # are disabled, and only cops in user configuration are enabled. This makes
84
+ # cops opt-in instead of opt-out. Note that when `DisabledByDefault` is `true`,
85
+ # cops in user configuration will be enabled even if they don't set the
86
+ # Enabled parameter.
87
+ # When `EnabledByDefault` is `true`, all cops, even those in disabled.yml,
88
+ # are enabled by default. Cops can still be disabled in user configuration.
89
+ # Note that it is invalid to set both EnabledByDefault and DisabledByDefault
90
+ # to true in the same configuration.
91
+ EnabledByDefault: false
59
92
  DisabledByDefault: false
60
93
  # Enables the result cache if `true`. Can be overridden by the `--cache` command
61
94
  # line option.
@@ -63,18 +96,17 @@ AllCops:
63
96
  # Threshold for how many files can be stored in the result cache before some
64
97
  # of the files are automatically removed.
65
98
  MaxFilesInCache: 20000
66
- # The cache will be stored in "rubocop_cache" under this directory. The name
67
- # "/tmp" is special and will be converted to the system temporary directory,
68
- # which is "/tmp" on Unix-like systems, but could be something else on other
69
- # systems.
70
- CacheRootDirectory: /tmp
71
- # The default cache root directory is /tmp, which on most systems is
72
- # writable by any system user. This means that it is possible for a
73
- # malicious user to anticipate the location of Rubocop's cache directory,
74
- # and create a symlink in its place that could cause Rubocop to overwrite
75
- # unintended files, or read malicious input. If you are certain that your
76
- # cache location is secure from this kind of attack, and wish to use a
77
- # symlinked cache location, set this value to "true".
99
+ # The cache will be stored in "rubocop_cache" under this directory. If
100
+ # CacheRootDirectory is ~ (nil), which it is by default, the root will be
101
+ # taken from the environment variable `$XDG_CACHE_HOME` if it is set, or if
102
+ # `$XDG_CACHE_HOME` is not set, it will be `$HOME/.cache/`.
103
+ CacheRootDirectory: ~
104
+ # It is possible for a malicious user to know the location of RuboCop's cache
105
+ # directory by looking at CacheRootDirectory, and create a symlink in its
106
+ # place that could cause RuboCop to overwrite unintended files, or read
107
+ # malicious input. If you are certain that your cache location is secure from
108
+ # this kind of attack, and wish to use a symlinked cache location, set this
109
+ # value to "true".
78
110
  AllowSymlinksInCacheRootDirectory: false
79
111
  # What MRI version of the Ruby interpreter is the inspected code intended to
80
112
  # run on? (If there is more than one, set this to the lowest version.)
@@ -82,25 +114,22 @@ AllCops:
82
114
  # Else if .ruby-version exists and it contains an MRI version it is used.
83
115
  # Otherwise we fallback to the oldest officially supported Ruby version (2.1).
84
116
  TargetRubyVersion: ~
117
+ TargetRailsVersion: 5.0
118
+
119
+ #################### Layout ###########################
85
120
 
86
121
  # Indent private/protected/public as deep as method definitions
87
- Style/AccessModifierIndentation:
122
+ Layout/AccessModifierIndentation:
88
123
  EnforcedStyle: indent
89
124
  SupportedStyles:
90
125
  - outdent
91
126
  - indent
92
- # By default, the indentation width from Style/IndentationWidth is used
127
+ # By default, the indentation width from Layout/IndentationWidth is used
93
128
  # But it can be overridden by setting this parameter
94
129
  IndentationWidth: ~
95
130
 
96
- Style/Alias:
97
- EnforcedStyle: prefer_alias
98
- SupportedStyles:
99
- - prefer_alias
100
- - prefer_alias_method
101
-
102
131
  # Align the elements of a hash literal if they span more than one line.
103
- Style/AlignHash:
132
+ Layout/AlignHash:
104
133
  # Alignment of entries using hash rocket as separator. Valid values are:
105
134
  #
106
135
  # key - left alignment of keys
@@ -171,7 +200,7 @@ Style/AlignHash:
171
200
  - ignore_implicit
172
201
  - ignore_explicit
173
202
 
174
- Style/AlignParameters:
203
+ Layout/AlignParameters:
175
204
  # Alignment of parameters in multi-line method calls.
176
205
  #
177
206
  # The `with_first_parameter` style aligns the following lines along the same
@@ -189,10 +218,329 @@ Style/AlignParameters:
189
218
  SupportedStyles:
190
219
  - with_first_parameter
191
220
  - with_fixed_indentation
192
- # By default, the indentation width from Style/IndentationWidth is used
221
+ # By default, the indentation width from Layout/IndentationWidth is used
222
+ # But it can be overridden by setting this parameter
223
+ IndentationWidth: ~
224
+
225
+ # Indentation of `when`.
226
+ Layout/CaseIndentation:
227
+ EnforcedStyle: case
228
+ SupportedStyles:
229
+ - case
230
+ - end
231
+ IndentOneStep: false
232
+ # By default, the indentation width from `Layout/IndentationWidth` is used.
233
+ # But it can be overridden by setting this parameter.
234
+ # This only matters if `IndentOneStep` is `true`
235
+ IndentationWidth: ~
236
+
237
+ # Multi-line method chaining should be done with leading dots.
238
+ Layout/DotPosition:
239
+ EnforcedStyle: leading
240
+ SupportedStyles:
241
+ - leading
242
+ - trailing
243
+
244
+ # Use empty lines between defs.
245
+ Layout/EmptyLineBetweenDefs:
246
+ # If `true`, this parameter means that single line method definitions don't
247
+ # need an empty line between them.
248
+ AllowAdjacentOneLineDefs: false
249
+ # Can be array to specify minimum and maximum number of empty lines, e.g. [1, 2]
250
+ NumberOfEmptyLines: 1
251
+
252
+ Layout/EmptyLinesAroundBlockBody:
253
+ EnforcedStyle: no_empty_lines
254
+ SupportedStyles:
255
+ - empty_lines
256
+ - no_empty_lines
257
+
258
+ Layout/EmptyLinesAroundClassBody:
259
+ EnforcedStyle: no_empty_lines
260
+ SupportedStyles:
261
+ - empty_lines
262
+ - empty_lines_except_namespace
263
+ - empty_lines_special
264
+ - no_empty_lines
265
+
266
+ Layout/EmptyLinesAroundModuleBody:
267
+ EnforcedStyle: no_empty_lines
268
+ SupportedStyles:
269
+ - empty_lines
270
+ - empty_lines_except_namespace
271
+ - empty_lines_special
272
+ - no_empty_lines
273
+
274
+ Layout/EndOfLine:
275
+ # The `native` style means that CR+LF (Carriage Return + Line Feed) is
276
+ # enforced on Windows, and LF is enforced on other platforms. The other styles
277
+ # mean LF and CR+LF, respectively.
278
+ EnforcedStyle: native
279
+ SupportedStyles:
280
+ - native
281
+ - lf
282
+ - crlf
283
+
284
+ Layout/ExtraSpacing:
285
+ # When true, allows most uses of extra spacing if the intent is to align
286
+ # things with the previous or next line, not counting empty lines or comment
287
+ # lines.
288
+ AllowForAlignment: true
289
+ # When true, forces the alignment of `=` in assignments on consecutive lines.
290
+ ForceEqualSignAlignment: false
291
+
292
+ Layout/FirstParameterIndentation:
293
+ EnforcedStyle: special_for_inner_method_call_in_parentheses
294
+ SupportedStyles:
295
+ # The first parameter should always be indented one step more than the
296
+ # preceding line.
297
+ - consistent
298
+ # The first parameter should normally be indented one step more than the
299
+ # preceding line, but if it's a parameter for a method call that is itself
300
+ # a parameter in a method call, then the inner parameter should be indented
301
+ # relative to the inner method.
302
+ - special_for_inner_method_call
303
+ # Same as `special_for_inner_method_call` except that the special rule only
304
+ # applies if the outer method call encloses its arguments in parentheses.
305
+ - special_for_inner_method_call_in_parentheses
306
+ # By default, the indentation width from `Layout/IndentationWidth` is used
307
+ # But it can be overridden by setting this parameter
308
+ IndentationWidth: ~
309
+
310
+ Layout/IndentationConsistency:
311
+ # The difference between `rails` and `normal` is that the `rails` style
312
+ # prescribes that in classes and modules the `protected` and `private`
313
+ # modifier keywords shall be indented the same as public methods and that
314
+ # protected and private members shall be indented one step more than the
315
+ # modifiers. Other than that, both styles mean that entities on the same
316
+ # logical depth shall have the same indentation.
317
+ EnforcedStyle: normal
318
+ SupportedStyles:
319
+ - normal
320
+ - rails
321
+
322
+ Layout/IndentationWidth:
323
+ # Number of spaces for each indentation level.
324
+ Width: 2
325
+ IgnoredPatterns: []
326
+
327
+ # Checks the indentation of the first element in an array literal.
328
+ Layout/IndentArray:
329
+ # The value `special_inside_parentheses` means that array literals with
330
+ # brackets that have their opening bracket on the same line as a surrounding
331
+ # opening round parenthesis, shall have their first element indented relative
332
+ # to the first position inside the parenthesis.
333
+ #
334
+ # The value `consistent` means that the indentation of the first element shall
335
+ # always be relative to the first position of the line where the opening
336
+ # bracket is.
337
+ #
338
+ # The value `align_brackets` means that the indentation of the first element
339
+ # shall always be relative to the position of the opening bracket.
340
+ EnforcedStyle: special_inside_parentheses
341
+ SupportedStyles:
342
+ - special_inside_parentheses
343
+ - consistent
344
+ - align_brackets
345
+ # By default, the indentation width from `Layout/IndentationWidth` is used
346
+ # But it can be overridden by setting this parameter
347
+ IndentationWidth: ~
348
+
349
+ # Checks the indentation of assignment RHS, when on a different line from LHS
350
+ Layout/IndentAssignment:
351
+ # By default, the indentation width from `Layout/IndentationWidth` is used
352
+ # But it can be overridden by setting this parameter
353
+ IndentationWidth: ~
354
+
355
+ # Checks the indentation of the first key in a hash literal.
356
+ Layout/IndentHash:
357
+ # The value `special_inside_parentheses` means that hash literals with braces
358
+ # that have their opening brace on the same line as a surrounding opening
359
+ # round parenthesis, shall have their first key indented relative to the
360
+ # first position inside the parenthesis.
361
+ #
362
+ # The value `consistent` means that the indentation of the first key shall
363
+ # always be relative to the first position of the line where the opening
364
+ # brace is.
365
+ #
366
+ # The value `align_braces` means that the indentation of the first key shall
367
+ # always be relative to the position of the opening brace.
368
+ EnforcedStyle: special_inside_parentheses
369
+ SupportedStyles:
370
+ - special_inside_parentheses
371
+ - consistent
372
+ - align_braces
373
+ # By default, the indentation width from `Layout/IndentationWidth` is used
374
+ # But it can be overridden by setting this parameter
375
+ IndentationWidth: ~
376
+
377
+ Layout/IndentHeredoc:
378
+ EnforcedStyle: auto_detection
379
+ SupportedStyles:
380
+ - auto_detection
381
+ - squiggly
382
+ - active_support
383
+ - powerpack
384
+ - unindent
385
+
386
+ Layout/SpaceInLambdaLiteral:
387
+ EnforcedStyle: require_no_space
388
+ SupportedStyles:
389
+ - require_no_space
390
+ - require_space
391
+
392
+ Layout/MultilineArrayBraceLayout:
393
+ EnforcedStyle: symmetrical
394
+ SupportedStyles:
395
+ # symmetrical: closing brace is positioned in same way as opening brace
396
+ # new_line: closing brace is always on a new line
397
+ # same_line: closing brace is always on the same line as last element
398
+ - symmetrical
399
+ - new_line
400
+ - same_line
401
+
402
+ Layout/MultilineAssignmentLayout:
403
+ # The types of assignments which are subject to this rule.
404
+ SupportedTypes:
405
+ - block
406
+ - case
407
+ - class
408
+ - if
409
+ - kwbegin
410
+ - module
411
+ EnforcedStyle: new_line
412
+ SupportedStyles:
413
+ # Ensures that the assignment operator and the rhs are on the same line for
414
+ # the set of supported types.
415
+ - same_line
416
+ # Ensures that the assignment operator and the rhs are on separate lines
417
+ # for the set of supported types.
418
+ - new_line
419
+
420
+ Layout/MultilineHashBraceLayout:
421
+ EnforcedStyle: symmetrical
422
+ SupportedStyles:
423
+ # symmetrical: closing brace is positioned in same way as opening brace
424
+ # new_line: closing brace is always on a new line
425
+ # same_line: closing brace is always on same line as last element
426
+ - symmetrical
427
+ - new_line
428
+ - same_line
429
+
430
+ Layout/MultilineMethodCallBraceLayout:
431
+ EnforcedStyle: symmetrical
432
+ SupportedStyles:
433
+ # symmetrical: closing brace is positioned in same way as opening brace
434
+ # new_line: closing brace is always on a new line
435
+ # same_line: closing brace is always on the same line as last argument
436
+ - symmetrical
437
+ - new_line
438
+ - same_line
439
+
440
+ Layout/MultilineMethodCallIndentation:
441
+ EnforcedStyle: aligned
442
+ SupportedStyles:
443
+ - aligned
444
+ - indented
445
+ - indented_relative_to_receiver
446
+ # By default, the indentation width from Layout/IndentationWidth is used
447
+ # But it can be overridden by setting this parameter
448
+ IndentationWidth: ~
449
+
450
+ Layout/MultilineMethodDefinitionBraceLayout:
451
+ EnforcedStyle: symmetrical
452
+ SupportedStyles:
453
+ # symmetrical: closing brace is positioned in same way as opening brace
454
+ # new_line: closing brace is always on a new line
455
+ # same_line: closing brace is always on the same line as last parameter
456
+ - symmetrical
457
+ - new_line
458
+ - same_line
459
+
460
+ Layout/MultilineOperationIndentation:
461
+ EnforcedStyle: aligned
462
+ SupportedStyles:
463
+ - aligned
464
+ - indented
465
+ # By default, the indentation width from `Layout/IndentationWidth` is used
193
466
  # But it can be overridden by setting this parameter
194
467
  IndentationWidth: ~
195
468
 
469
+ Layout/SpaceAroundBlockParameters:
470
+ EnforcedStyleInsidePipes: no_space
471
+ SupportedStylesInsidePipes:
472
+ - space
473
+ - no_space
474
+
475
+ Layout/SpaceAroundEqualsInParameterDefault:
476
+ EnforcedStyle: space
477
+ SupportedStyles:
478
+ - space
479
+ - no_space
480
+
481
+ Layout/SpaceAroundOperators:
482
+ # When `true`, allows most uses of extra spacing if the intent is to align
483
+ # with an operator on the previous or next line, not counting empty lines
484
+ # or comment lines.
485
+ AllowForAlignment: true
486
+
487
+ Layout/SpaceBeforeBlockBraces:
488
+ EnforcedStyle: space
489
+ SupportedStyles:
490
+ - space
491
+ - no_space
492
+
493
+ Layout/SpaceBeforeFirstArg:
494
+ # When `true`, allows most uses of extra spacing if the intent is to align
495
+ # things with the previous or next line, not counting empty lines or comment
496
+ # lines.
497
+ AllowForAlignment: true
498
+
499
+ Layout/SpaceInsideBlockBraces:
500
+ EnforcedStyle: space
501
+ SupportedStyles:
502
+ - space
503
+ - no_space
504
+ EnforcedStyleForEmptyBraces: no_space
505
+ SupportedStylesForEmptyBraces:
506
+ - space
507
+ - no_space
508
+ # Space between `{` and `|`. Overrides `EnforcedStyle` if there is a conflict.
509
+ SpaceBeforeBlockParameters: true
510
+
511
+ Layout/SpaceInsideHashLiteralBraces:
512
+ EnforcedStyle: space
513
+ SupportedStyles:
514
+ - space
515
+ - no_space
516
+ # 'compact' normally requires a space inside hash braces, with the exception
517
+ # that successive left braces or right braces are collapsed together
518
+ - compact
519
+ EnforcedStyleForEmptyBraces: no_space
520
+ SupportedStylesForEmptyBraces:
521
+ - space
522
+ - no_space
523
+
524
+ Layout/SpaceInsideStringInterpolation:
525
+ EnforcedStyle: no_space
526
+ SupportedStyles:
527
+ - space
528
+ - no_space
529
+
530
+ Layout/TrailingBlankLines:
531
+ EnforcedStyle: final_newline
532
+ SupportedStyles:
533
+ - final_newline
534
+ - final_blank_line
535
+
536
+ #################### Style ###########################
537
+
538
+ Style/Alias:
539
+ EnforcedStyle: prefer_alias
540
+ SupportedStyles:
541
+ - prefer_alias
542
+ - prefer_alias_method
543
+
196
544
  Style/AndOr:
197
545
  # Whether `and` and `or` are banned only in conditionals (conditionals)
198
546
  # or completely (always).
@@ -201,7 +549,6 @@ Style/AndOr:
201
549
  - always
202
550
  - conditionals
203
551
 
204
-
205
552
  # Checks if usage of `%()` or `%Q()` matches configuration.
206
553
  Style/BarePercentLiterals:
207
554
  EnforcedStyle: bare_percent
@@ -294,18 +641,6 @@ Style/BracesAroundHashParameters:
294
641
  # also a hash literal.
295
642
  - context_dependent
296
643
 
297
- # Indentation of `when`.
298
- Style/CaseIndentation:
299
- EnforcedStyle: case
300
- SupportedStyles:
301
- - case
302
- - end
303
- IndentOneStep: false
304
- # By default, the indentation width from `Style/IndentationWidth` is used.
305
- # But it can be overridden by setting this parameter.
306
- # This only matters if `IndentOneStep` is `true`
307
- IndentationWidth: ~
308
-
309
644
  Style/ClassAndModuleChildren:
310
645
  # Checks the style of children definitions at classes and modules.
311
646
  #
@@ -410,17 +745,10 @@ Style/Copyright:
410
745
  Style/DocumentationMethod:
411
746
  RequireForNonPublicMethods: false
412
747
 
413
- # Multi-line method chaining should be done with leading dots.
414
- Style/DotPosition:
415
- EnforcedStyle: leading
416
- SupportedStyles:
417
- - leading
418
- - trailing
419
-
420
748
  # Warn on empty else statements
421
749
  # empty - warn only on empty `else`
422
750
  # nil - warn on `else` with nil in it
423
- # both - warn on empty `else` and `else` with nil in it
751
+ # both - warn on empty `else` and `else` with `nil` in it
424
752
  Style/EmptyElse:
425
753
  EnforcedStyle: both
426
754
  SupportedStyles:
@@ -428,34 +756,6 @@ Style/EmptyElse:
428
756
  - nil
429
757
  - both
430
758
 
431
- # Use empty lines between defs.
432
- Style/EmptyLineBetweenDefs:
433
- # If `true`, this parameter means that single line method definitions don't
434
- # need an empty line between them.
435
- AllowAdjacentOneLineDefs: false
436
-
437
- Style/EmptyLinesAroundBlockBody:
438
- EnforcedStyle: no_empty_lines
439
- SupportedStyles:
440
- - empty_lines
441
- - no_empty_lines
442
-
443
- Style/EmptyLinesAroundClassBody:
444
- EnforcedStyle: no_empty_lines
445
- SupportedStyles:
446
- - empty_lines
447
- - empty_lines_except_namespace
448
- - empty_lines_special
449
- - no_empty_lines
450
-
451
- Style/EmptyLinesAroundModuleBody:
452
- EnforcedStyle: no_empty_lines
453
- SupportedStyles:
454
- - empty_lines
455
- - empty_lines_except_namespace
456
- - empty_lines_special
457
- - no_empty_lines
458
-
459
759
  Style/EmptyMethod:
460
760
  EnforcedStyle: compact
461
761
  SupportedStyles:
@@ -473,14 +773,6 @@ Style/Encoding:
473
773
  - never
474
774
  AutoCorrectEncodingComment: '# encoding: utf-8'
475
775
 
476
- Style/ExtraSpacing:
477
- # When true, allows most uses of extra spacing if the intent is to align
478
- # things with the previous or next line, not counting empty lines or comment
479
- # lines.
480
- AllowForAlignment: true
481
- # When true, forces the alignment of `=` in assignments on consecutive lines.
482
- ForceEqualSignAlignment: false
483
-
484
776
  Style/FileName:
485
777
  # File names listed in `AllCops:Include` are excluded by default. Add extra
486
778
  # excludes here.
@@ -541,24 +833,6 @@ Style/FileName:
541
833
  - XSRF
542
834
  - XSS
543
835
 
544
- Style/FirstParameterIndentation:
545
- EnforcedStyle: special_for_inner_method_call_in_parentheses
546
- SupportedStyles:
547
- # The first parameter should always be indented one step more than the
548
- # preceding line.
549
- - consistent
550
- # The first parameter should normally be indented one step more than the
551
- # preceding line, but if it's a parameter for a method call that is itself
552
- # a parameter in a method call, then the inner parameter should be indented
553
- # relative to the inner method.
554
- - special_for_inner_method_call
555
- # Same as `special_for_inner_method_call` except that the special rule only
556
- # applies if the outer method call encloses its arguments in parentheses.
557
- - special_for_inner_method_call_in_parentheses
558
- # By default, the indentation width from `Style/IndentationWidth` is used
559
- # But it can be overridden by setting this parameter
560
- IndentationWidth: ~
561
-
562
836
  # Checks use of for or each in multiline loops.
563
837
  Style/For:
564
838
  EnforcedStyle: each
@@ -574,6 +848,16 @@ Style/FormatString:
574
848
  - sprintf
575
849
  - percent
576
850
 
851
+ # Enforce using either `%<token>s` or `%{token}`
852
+ Style/FormatStringToken:
853
+ EnforcedStyle: annotated
854
+ SupportedStyles:
855
+ # Prefer tokens which contain a sprintf like type annotation like
856
+ # `%<name>s`, `%<age>d`, `%<score>f`
857
+ - annotated
858
+ # Prefer simple looking "template" style tokens like `%{name}`, `%{age}`
859
+ - template
860
+
577
861
  Style/FrozenStringLiteralComment:
578
862
  EnforcedStyle: when_needed
579
863
  SupportedStyles:
@@ -598,90 +882,46 @@ Style/GlobalVars:
598
882
  Style/GuardClause:
599
883
  MinBodyLength: 1
600
884
 
601
- Style/HashSyntax:
602
- EnforcedStyle: ruby19
603
- SupportedStyles:
604
- # checks for 1.9 syntax (e.g. {a: 1}) for all symbol keys
605
- - ruby19
606
- # checks for hash rocket syntax for all hashes
607
- - hash_rockets
608
- # forbids mixed key syntaxes (e.g. {a: 1, :b => 2})
609
- - no_mixed_keys
610
- # enforces both ruby19 and no_mixed_keys styles
611
- - ruby19_no_mixed_keys
612
- # Force hashes that have a symbol value to use hash rockets
613
- UseHashRocketsWithSymbolValues: false
614
- # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
615
- PreferHashRocketsForNonAlnumEndingSymbols: false
616
-
617
- Style/IfUnlessModifier:
618
- MaxLineLength: 80
619
-
620
- Style/IndentationConsistency:
621
- # The difference between `rails` and `normal` is that the `rails` style
622
- # prescribes that in classes and modules the `protected` and `private`
623
- # modifier keywords shall be indented the same as public methods and that
624
- # protected and private members shall be indented one step more than the
625
- # modifiers. Other than that, both styles mean that entities on the same
626
- # logical depth shall have the same indentation.
627
- EnforcedStyle: normal
628
- SupportedStyles:
629
- - normal
630
- - rails
631
-
632
- Style/IndentationWidth:
633
- # Number of spaces for each indentation level.
634
- Width: 2
635
-
636
- # Checks the indentation of the first element in an array literal.
637
- Style/IndentArray:
638
- # The value `special_inside_parentheses` means that array literals with
639
- # brackets that have their opening bracket on the same line as a surrounding
640
- # opening round parenthesis, shall have their first element indented relative
641
- # to the first position inside the parenthesis.
642
- #
643
- # The value `consistent` means that the indentation of the first element shall
644
- # always be relative to the first position of the line where the opening
645
- # bracket is.
646
- #
647
- # The value `align_brackets` means that the indentation of the first element
648
- # shall always be relative to the position of the opening bracket.
649
- EnforcedStyle: special_inside_parentheses
650
- SupportedStyles:
651
- - special_inside_parentheses
652
- - consistent
653
- - align_brackets
654
- # By default, the indentation width from `Style/IndentationWidth` is used
655
- # But it can be overridden by setting this parameter
656
- IndentationWidth: ~
657
-
658
- # Checks the indentation of assignment RHS, when on a different line from LHS
659
- Style/IndentAssignment:
660
- # By default, the indentation width from `Style/IndentationWidth` is used
661
- # But it can be overridden by setting this parameter
662
- IndentationWidth: ~
663
-
664
- # Checks the indentation of the first key in a hash literal.
665
- Style/IndentHash:
666
- # The value `special_inside_parentheses` means that hash literals with braces
667
- # that have their opening brace on the same line as a surrounding opening
668
- # round parenthesis, shall have their first key indented relative to the
669
- # first position inside the parenthesis.
670
- #
671
- # The value `consistent` means that the indentation of the first key shall
672
- # always be relative to the first position of the line where the opening
673
- # brace is.
674
- #
675
- # The value `align_braces` means that the indentation of the first key shall
676
- # always be relative to the position of the opening brace.
677
- EnforcedStyle: special_inside_parentheses
885
+ Style/HashSyntax:
886
+ EnforcedStyle: ruby19
678
887
  SupportedStyles:
679
- - special_inside_parentheses
680
- - consistent
681
- - align_braces
682
- # By default, the indentation width from `Style/IndentationWidth` is used
683
- # But it can be overridden by setting this parameter
684
- IndentationWidth: ~
888
+ # checks for 1.9 syntax (e.g. {a: 1}) for all symbol keys
889
+ - ruby19
890
+ # checks for hash rocket syntax for all hashes
891
+ - hash_rockets
892
+ # forbids mixed key syntaxes (e.g. {a: 1, :b => 2})
893
+ - no_mixed_keys
894
+ # enforces both ruby19 and no_mixed_keys styles
895
+ - ruby19_no_mixed_keys
896
+ # Force hashes that have a symbol value to use hash rockets
897
+ UseHashRocketsWithSymbolValues: false
898
+ # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
899
+ PreferHashRocketsForNonAlnumEndingSymbols: false
900
+
901
+ Style/IfUnlessModifier:
902
+ MaxLineLength: 80
903
+
904
+ Style/InverseMethods:
905
+ Enabled: true
906
+ # `InverseMethods` are methods that can be inverted by a not (`not` or `!`)
907
+ # The relationship of inverse methods only needs to be defined in one direction.
908
+ # Keys and values both need to be defined as symbols.
909
+ InverseMethods:
910
+ :any?: :none?
911
+ :even?: :odd?
912
+ :==: :!=
913
+ :=~: :!~
914
+ :<: :>=
915
+ :>: :<=
916
+ # `ActiveSupport` defines some common inverse methods. They are listed below,
917
+ # and not enabled by default.
918
+ #:present?: :blank?,
919
+ #:include?: :exclude?
920
+ # `InverseBlocks` are methods that are inverted by inverting the return
921
+ # of the block that is passed to the method
922
+ InverseBlocks:
923
+ :select: :reject
924
+ :select!: :reject!
685
925
 
686
926
  Style/Lambda:
687
927
  EnforcedStyle: line_count_dependent
@@ -690,48 +930,15 @@ Style/Lambda:
690
930
  - lambda
691
931
  - literal
692
932
 
693
- Style/SpaceInLambdaLiteral:
694
- EnforcedStyle: require_no_space
695
- SupportedStyles:
696
- - require_no_space
697
- - require_space
698
-
699
933
  Style/LambdaCall:
700
934
  EnforcedStyle: call
701
935
  SupportedStyles:
702
936
  - call
703
937
  - braces
704
938
 
705
- Style/Next:
706
- # With `always` all conditions at the end of an iteration needs to be
707
- # replaced by next - with `skip_modifier_ifs` the modifier if like this one
708
- # are ignored: [1, 2].each { |a| return 'yes' if a == 1 }
709
- EnforcedStyle: skip_modifier_ifs
710
- # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
711
- # needs to have to trigger this cop
712
- MinBodyLength: 3
713
- SupportedStyles:
714
- - skip_modifier_ifs
715
- - always
716
-
717
- Style/NonNilCheck:
718
- # With `IncludeSemanticChanges` set to `true`, this cop reports offenses for
719
- # `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is
720
- # **usually** OK, but might change behavior.
721
- #
722
- # With `IncludeSemanticChanges` set to `false`, this cop does not report
723
- # offenses for `!x.nil?` and does no changes that might change behavior.
724
- IncludeSemanticChanges: false
725
-
726
- Style/NumericPredicate:
727
- EnforcedStyle: predicate
728
- SupportedStyles:
729
- - predicate
730
- - comparison
731
- # Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
732
- # false positives.
733
- Exclude:
734
- - 'spec/**/*'
939
+ Style/MethodCallWithArgsParentheses:
940
+ IgnoreMacros: true
941
+ IgnoredMethods: []
735
942
 
736
943
  Style/MethodDefParentheses:
737
944
  EnforcedStyle: require_parentheses
@@ -740,100 +947,68 @@ Style/MethodDefParentheses:
740
947
  - require_no_parentheses
741
948
  - require_no_parentheses_except_multiline
742
949
 
743
- Style/MethodCallWithArgsParentheses:
744
- IgnoredMethods: []
745
-
746
950
  Style/MethodName:
747
951
  EnforcedStyle: snake_case
748
952
  SupportedStyles:
749
953
  - snake_case
750
954
  - camelCase
751
955
 
956
+ # Checks the grouping of mixins (`include`, `extend`, `prepend`) in `class` and
957
+ # `module` bodies.
958
+ Style/MixinGrouping:
959
+ EnforcedStyle: separated
960
+ SupportedStyles:
961
+ # separated: each mixed in module goes in a separate statement.
962
+ # grouped: mixed in modules are grouped into a single statement.
963
+ - separated
964
+ - grouped
965
+
752
966
  Style/ModuleFunction:
753
967
  EnforcedStyle: module_function
754
968
  SupportedStyles:
755
969
  - module_function
756
970
  - extend_self
757
971
 
758
- Style/MultilineArrayBraceLayout:
759
- EnforcedStyle: symmetrical
760
- SupportedStyles:
761
- # symmetrical: closing brace is positioned in same way as opening brace
762
- # new_line: closing brace is always on a new line
763
- # same_line: closing brace is always on the same line as last element
764
- - symmetrical
765
- - new_line
766
- - same_line
767
-
768
- Style/MultilineAssignmentLayout:
769
- # The types of assignments which are subject to this rule.
770
- SupportedTypes:
771
- - block
772
- - case
773
- - class
774
- - if
775
- - kwbegin
776
- - module
777
- EnforcedStyle: new_line
778
- SupportedStyles:
779
- # Ensures that the assignment operator and the rhs are on the same line for
780
- # the set of supported types.
781
- - same_line
782
- # Ensures that the assignment operator and the rhs are on separate lines
783
- # for the set of supported types.
784
- - new_line
785
-
786
- Style/MultilineHashBraceLayout:
787
- EnforcedStyle: symmetrical
788
- SupportedStyles:
789
- # symmetrical: closing brace is positioned in same way as opening brace
790
- # new_line: closing brace is always on a new line
791
- # same_line: closing brace is always on same line as last element
792
- - symmetrical
793
- - new_line
794
- - same_line
795
-
796
- Style/MultilineMethodCallBraceLayout:
797
- EnforcedStyle: symmetrical
972
+ Style/MultilineMemoization:
973
+ EnforcedStyle: keyword
798
974
  SupportedStyles:
799
- # symmetrical: closing brace is positioned in same way as opening brace
800
- # new_line: closing brace is always on a new line
801
- # same_line: closing brace is always on the same line as last argument
802
- - symmetrical
803
- - new_line
804
- - same_line
975
+ - keyword
976
+ - braces
805
977
 
806
- Style/MultilineMethodCallIndentation:
807
- EnforcedStyle: aligned
978
+ Style/NegatedIf:
979
+ EnforcedStyle: both
808
980
  SupportedStyles:
809
- - aligned
810
- - indented
811
- - indented_relative_to_receiver
812
- # By default, the indentation width from Style/IndentationWidth is used
813
- # But it can be overridden by setting this parameter
814
- IndentationWidth: ~
981
+ # both: prefix and postfix negated `if` should both use `unless`
982
+ # prefix: only use `unless` for negated `if` statements positioned before the body of the statement
983
+ # postfix: only use `unless` for negated `if` statements positioned after the body of the statement
984
+ - both
985
+ - prefix
986
+ - postfix
815
987
 
816
- Style/MultilineMethodDefinitionBraceLayout:
817
- EnforcedStyle: symmetrical
988
+ Style/Next:
989
+ # With `always` all conditions at the end of an iteration needs to be
990
+ # replaced by next - with `skip_modifier_ifs` the modifier if like this one
991
+ # are ignored: [1, 2].each { |a| return 'yes' if a == 1 }
992
+ EnforcedStyle: skip_modifier_ifs
993
+ # `MinBodyLength` defines the number of lines of the a body of an `if` or `unless`
994
+ # needs to have to trigger this cop
995
+ MinBodyLength: 3
818
996
  SupportedStyles:
819
- # symmetrical: closing brace is positioned in same way as opening brace
820
- # new_line: closing brace is always on a new line
821
- # same_line: closing brace is always on the same line as last parameter
822
- - symmetrical
823
- - new_line
824
- - same_line
997
+ - skip_modifier_ifs
998
+ - always
825
999
 
826
- Style/MultilineOperationIndentation:
827
- EnforcedStyle: aligned
828
- SupportedStyles:
829
- - aligned
830
- - indented
831
- # By default, the indentation width from `Style/IndentationWidth` is used
832
- # But it can be overridden by setting this parameter
833
- IndentationWidth: ~
1000
+ Style/NonNilCheck:
1001
+ # With `IncludeSemanticChanges` set to `true`, this cop reports offenses for
1002
+ # `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which is
1003
+ # **usually** OK, but might change behavior.
1004
+ #
1005
+ # With `IncludeSemanticChanges` set to `false`, this cop does not report
1006
+ # offenses for `!x.nil?` and does no changes that might change behavior.
1007
+ IncludeSemanticChanges: false
834
1008
 
835
1009
  Style/NumericLiterals:
836
1010
  MinDigits: 5
1011
+ Strict: false
837
1012
 
838
1013
  Style/NumericLiteralPrefix:
839
1014
  EnforcedOctalStyle: zero_with_o
@@ -841,6 +1016,16 @@ Style/NumericLiteralPrefix:
841
1016
  - zero_with_o
842
1017
  - zero_only
843
1018
 
1019
+ Style/NumericPredicate:
1020
+ EnforcedStyle: predicate
1021
+ SupportedStyles:
1022
+ - predicate
1023
+ - comparison
1024
+ # Exclude RSpec specs because assertions like `expect(1).to be > 0` cause
1025
+ # false positives.
1026
+ Exclude:
1027
+ - 'spec/**/*'
1028
+
844
1029
  Style/OptionHash:
845
1030
  # A list of parameter names that will be flagged by this cop.
846
1031
  SuspiciousParamNames:
@@ -855,17 +1040,16 @@ Style/ParenthesesAroundCondition:
855
1040
  AllowSafeAssignment: true
856
1041
 
857
1042
  Style/PercentLiteralDelimiters:
1043
+ # Specify the default preferred delimiter for all types with the 'default' key
1044
+ # Override individual delimiters (even with default specified) by specifying
1045
+ # an individual key
858
1046
  PreferredDelimiters:
859
- '%': ()
860
- '%i': ()
861
- '%I': ()
862
- '%q': ()
863
- '%Q': ()
1047
+ default: ()
1048
+ '%i': '[]'
1049
+ '%I': '[]'
864
1050
  '%r': '{}'
865
- '%s': ()
866
- '%w': ()
867
- '%W': ()
868
- '%x': ()
1051
+ '%w': '[]'
1052
+ '%W': '[]'
869
1053
 
870
1054
  Style/PercentQLiterals:
871
1055
  EnforcedStyle: lower_case_q
@@ -888,7 +1072,7 @@ Style/PredicateName:
888
1072
  # should still be accepted
889
1073
  NameWhitelist:
890
1074
  - is_a?
891
- # Exclude Rspec specs because there is a strong convetion to write spec
1075
+ # Exclude Rspec specs because there is a strong convention to write spec
892
1076
  # helpers in the form of `have_something` or `be_something`.
893
1077
  Exclude:
894
1078
  - 'spec/**/*'
@@ -951,12 +1135,6 @@ Style/SingleLineBlockParams:
951
1135
  Style/SingleLineMethods:
952
1136
  AllowIfMethodIsEmpty: true
953
1137
 
954
- Style/SpaceBeforeFirstArg:
955
- # When `true`, allows most uses of extra spacing if the intent is to align
956
- # things with the previous or next line, not counting empty lines or comment
957
- # lines.
958
- AllowForAlignment: true
959
-
960
1138
  Style/SpecialGlobalVars:
961
1139
  EnforcedStyle: use_english_names
962
1140
  SupportedStyles:
@@ -994,63 +1172,9 @@ Style/StringMethods:
994
1172
  PreferredMethods:
995
1173
  intern: to_sym
996
1174
 
997
- Style/SpaceAroundBlockParameters:
998
- EnforcedStyleInsidePipes: no_space
999
- SupportedStylesInsidePipes:
1000
- - space
1001
- - no_space
1002
-
1003
- Style/SpaceAroundEqualsInParameterDefault:
1004
- EnforcedStyle: space
1005
- SupportedStyles:
1006
- - space
1007
- - no_space
1008
-
1009
- Style/SpaceAroundOperators:
1010
- # When `true`, allows most uses of extra spacing if the intent is to align
1011
- # with an operator on the previous or next line, not counting empty lines
1012
- # or comment lines.
1013
- AllowForAlignment: true
1014
-
1015
- Style/SpaceBeforeBlockBraces:
1016
- EnforcedStyle: space
1017
- SupportedStyles:
1018
- - space
1019
- - no_space
1020
-
1021
- Style/SpaceInsideBlockBraces:
1022
- EnforcedStyle: space
1023
- SupportedStyles:
1024
- - space
1025
- - no_space
1026
- EnforcedStyleForEmptyBraces: no_space
1027
- SupportedStylesForEmptyBraces:
1028
- - space
1029
- - no_space
1030
- # Space between { and |. Overrides EnforcedStyle if there is a conflict.
1031
- SpaceBeforeBlockParameters: true
1032
-
1033
- Style/SpaceInsideHashLiteralBraces:
1034
- EnforcedStyle: space
1035
- SupportedStyles:
1036
- - space
1037
- - no_space
1038
- # 'compact' normally requires a space inside hash braces, with the exception
1039
- # that successive left braces or right braces are collapsed together
1040
- - compact
1041
- EnforcedStyleForEmptyBraces: no_space
1042
- SupportedStylesForEmptyBraces:
1043
- - space
1044
- - no_space
1045
-
1046
- Style/SpaceInsideStringInterpolation:
1047
- EnforcedStyle: no_space
1048
- SupportedStyles:
1049
- - space
1050
- - no_space
1051
-
1052
1175
  Style/SymbolArray:
1053
1176
  EnforcedStyle: percent
1177
+ MinSize: 0
1054
1178
  SupportedStyles:
1055
1179
  - percent
1056
1180
  - brackets
@@ -1070,12 +1194,6 @@ Style/TernaryParentheses:
1070
1194
  - require_parentheses_when_complex
1071
1195
  AllowSafeAssignment: true
1072
1196
 
1073
- Style/TrailingBlankLines:
1074
- EnforcedStyle: final_newline
1075
- SupportedStyles:
1076
- - final_newline
1077
- - final_blank_line
1078
-
1079
1197
  Style/TrailingCommaInArguments:
1080
1198
  # If `comma`, the cop requires a comma after the last argument, but only for
1081
1199
  # parenthesized method calls where each argument is on its own line.
@@ -1098,7 +1216,7 @@ Style/TrailingCommaInLiteral:
1098
1216
  - consistent_comma
1099
1217
  - no_comma
1100
1218
 
1101
- # TrivialAccessors requires exact name matches and doesn't allow
1219
+ # `TrivialAccessors` requires exact name matches and doesn't allow
1102
1220
  # predicated methods by default.
1103
1221
  Style/TrivialAccessors:
1104
1222
  # When set to `false` the cop will suggest the use of accessor methods
@@ -1171,13 +1289,18 @@ Style/WordArray:
1171
1289
  # The regular expression `WordRegex` decides what is considered a word.
1172
1290
  WordRegex: !ruby/regexp '/\A[\p{Word}\n\t]+\z/'
1173
1291
 
1174
- ##################### Metrics ##################################
1292
+ #################### Metrics ###############################
1175
1293
 
1176
1294
  Metrics/AbcSize:
1177
1295
  # The ABC size is a calculated magnitude, so this number can be an Integer or
1178
1296
  # a Float.
1179
1297
  Max: 15
1180
1298
 
1299
+ Metrics/BlockLength:
1300
+ CountComments: false # count full line comments?
1301
+ Max: 25
1302
+ ExcludedMethods: []
1303
+
1181
1304
  Metrics/BlockNesting:
1182
1305
  CountBlocks: false
1183
1306
  Max: 3
@@ -1186,10 +1309,6 @@ Metrics/ClassLength:
1186
1309
  CountComments: false # count full line comments?
1187
1310
  Max: 100
1188
1311
 
1189
- Metrics/ModuleLength:
1190
- CountComments: false # count full line comments?
1191
- Max: 100
1192
-
1193
1312
  # Avoid complex methods.
1194
1313
  Metrics/CyclomaticComplexity:
1195
1314
  Max: 6
@@ -1215,10 +1334,9 @@ Metrics/MethodLength:
1215
1334
  CountComments: false # count full line comments?
1216
1335
  Max: 10
1217
1336
 
1218
- Metrics/BlockLength:
1337
+ Metrics/ModuleLength:
1219
1338
  CountComments: false # count full line comments?
1220
- Max: 25
1221
- ExcludedMethods: []
1339
+ Max: 100
1222
1340
 
1223
1341
  Metrics/ParameterLists:
1224
1342
  Max: 5
@@ -1227,7 +1345,7 @@ Metrics/ParameterLists:
1227
1345
  Metrics/PerceivedComplexity:
1228
1346
  Max: 7
1229
1347
 
1230
- ##################### Lint ##################################
1348
+ #################### Lint ##################################
1231
1349
 
1232
1350
  # Allow safe assignment in conditions.
1233
1351
  Lint/AssignmentInCondition:
@@ -1246,6 +1364,17 @@ Lint/BlockAlignment:
1246
1364
  - start_of_block
1247
1365
  - start_of_line
1248
1366
 
1367
+ Lint/DefEndAlignment:
1368
+ # The value `def` means that `end` should be aligned with the def keyword.
1369
+ # The value `start_of_line` means that `end` should be aligned with method
1370
+ # calls like `private`, `public`, etc, if present in front of the `def`
1371
+ # keyword on the same line.
1372
+ EnforcedStyleAlignWith: start_of_line
1373
+ SupportedStylesAlignWith:
1374
+ - start_of_line
1375
+ - def
1376
+ AutoCorrect: false
1377
+
1249
1378
  # Align ends correctly.
1250
1379
  Lint/EndAlignment:
1251
1380
  # The value `keyword` means that `end` should be aligned with the matching
@@ -1262,17 +1391,6 @@ Lint/EndAlignment:
1262
1391
  - start_of_line
1263
1392
  AutoCorrect: false
1264
1393
 
1265
- Lint/DefEndAlignment:
1266
- # The value `def` means that `end` should be aligned with the def keyword.
1267
- # The value `start_of_line` means that `end` should be aligned with method
1268
- # calls like `private`, `public`, etc, if present in front of the `def`
1269
- # keyword on the same line.
1270
- EnforcedStyleAlignWith: start_of_line
1271
- SupportedStylesAlignWith:
1272
- - start_of_line
1273
- - def
1274
- AutoCorrect: false
1275
-
1276
1394
  Lint/InheritException:
1277
1395
  # The default base class in favour of `Exception`.
1278
1396
  EnforcedStyle: runtime_error
@@ -1280,6 +1398,13 @@ Lint/InheritException:
1280
1398
  - runtime_error
1281
1399
  - standard_error
1282
1400
 
1401
+ Lint/SafeNavigationChain:
1402
+ Whitelist:
1403
+ - present?
1404
+ - blank?
1405
+ - presence
1406
+ - try
1407
+
1283
1408
  # Checks for unused block arguments
1284
1409
  Lint/UnusedBlockArgument:
1285
1410
  IgnoreEmptyBlocks: true
@@ -1290,13 +1415,18 @@ Lint/UnusedMethodArgument:
1290
1415
  AllowUnusedKeywordArguments: false
1291
1416
  IgnoreEmptyMethods: true
1292
1417
 
1293
- ##################### Performance ############################
1418
+ #################### Performance ###########################
1419
+
1420
+ Performance/DoubleStartEndWith:
1421
+ # Used to check for `starts_with?` and `ends_with?`.
1422
+ # These methods are defined by `ActiveSupport`.
1423
+ IncludeActiveSupportAliases: false
1294
1424
 
1295
1425
  Performance/RedundantMerge:
1296
1426
  # Max number of key-value pairs to consider an offense
1297
1427
  MaxKeyValuePairs: 2
1298
1428
 
1299
- ##################### Rails ##################################
1429
+ #################### Rails #################################
1300
1430
 
1301
1431
  Rails/ActionFilter:
1302
1432
  EnforcedStyle: action
@@ -1413,3 +1543,6 @@ Rails/SkipsModelValidations:
1413
1543
  Rails/Validation:
1414
1544
  Include:
1415
1545
  - app/models/**/*.rb
1546
+
1547
+ Bundler/OrderedGems:
1548
+ TreatCommentsAsGroupSeparators: true