rubocop-rails 2.19.1 → 2.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +3 -1
 - data/config/default.yml +86 -12
 - data/lib/rubocop/cop/mixin/index_method.rb +2 -2
 - data/lib/rubocop/cop/rails/action_controller_flash_before_render.rb +1 -1
 - data/lib/rubocop/cop/rails/action_controller_test_case.rb +2 -2
 - data/lib/rubocop/cop/rails/assert_not.rb +0 -1
 - data/lib/rubocop/cop/rails/bulk_change_table.rb +20 -3
 - data/lib/rubocop/cop/rails/dangerous_column_names.rb +439 -0
 - data/lib/rubocop/cop/rails/date.rb +12 -3
 - data/lib/rubocop/cop/rails/duplicate_association.rb +3 -0
 - data/lib/rubocop/cop/rails/dynamic_find_by.rb +3 -3
 - data/lib/rubocop/cop/rails/file_path.rb +129 -13
 - data/lib/rubocop/cop/rails/find_each.rb +1 -1
 - data/lib/rubocop/cop/rails/freeze_time.rb +1 -1
 - data/lib/rubocop/cop/rails/http_status.rb +4 -3
 - data/lib/rubocop/cop/rails/i18n_lazy_lookup.rb +63 -13
 - data/lib/rubocop/cop/rails/i18n_locale_texts.rb +5 -1
 - data/lib/rubocop/cop/rails/ignored_skip_action_filter_option.rb +22 -2
 - data/lib/rubocop/cop/rails/lexically_scoped_action_filter.rb +9 -10
 - data/lib/rubocop/cop/rails/not_null_column.rb +1 -1
 - data/lib/rubocop/cop/rails/rake_environment.rb +20 -4
 - data/lib/rubocop/cop/rails/redundant_active_record_all_method.rb +168 -0
 - data/lib/rubocop/cop/rails/refute_methods.rb +0 -1
 - data/lib/rubocop/cop/rails/reversible_migration.rb +1 -1
 - data/lib/rubocop/cop/rails/root_pathname_methods.rb +38 -4
 - data/lib/rubocop/cop/rails/save_bang.rb +2 -2
 - data/lib/rubocop/cop/rails/schema_comment.rb +16 -10
 - data/lib/rubocop/cop/rails/select_map.rb +78 -0
 - data/lib/rubocop/cop/rails/squished_sql_heredocs.rb +0 -1
 - data/lib/rubocop/cop/rails/three_state_boolean_column.rb +2 -4
 - data/lib/rubocop/cop/rails/time_zone.rb +12 -5
 - data/lib/rubocop/cop/rails/transaction_exit_statement.rb +35 -9
 - data/lib/rubocop/cop/rails/unique_validation_without_index.rb +15 -19
 - data/lib/rubocop/cop/rails/unused_render_content.rb +67 -0
 - data/lib/rubocop/cop/rails/where_exists.rb +0 -1
 - data/lib/rubocop/cop/rails_cops.rb +4 -0
 - data/lib/rubocop/rails/schema_loader/schema.rb +4 -4
 - data/lib/rubocop/rails/schema_loader.rb +1 -1
 - data/lib/rubocop/rails/version.rb +1 -1
 - data/lib/rubocop-rails.rb +8 -0
 - metadata +8 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 0e154e69d10b43226db08e454d992d724dc7504d54cac804e597156ee5cf13e5
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 60d4697e076620a134f48eff2f81be7b2004fd824796b1a1b15f5822239e3ce3
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: f0aa0f69a7aa3b90d1e402ab26bdf5a4d03680080d9b06ba157cd92f3c5c290f821e81d4a99636009e17ec4ea2de0cfd405cea00134ebccd4323d424fb790ec8
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 6b6ddbe47c1b112638cc3693464d9509f589a6683317b0bb30925a27788e39351a3a10853ecf286b419d3ec3b17e13aee9fd09ae07581d209635f0a56a44065b
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -72,7 +72,9 @@ module YourCoolApp 
     | 
|
| 
       72 
72 
     | 
    
         
             
              class Application < Rails::Application
         
     | 
| 
       73 
