diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-04-25 18:08:44 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-04-25 18:08:44 +0300 |
commit | 29516285ebf20d2c9836d5263f9d3fba21d04a95 (patch) | |
tree | cb88f9184fd4bd12e97a3207eaa9d774014d7679 /rubocop | |
parent | 52eb17ad859d778104993ee0edfa9c034e59af80 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'rubocop')
-rw-r--r-- | rubocop/cop/migration/migration_record.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/rubocop/cop/migration/migration_record.rb b/rubocop/cop/migration/migration_record.rb new file mode 100644 index 00000000000..bb81b3cbaf1 --- /dev/null +++ b/rubocop/cop/migration/migration_record.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require_relative '../../migration_helpers' + +module RuboCop + module Cop + module Migration + class MigrationRecord < RuboCop::Cop::Cop + include MigrationHelpers + + ENFORCED_SINCE = 2022_04_26_00_00_00 + + MSG = <<~MSG + Don't inherit from ActiveRecord::Base but use MigrationRecord instead. + See https://docs.gitlab.com/ee/development/database/migrations_for_multiple_databases.html#example-usage-of-activerecord-classes. + MSG + + def_node_search :inherits_from_active_record_base?, <<~PATTERN + (class _ (const (const _ :ActiveRecord) :Base) _) + PATTERN + + def on_class(node) + return unless relevant_migration?(node) + return unless inherits_from_active_record_base?(node) + + add_offense(node, location: :expression) + end + + private + + def relevant_migration?(node) + in_migration?(node) && version(node) >= ENFORCED_SINCE + end + end + end + end +end |