diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-13 18:09:21 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-13 18:09:21 +0300 |
commit | c36152ff8c41fad2f413f253eb7ac5c927e47c56 (patch) | |
tree | bbf300da207de3e8bbf272d44111ceedb18f5833 /rubocop/cop/migration/with_lock_retries_with_change.rb | |
parent | 286fe61013674fe2d245ffc8d2233baf09923e70 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'rubocop/cop/migration/with_lock_retries_with_change.rb')
-rw-r--r-- | rubocop/cop/migration/with_lock_retries_with_change.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/rubocop/cop/migration/with_lock_retries_with_change.rb b/rubocop/cop/migration/with_lock_retries_with_change.rb new file mode 100644 index 00000000000..36fc1f92833 --- /dev/null +++ b/rubocop/cop/migration/with_lock_retries_with_change.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require_relative '../../migration_helpers' + +module RuboCop + module Cop + module Migration + # Cop that prevents usage of `with_lock_retries` within the `change` method. + class WithLockRetriesWithChange < RuboCop::Cop::Cop + include MigrationHelpers + + MSG = '`with_lock_retries` cannot be used within `change` so you must manually define ' \ + 'the `up` and `down` methods in your migration class and use `with_lock_retries` in both methods'.freeze + + def on_send(node) + return unless in_migration?(node) + return unless node.children[1] == :with_lock_retries + + node.each_ancestor(:def) do |def_node| + add_offense(def_node, location: :name) if method_name(def_node) == :change + end + end + + def method_name(node) + node.children.first + end + end + end + end +end |