73 
     | 
    
         
             
                config.generators.after_generate do |files|
         
     | 
| 
       74 
74 
     | 
    
         
             
                  parsable_files = files.filter { |file| file.end_with?('.rb') }
         
     | 
| 
       75 
     | 
    
         
            -
                   
     | 
| 
      
 75 
     | 
    
         
            +
                  unless parsable_files.empty?
         
     | 
| 
      
 76 
     | 
    
         
            +
                    system("bundle exec rubocop -A --fail-level=E #{parsable_files.shelljoin}", exception: true)
         
     | 
| 
      
 77 
     | 
    
         
            +
                  end
         
     | 
| 
       76 
78 
     | 
    
         
             
                end
         
     | 
| 
       77 
79 
     | 
    
         
             
              end
         
     | 
| 
       78 
80 
     | 
    
         
             
            end
         
     | 
    
        data/config/default.yml
    CHANGED
    
    | 
         @@ -6,6 +6,7 @@ inherit_mode: 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            AllCops:
         
     | 
| 
       8 
8 
     | 
    
         
             
              Exclude:
         
     | 
| 
      
 9 
     | 
    
         
            +
                - app/assets/**/*
         
     | 
| 
       9 
10 
     | 
    
         
             
                - bin/*
         
     | 
| 
       10 
11 
     | 
    
         
             
                # Exclude db/schema.rb and db/[CONFIGURATION_NAMESPACE]_schema.rb by default.
         
     | 
| 
       11 
12 
     | 
    
         
             
                # See: https://guides.rubyonrails.org/active_record_multiple_databases.html#setting-up-your-application
         
     | 
| 
         @@ -47,6 +48,31 @@ Lint/NumberConversion: 
     | 
|
| 
       47 
48 
     | 
    
         
             
                - in_milliseconds
         
     | 
| 
       48 
49 
     | 
    
         
             
              AllowedPatterns: []
         
     | 
| 
       49 
50 
     | 
    
         | 
| 
      
 51 
     | 
    
         
            +
            Lint/RedundantSafeNavigation:
         
     | 
| 
      
 52 
     | 
    
         
            +
              # Add `presence` and `present?` methods to the default of the RuboCop core.
         
     | 
| 
      
 53 
     | 
    
         
            +
              # https://github.com/rubocop/rubocop/blob/v1.51.0/config/default.yml#L2148-L2159
         
     | 
| 
      
 54 
     | 
    
         
            +
              AllowedMethods:
         
     | 
| 
      
 55 
     | 
    
         
            +
                - instance_of?
         
     | 
| 
      
 56 
     | 
    
         
            +
                - kind_of?
         
     | 
| 
      
 57 
     | 
    
         
            +
                - is_a?
         
     | 
| 
      
 58 
     | 
    
         
            +
                - eql?
         
     | 
| 
      
 59 
     | 
    
         
            +
                - respond_to?
         
     | 
| 
      
 60 
     | 
    
         
            +
                - equal?
         
     | 
| 
      
 61 
     | 
    
         
            +
                - presence
         
     | 
| 
      
 62 
     | 
    
         
            +
                - present?
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            Lint/SafeNavigationChain:
         
     | 
| 
      
 65 
     | 
    
         
            +
              # Add `presence_in` method to the default of the RuboCop core:
         
     | 
| 
      
 66 
     | 
    
         
            +
              # https://github.com/rubocop/rubocop/blob/v1.56.0/config/default.yml#L2265-L2271
         
     | 
| 
      
 67 
     | 
    
         
            +
              AllowedMethods:
         
     | 
| 
      
 68 
     | 
    
         
            +
                - present?
         
     | 
| 
      
 69 
     | 
    
         
            +
                - blank?
         
     | 
| 
      
 70 
     | 
    
         
            +
                - presence
         
     | 
| 
      
 71 
     | 
    
         
            +
                - presence_in
         
     | 
| 
      
 72 
     | 
    
         
            +
                - try
         
     | 
| 
      
 73 
     | 
    
         
            +
                - try!
         
     | 
| 
      
 74 
     | 
    
         
            +
                - in?
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
       50 
76 
     | 
    
         
             
            Rails:
         
     | 
| 
       51 
77 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       52 
78 
     | 
    
         
             
              DocumentationBaseURL: https://docs.rubocop.org/rubocop-rails
         
     | 
| 
         @@ -146,8 +172,9 @@ Rails/AddColumnIndex: 
     | 
|
| 
       146 
172 
     | 
    
         
             
                index might be used.
         
     | 
| 
       147 
173 
     | 
    
         
             
              Enabled: pending
         
     | 
| 
       148 
174 
     | 
    
         
             
              VersionAdded: '2.11'
         
     | 
| 
      
 175 
     | 
    
         
            +
              VersionChanged: '2.20'
         
     | 
| 
       149 
176 
     | 
    
         
             
              Include:
         
     | 
| 
       150 
     | 
    
         
            -
                - db 
     | 
| 
      
 177 
     | 
    
         
            +
                - db/**/*.rb
         
     | 
