From b9d8946395ebe2b0d05e464e6a2af1181c7f1b90 Mon Sep 17 00:00:00 2001
From: Sean McGivern <sean@gitlab.com>
Date: Wed, 30 Aug 2017 13:33:39 +0100
Subject: [PATCH] Don't use public_send in destroy_conditionally! helper

As we only override in two places, we could just ask for the value rather than
the method name.
---
 lib/api/branches.rb | 2 +-
 lib/api/helpers.rb  | 6 ++++--
 lib/api/tags.rb     | 2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/api/branches.rb b/lib/api/branches.rb
index b87f7cdbad1bc..a989394ad9101 100644
--- a/lib/api/branches.rb
+++ b/lib/api/branches.rb
@@ -130,7 +130,7 @@ class Branches < Grape::API
 
         commit = user_project.repository.commit(branch.dereferenced_target)
 
-        destroy_conditionally!(commit, last_update_field: :authored_date) do
+        destroy_conditionally!(commit, last_updated: commit.authored_date) do
           result = DeleteBranchService.new(user_project, current_user)
                     .execute(params[:branch])
 
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index 84980864151f1..3d377fdb9eb43 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -19,8 +19,10 @@ def check_unmodified_since!(last_modified)
       end
     end
 
-    def destroy_conditionally!(resource, last_update_field: :updated_at)
-      check_unmodified_since!(resource.public_send(last_update_field))
+    def destroy_conditionally!(resource, last_updated: nil)
+      last_updated ||= resource.updated_at
+
+      check_unmodified_since!(last_updated)
 
       status 204
       if block_given?
diff --git a/lib/api/tags.rb b/lib/api/tags.rb
index 81b17935b8120..912415e3a7fee 100644
--- a/lib/api/tags.rb
+++ b/lib/api/tags.rb
@@ -70,7 +70,7 @@ class Tags < Grape::API
 
         commit = user_project.repository.commit(tag.dereferenced_target)
 
-        destroy_conditionally!(commit, last_update_field: :authored_date) do
+        destroy_conditionally!(commit, last_updated: commit.authored_date) do
           result = ::Tags::DestroyService.new(user_project, current_user)
                     .execute(params[:tag_name])
 
-- 
GitLab