diff options
author | Sean McGivern <sean@gitlab.com> | 2018-03-30 14:05:20 +0100 |
---|---|---|
committer | Sean McGivern <sean@gitlab.com> | 2018-03-30 14:55:05 +0100 |
commit | 2db218f8bf186c509c927ce3e9d0502fee4f8349 (patch) | |
tree | 8290216f729e4d5d376986720b5f730eb16e4141 /app/workers | |
parent | 5ab75649f3ea00b64cb63e7e5283100c6b70cfb5 (diff) | |
download | gitlab-ce-2db218f8bf186c509c927ce3e9d0502fee4f8349.tar.gz |
Send emails for issues due tomorrow
Also, refactor the mail sending slightly: instead of one worker sending all
emails, create a worker per project with issues due, which will send all emails
for that project.
Diffstat (limited to 'app/workers')
-rw-r--r-- | app/workers/all_queues.yml | 4 | ||||
-rw-r--r-- | app/workers/concerns/mail_scheduler_queue.rb | 7 | ||||
-rw-r--r-- | app/workers/issue_due_scheduler_worker.rb | 10 | ||||
-rw-r--r-- | app/workers/issue_due_worker.rb | 10 | ||||
-rw-r--r-- | app/workers/mail_scheduler/issue_due_worker.rb | 14 |
5 files changed, 34 insertions, 11 deletions
diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index ef445055f6e..9aea3bad27b 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -18,7 +18,7 @@ - cronjob:stuck_import_jobs - cronjob:stuck_merge_jobs - cronjob:trending_projects -- cronjob:issue_due +- cronjob:issue_due_scheduler - gcp_cluster:cluster_install_app - gcp_cluster:cluster_provision @@ -40,6 +40,8 @@ - github_importer:github_import_stage_import_pull_requests - github_importer:github_import_stage_import_repository +- mail_scheduler:mail_scheduler_issue_due + - object_storage_upload - object_storage:object_storage_background_move - object_storage:object_storage_migrate_uploads diff --git a/app/workers/concerns/mail_scheduler_queue.rb b/app/workers/concerns/mail_scheduler_queue.rb new file mode 100644 index 00000000000..9df55ad9522 --- /dev/null +++ b/app/workers/concerns/mail_scheduler_queue.rb @@ -0,0 +1,7 @@ +module MailSchedulerQueue + extend ActiveSupport::Concern + + included do + queue_namespace :mail_scheduler + end +end diff --git a/app/workers/issue_due_scheduler_worker.rb b/app/workers/issue_due_scheduler_worker.rb new file mode 100644 index 00000000000..9c06304bff6 --- /dev/null +++ b/app/workers/issue_due_scheduler_worker.rb @@ -0,0 +1,10 @@ +class IssueDueSchedulerWorker + include ApplicationWorker + include CronjobQueue + + def perform + Issue.opened.due_tomorrow.group(:project_id).pluck(:project_id).each do |project_id| + MailScheduler::IssueDueWorker.perform_async(project_id) + end + end +end diff --git a/app/workers/issue_due_worker.rb b/app/workers/issue_due_worker.rb deleted file mode 100644 index 90d2cc09f1b..00000000000 --- a/app/workers/issue_due_worker.rb +++ /dev/null @@ -1,10 +0,0 @@ -class IssueDueWorker - include ApplicationWorker - include CronjobQueue - - def perform - Issue.where(due_date: Date.today).find_each do |issue| - NotificationService.new.issue_due_email(issue) - end - end -end diff --git a/app/workers/mail_scheduler/issue_due_worker.rb b/app/workers/mail_scheduler/issue_due_worker.rb new file mode 100644 index 00000000000..b06079d68ca --- /dev/null +++ b/app/workers/mail_scheduler/issue_due_worker.rb @@ -0,0 +1,14 @@ +module MailScheduler + class IssueDueWorker + include ApplicationWorker + include MailSchedulerQueue + + def perform(project_id) + notification_service = NotificationService.new + + Issue.opened.due_tomorrow.in_projects(project_id).preload(:project).find_each do |issue| + notification_service.issue_due(issue) + end + end + end +end |