| 
       151 
178 
     | 
    
         | 
| 
       152 
179 
     | 
    
         
             
            Rails/AfterCommitOverride:
         
     | 
| 
       153 
180 
     | 
    
         
             
              Description: >-
         
     | 
| 
         @@ -235,12 +262,13 @@ Rails/BulkChangeTable: 
     | 
|
| 
       235 
262 
     | 
    
         
             
                - https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/Table.html
         
     | 
| 
       236 
263 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       237 
264 
     | 
    
         
             
              VersionAdded: '0.57'
         
     | 
| 
      
 265 
     | 
    
         
            +
              VersionChanged: '2.20'
         
     | 
| 
       238 
266 
     | 
    
         
             
              Database: null
         
     | 
| 
       239 
267 
     | 
    
         
             
              SupportedDatabases:
         
     | 
| 
       240 
268 
     | 
    
         
             
                - mysql
         
     | 
| 
       241 
269 
     | 
    
         
             
                - postgresql
         
     | 
| 
       242 
270 
     | 
    
         
             
              Include:
         
     | 
| 
       243 
     | 
    
         
            -
                - db 
     | 
| 
      
 271 
     | 
    
         
            +
                - db/**/*.rb
         
     | 
| 
       244 
272 
     | 
    
         | 
| 
       245 
273 
     | 
    
         
             
            Rails/CompactBlank:
         
     | 
| 
       246 
274 
     | 
    
         
             
              Description: 'Checks if collection can be blank-compacted with `compact_blank`.'
         
     | 
| 
         @@ -270,18 +298,31 @@ Rails/CreateTableWithTimestamps: 
     | 
|
| 
       270 
298 
     | 
    
         
             
                              when creating a new table.
         
     | 
| 
       271 
299 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       272 
300 
     | 
    
         
             
              VersionAdded: '0.52'
         
     | 
| 
      
 301 
     | 
    
         
            +
              VersionChanged: '2.20'
         
     | 
| 
       273 
302 
     | 
    
         
             
              Include:
         
     | 
| 
       274 
     | 
    
         
            -
                - db 
     | 
| 
      
 303 
     | 
    
         
            +
                - db/**/*.rb
         
     | 
| 
       275 
304 
     | 
    
         
             
              Exclude:
         
     | 
| 
       276 
305 
     | 
    
         
             
                # Respect the `active_storage_variant_records` table of `*_create_active_storage_tables.active_storage.rb`
         
     | 
| 
      
 306 
     | 
    
         
            +
                # and `*_create_active_storage_variant_records.active_storage.rb`
         
     | 
| 
       277 
307 
     | 
    
         
             
                # auto-generated by `bin/rails active_storage:install` even if `created_at` is not specified.
         
     | 
| 
       278 
     | 
    
         
            -
                - db 
     | 
| 
      
 308 
     | 
    
         
            +
                - db/**/*_create_active_storage_tables.active_storage.rb
         
     | 
| 
      
 309 
     | 
    
         
            +
                - db/**/*_create_active_storage_variant_records.active_storage.rb
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
      
 311 
     | 
    
         
            +
            Rails/DangerousColumnNames:
         
     | 
