Move EmailOnPush logic to async worker

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
Dmitriy Zaporozhets 2013-12-18 13:42:12 +02:00
parent fc3878c034
commit 6ac73f45f0
No known key found for this signature in database
GPG Key ID: 627C5F589F467F17
2 changed files with 26 additions and 19 deletions

View File

@ -33,24 +33,7 @@ class EmailsOnPushService < Service
end
def execute(push_data)
before_sha = push_data[:before]
after_sha = push_data[:after]
branch = push_data[:ref]
author_id = push_data[:user_id]
if before_sha =~ /^000000/ || after_sha =~ /^000000/
# skip if new branch was pushed or branch was removed
return true
end
compare = Gitlab::Git::Compare.new(project.repository.raw_repository, before_sha, after_sha)
# Do not send emails if git compare failed
return false unless compare && compare.commits.present?
recipients.split(" ").each do |recipient|
Notify.delay.repository_push_email(project_id, recipient, author_id, branch, compare)
end
EmailsOnPushWorker.perform_async(project_id, recipients, push_data)
end
def fields
@ -59,4 +42,3 @@ class EmailsOnPushService < Service
]
end
end

View File

@ -0,0 +1,25 @@
class EmailsOnPushWorker
include Sidekiq::Worker
def perform(project_id, recipients, push_data)
project = Project.find(project_id)
before_sha = push_data["before"]
after_sha = push_data["after"]
branch = push_data["ref"]
author_id = push_data["user_id"]
if before_sha =~ /^000000/ || after_sha =~ /^000000/
# skip if new branch was pushed or branch was removed
return true
end
compare = Gitlab::Git::Compare.new(project.repository.raw_repository, before_sha, after_sha)
# Do not send emails if git compare failed
return false unless compare && compare.commits.present?
recipients.split(" ").each do |recipient|
Notify.delay.repository_push_email(project_id, recipient, author_id, branch, compare)
end
end
end