From c36152ff8c41fad2f413f253eb7ac5c927e47c56 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 13 Mar 2020 15:09:21 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../cop/migration/with_lock_retries_with_change.rb | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rubocop/cop/migration/with_lock_retries_with_change.rb (limited to 'rubocop') 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 -- cgit v1.2.3