| 
      
 312 
     | 
    
         
            +
              Description: >-
         
     | 
| 
      
 313 
     | 
    
         
            +
                              Avoid dangerous column names.
         
     | 
| 
      
 314 
     | 
    
         
            +
              Enabled: pending
         
     | 
| 
      
 315 
     | 
    
         
            +
              Severity: warning
         
     | 
| 
      
 316 
     | 
    
         
            +
              VersionAdded: '2.21'
         
     | 
| 
      
 317 
     | 
    
         
            +
              Include:
         
     | 
| 
      
 318 
     | 
    
         
            +
                - 'db/**/*.rb'
         
     | 
| 
       279 
319 
     | 
    
         | 
| 
       280 
320 
     | 
    
         
             
            Rails/Date:
         
     | 
| 
       281 
321 
     | 
    
         
             
              Description: >-
         
     | 
| 
       282 
322 
     | 
    
         
             
                              Checks the correct usage of date aware methods,
         
     | 
| 
       283 
323 
     | 
    
         
             
                              such as Date.today, Date.current etc.
         
     | 
| 
       284 
324 
     | 
    
         
             
              Enabled: true
         
     | 
| 
      
 325 
     | 
    
         
            +
              SafeAutoCorrect: false
         
     | 
| 
       285 
326 
     | 
    
         
             
              VersionAdded: '0.30'
         
     | 
| 
       286 
327 
     | 
    
         
             
              VersionChanged: '2.11'
         
     | 
| 
       287 
328 
     | 
    
         
             
              # The value `strict` disallows usage of `Date.today`, `Date.current`,
         
     | 
| 
         @@ -443,10 +484,8 @@ Rails/FindBy: 
     | 
|
| 
       443 
484 
     | 
    
         
             
              StyleGuide: 'https://rails.rubystyle.guide#find_by'
         
     | 
| 
       444 
485 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       445 
486 
     | 
    
         
             
              VersionAdded: '0.30'
         
     | 
| 
       446 
     | 
    
         
            -
              VersionChanged: '2. 
     | 
| 
      
 487 
     | 
    
         
            +
              VersionChanged: '2.21'
         
     | 
| 
       447 
488 
     | 
    
         
             
              IgnoreWhereFirst: true
         
     | 
| 
       448 
     | 
    
         
            -
              Include:
         
     | 
| 
       449 
     | 
    
         
            -
                - app/models/**/*.rb
         
     | 
| 
       450 
489 
     | 
    
         | 
| 
       451 
490 
     | 
    
         
             
            Rails/FindById:
         
     | 
| 
       452 
491 
     | 
    
         
             
              Description: >-
         
     | 
| 
         @@ -462,9 +501,7 @@ Rails/FindEach: 
     | 
|
| 
       462 
501 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       463 
502 
     | 
    
         
             
              Safe: false
         
     | 
| 
       464 
503 
     | 
    
         
             
              VersionAdded: '0.30'
         
     | 
| 
       465 
     | 
    
         
            -
              VersionChanged: '2. 
     | 
| 
       466 
     | 
    
         
            -
              Include:
         
     | 
| 
       467 
     | 
    
         
            -
                - app/models/**/*.rb
         
     | 
| 
      
 504 
     | 
    
         
            +
              VersionChanged: '2.21'
         
     | 
| 
       468 
505 
     | 
    
         
             
              AllowedMethods:
         
     | 
| 
       469 
506 
     | 
    
         
             
                # Methods that don't work well with `find_each`.
         
     | 
| 
       470 
507 
     | 
    
         
             
                - order
         
     | 
| 
         @@ -527,6 +564,10 @@ Rails/I18nLazyLookup: 
     | 
|
| 
       527 
564 
     | 
    
         
             
              Reference: 'https://guides.rubyonrails.org/i18n.html#lazy-lookup'
         
     | 
| 
       528 
565 
     | 
    
         
             
              Enabled: pending
         
     | 
| 
       529 
566 
     | 
    
         
             
              VersionAdded: '2.14'
         
     | 
| 
      
 567 
     | 
    
         
            +
              EnforcedStyle: lazy
         
     | 
| 
      
 568 
     | 
    
         
            +
              SupportedStyles:
         
     | 
| 
      
 569 
     | 
    
         
            +
                - lazy
         
     | 
| 
      
 570 
     | 
    
         
            +
                - explicit
         
     | 
| 
       530 
571 
     | 
    
         
             
              Include:
         
     | 
| 
       531 
572 
     | 
    
         
             
                - 'app/controllers/**/*.rb'
         
     | 
| 
       532 
573 
     | 
    
         | 
| 
         @@ -632,8 +673,9 @@ Rails/MigrationClassName: 
     | 
|
| 
       632 
673 
     | 
    
         
             
              Description: 'The class name of the migration should match its file name.'
         
     | 
| 
       633 
674 
     | 
    
         
             
              Enabled: pending
         
     | 
| 
       634 
675 
     | 
    
         
             
              VersionAdded: '2.14'
         
     | 
| 
      
 676 
     | 
    
         
            +
              VersionChanged: '2.20'
         
     | 
| 
       635 
677 
     | 
    
         
             
              Include:
         
     | 
| 
       636 
     | 
    
         
            -
                - db 
     | 
| 
      
 678 
     | 
    
         
            +
                - db/**/*.rb
         
     | 
| 
       637 
679 
     | 
    
         | 
| 
       638 
680 
     | 
    
         
             
            Rails/NegateInclude:
         
     | 
| 
       639 
681 
     | 
    
         
             
              Description: 'Prefer `collection.exclude?(obj)` over `!collection.include?(obj)`.'
         
     | 
| 
         @@ -647,8 +689,9 @@ Rails/NotNullColumn: 
     | 
|
| 
       647 
689 
     | 
    
         
             
              Description: 'Do not add a NOT NULL column without a default value.'
         
     | 
| 
       648 
690 
     | 
    
         
             
              Enabled: true
         
     | 
| 
       649 
691 
     | 
    
         
             
              VersionAdded: '0.43'
         
     | 
| 
      
 692 
     | 
    
         
            +
              VersionChanged: '2.20'
         
     | 
| 
       650 
693 
     | 
    
         
             
              Include:
         
     | 
| 
       651 
     | 
    
         
            -
                - db 
     | 
| 
      
 694 
     | 
    
         
            +
                - db/**/*.rb
         
     | 
| 
       652 
695 
     | 
    
         | 
| 
       653 
696 
     | 
    
         
             
            Rails/OrderById:
         
     | 
| 
       654 
697 
     | 
    
         
             
              Description: >-
         
     | 
| 
         @@ -753,6 +796,16 @@ Rails/ReadWriteAttribute: 
     | 
|
| 
       753 
796 
     | 
    
         
             
              Include:
         
     | 
| 
       754 
797 
     | 
    
         
             
                - app/models/**/*.rb
         
     | 
| 
       755 
798 
     | 
    
         | 
| 
      
 799 
     | 
    
         
            +
            Rails/RedundantActiveRecordAllMethod:
         
     | 
| 
      
 800 
     | 
    
         
            +
              Description: Detect redundant `all` used as a receiver for Active Record query methods.
         
     | 
| 
      
 801 
     | 
    
         
            +
              StyleGuide: 'https://rails.rubystyle.guide/#redundant-all'
         
     | 
| 
      
 802 
     | 
    
         
            +
              Enabled: pending
         
     | 
| 
      
 803 
     | 
    
         
            +
              Safe: false
         
     | 
| 
      
 804 
     | 
    
         
            +
              AllowedReceivers:
         
     | 
| 
      
 805 
     | 
    
         
            +
                - ActionMailer::Preview
         
     | 
| 
      
 806 
     | 
    
         
            +
                - ActiveSupport::TimeZone
         
     | 
| 
      
 807 
     | 
    
         
            +
              VersionAdded: '2.21'
         
     | 
| 
      
 808 
     | 
    
         
            +
             
     | 
| 
       756 
809 
     | 
    
         
             
            Rails/RedundantAllowNil:
         
     | 
| 
       757 
810 
     | 
    
         
             
              Description: >-
         
     | 
| 
       758 
811 
     | 
    
         
             
                             Finds redundant use of `allow_nil` when `allow_blank` is set to
         
     | 
| 
         @@ -933,6 +986,12 @@ Rails/ScopeArgs: 
     | 
|
| 
       933 
986 
     | 
    
         
             
              Include:
         
     | 
| 
       934 
987 
     | 
    
         
             
                - app/models/**/*.rb
         
     | 
| 
       935 
988 
     | 
    
         | 
| 
      
 989 
     | 
    
         
            +
            Rails/SelectMap:
         
     | 
| 
      
 990 
     | 
    
         
            +
              Description: 'Checks for uses of `select(:column_name)` with `map(&:column_name)`.'
         
     | 
| 
      
 991 
     | 
    
         
            +
              Enabled: pending
         
     | 
| 
      
 992 
     | 
    
         
            +
              Safe: false
         
     | 
| 
      
 993 
     | 
    
         
            +
              VersionAdded: '2.21'
         
     | 
| 
      
 994 
     | 
    
         
            +
             
     | 
| 
       936 
995 
     | 
    
         
             
            Rails/ShortI18n:
         
     | 
| 
       937 
996 
     | 
    
         
             
              Description: 'Use the short form of the I18n methods: `t` instead of `translate` and `l` instead of `localize`.'
         
     | 
| 
       938 
997 
     | 
    
         
             
              StyleGuide: 'https://rails.rubystyle.guide/#short-i18n'
         
     | 
| 
         @@ -1061,6 +1120,7 @@ Rails/TransactionExitStatement: 
     | 
|
| 
       1061 
1120 
     | 
    
         
             
                - https://github.com/rails/rails/commit/15aa4200e083
         
     | 
| 
       1062 
1121 
     | 
    
         
             
              Enabled: pending
         
     | 
| 
       1063 
1122 
     | 
    
         
             
              VersionAdded: '2.14'
         
     | 
| 
      
 1123 
     | 
    
         
            +
              TransactionMethods: []
         
     | 
| 
       1064 
1124 
     | 
    
         | 
| 
       1065 
1125 
     | 
    
         
             
            Rails/UniqBeforePluck:
         
     | 
| 
       1066 
1126 
     | 
    
         
             
              Description: 'Prefer the use of uniq or distinct before pluck.'
         
     | 
| 
         @@ -1098,6 +1158,12 @@ Rails/UnusedIgnoredColumns: 
     | 
|
| 
       1098 
1158 
     | 
    
         
             
              Include:
         
     | 
| 
       1099 
1159 
     | 
    
         
             
                - app/models/**/*.rb
         
     | 
| 
       1100 
1160 
     | 
    
         | 
| 
      
 1161 
     | 
    
         
            +
            Rails/UnusedRenderContent:
         
     | 
| 
      
 1162 
     | 
    
         
            +
              Description: 'Do not specify body content for a response with a non-content status code.'
         
     | 
| 
      
 1163 
     | 
    
         
            +
              Enabled: pending
         
     | 
| 
      
 1164 
     | 
    
         
            +
              Severity: warning
         
     | 
| 
      
 1165 
     | 
    
         
            +
              VersionAdded: '2.21'
         
     | 
| 
      
 1166 
     | 
    
         
            +
             
     | 
| 
       1101 
1167 
     | 
    
         
             
            Rails/Validation:
         
     | 
| 
       1102 
1168 
     | 
    
         
             
              Description: 'Use validates :attribute, hash of validations.'
         
     | 
| 
       1103 
1169 
     | 
    
         
             
              Enabled: true
         
     | 
| 
         @@ -1153,6 +1219,14 @@ Style/FormatStringToken: 
     | 
|
| 
       1153 
1219 
     | 
    
         
             
              AllowedMethods:
         
     | 
| 
       1154 
1220 
     | 
    
         
             
                - redirect
         
     | 
| 
       1155 
1221 
     | 
    
         | 
| 
      
 1222 
     | 
    
         
            +
            Style/InvertibleUnlessCondition:
         
     | 
| 
      
 1223 
     | 
    
         
            +
              InverseMethods:
         
     | 
| 
      
 1224 
     | 
    
         
            +
                # Active Support defines some common inverse methods. They are listed below:
         
     | 
| 
      
 1225 
     | 
    
         
            +
                :present?: :blank?
         
     | 
| 
      
 1226 
     | 
    
         
            +
                :blank?: :present?
         
     | 
| 
      
 1227 
     | 
    
         
            +
                :include?: :exclude?
         
     | 
| 
      
 1228 
     | 
    
         
            +
                :exclude?: :include?
         
     | 
| 
      
 1229 
     | 
    
         
            +
             
     | 
| 
       1156 
1230 
     | 
    
         
             
            Style/SymbolProc:
         
     | 
| 
       1157 
1231 
     | 
    
         
             
              AllowedMethods:
         
     | 
| 
       1158 
1232 
     | 
    
         
             
                - define_method
         
     | 
| 
         @@ -102,7 +102,7 @@ module RuboCop 
     | 
|
| 
       102 
102 
     | 
    
         
             
                  end
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
       104 
104 
     | 
    
         
             
                  # Internal helper class to hold match data
         
     | 
| 
       105 
     | 
    
         
            -
                  Captures = Struct.new(
         
     | 
| 
      
 105 
     | 
    
         
            +
                  Captures = ::Struct.new(
         
     | 
| 
       106 
106 
     | 
    
         
             
                    :transformed_argname,
         
     | 
| 
       107 
107 
     | 
    
         
             
                    :transforming_body_expr
         
     | 
| 
       108 
108 
     | 
    
         
             
                  ) do
         
     | 
| 
         @@ -112,7 +112,7 @@ module RuboCop 
     | 
|
| 
       112 
112 
     | 
    
         
             
                  end
         
     | 
| 
       113 
113 
     | 
    
         | 
| 
       114 
114 
     | 
    
         
             
                  # Internal helper class to hold autocorrect data
         
     | 
| 
       115 
     | 
    
         
            -
                  Autocorrection = Struct.new(:match, :block_node, :leading, :trailing) do
         
     | 
| 
      
 115 
     | 
    
         
            +
                  Autocorrection = ::Struct.new(:match, :block_node, :leading, :trailing) do
         
     | 
| 
       116 
116 
     | 
    
         
             
                    def self.from_each_with_object(node, match)
         
     | 
| 
       117 
117 
     | 
    
         
             
                      new(match, node, 0, 0)
         
     | 
| 
       118 
118 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -3,8 +3,8 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module RuboCop
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Cop
         
     | 
| 
       5 
5 
     | 
    
         
             
                module Rails
         
     | 
| 
       6 
     | 
    
         
            -
                  # Using `ActionController::TestCase 
     | 
| 
       7 
     | 
    
         
            -
                  # `ActionDispatch::IntegrationTest 
     | 
| 
      
 6 
     | 
    
         
            +
                  # Using `ActionController::TestCase` is discouraged and should be replaced by
         
     | 
| 
      
 7 
     | 
    
         
            +
                  # `ActionDispatch::IntegrationTest`. Controller tests are too close to the
         
     | 
| 
       8 
8 
     | 
    
         
             
                  # internals of a controller whereas integration tests mimic the browser/user.
         
     | 
| 
       9 
9 
     | 
    
         
             
                  #
         
     | 
| 
       10 
10 
     | 
    
         
             
                  # @safety
         
     | 
| 
         @@ -12,7 +12,8 @@ module RuboCop 
     | 
|
| 
       12 
12 
     | 
    
         
             
                  # The `bulk` option is only supported on the MySQL and
         
     | 
| 
       13 
13 
     | 
    
         
             
                  # the PostgreSQL (5.2 later) adapter; thus it will
         
     | 
| 
       14 
14 
     | 
    
         
             
                  # automatically detect an adapter from `development` environment
         
     | 
| 
       15 
     | 
    
         
            -
                  # in `config/database.yml`  
     | 
| 
      
 15 
     | 
    
         
            +
                  # in `config/database.yml` or the environment variable `DATABASE_URL`
         
     | 
| 
      
 16 
     | 
    
         
            +
                  # when the `Database` option is not set.
         
     | 
| 
       16 
17 
     | 
    
         
             
                  # If the adapter is not `mysql2` or `postgresql`,
         
     | 
| 
       17 
18 
     | 
    
         
             
                  # this Cop ignores offenses.
         
     | 
| 
       18 
19 
     | 
    
         
             
                  #
         
     | 
| 
         @@ -175,13 +176,13 @@ module RuboCop 
     | 
|
| 
       175 
176 
     | 
    
         
             
                    end
         
     | 
| 
       176 
177 
     | 
    
         | 
| 
       177 
178 
     | 
    
         
             
                    def database
         
     | 
| 
       178 
     | 
    
         
            -
                      cop_config['Database'] || database_from_yaml
         
     | 
| 
      
 179 
     | 
    
         
            +
                      cop_config['Database'] || database_from_yaml || database_from_env
         
     | 
| 
       179 
180 
     | 
    
         
             
                    end
         
     | 
| 
       180 
181 
     | 
    
         | 
| 
       181 
182 
     | 
    
         
             
                    def database_from_yaml
         
     | 
| 
       182 
183 
     | 
    
         
             
                      return nil unless database_yaml
         
     | 
| 
       183 
184 
     | 
    
         | 
| 
       184 
     | 
    
         
            -
                      case  
     | 
| 
      
 185 
     | 
    
         
            +
                      case database_adapter
         
     | 
| 
       185 
186 
     | 
    
         
             
                      when 'mysql2'
         
     | 
| 
       186 
187 
     | 
    
         
             
                        MYSQL
         
     | 
| 
       187 
188 
     | 
    
         
             
                      when 'postgresql'
         
     | 
| 
         @@ -189,6 +190,10 @@ module RuboCop 
     | 
|
| 
       189 
190 
     | 
    
         
             
                      end
         
     | 
| 
       190 
191 
     | 
    
         
             
                    end
         
     | 
| 
       191 
192 
     | 
    
         | 
| 
      
 193 
     | 
    
         
            +
                    def database_adapter
         
     | 
| 
      
 194 
     | 
    
         
            +
                      database_yaml['adapter'] || database_yaml.first.last['adapter']
         
     | 
| 
      
 195 
     | 
    
         
            +
                    end
         
     | 
| 
      
 196 
     | 
    
         
            +
             
     | 
| 
       192 
197 
     | 
    
         
             
                    def database_yaml
         
     | 
| 
       193 
198 
     | 
    
         
             
                      return nil unless File.exist?('config/database.yml')
         
     | 
| 
       194 
199 
     | 
    
         | 
| 
         @@ -207,6 +212,18 @@ module RuboCop 
     | 
|
| 
       207 
212 
     | 
    
         
             
                      nil
         
     | 
| 
       208 
213 
     | 
    
         
             
                    end
         
     | 
| 
       209 
214 
     | 
    
         | 
| 
      
 215 
     | 
    
         
            +
                    def database_from_env
         
     | 
| 
      
 216 
     | 
    
         
            +
                      url = ENV['DATABASE_URL'].presence
         
     | 
| 
      
 217 
     | 
    
         
            +
                      return nil unless url
         
     | 
| 
      
 218 
     | 
    
         
            +
             
     | 
| 
      
 219 
     | 
    
         
            +
                      case url
         
     | 
| 
      
 220 
     | 
    
         
            +
                      when %r{\Amysql2://}
         
     | 
| 
      
 221 
     | 
    
         
            +
                        MYSQL
         
     | 
| 
      
 222 
     | 
    
         
            +
                      when %r{\Apostgres(ql)?://}
         
     | 
| 
      
 223 
     | 
    
         
            +
                        POSTGRESQL
         
     | 
| 
      
 224 
     | 
    
         
            +
                      end
         
     | 
| 
      
 225 
     | 
    
         
            +
                    end
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
       210 
227 
     | 
    
         
             
                    def support_bulk_alter?
         
     | 
| 
       211 
228 
     | 
    
         
             
                      case database
         
     | 
| 
       212 
229 
     | 
    
         
             
                      when MYSQL
         
     |