From 82e356dde0a9dcb15b84057b06b29adcdd14de6e Mon Sep 17 00:00:00 2001 From: Henne Vogelsang Date: Thu, 21 Apr 2016 16:16:16 +0200 Subject: [PATCH] Use ActiveJob to send schedule update mails --- app/controllers/admin/programs_controller.rb | 2 +- app/jobs/conference_schedule_update_mail_job.rb | 9 +++++++++ app/mailers/mailbot.rb | 14 +++++++------- 3 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 app/jobs/conference_schedule_update_mail_job.rb diff --git a/app/controllers/admin/programs_controller.rb b/app/controllers/admin/programs_controller.rb index a4bcefba..9727f82b 100644 --- a/app/controllers/admin/programs_controller.rb +++ b/app/controllers/admin/programs_controller.rb @@ -14,7 +14,7 @@ module Admin send_mail_on_schedule_public = @program.notify_on_schedule_public? if @program.update_attributes(program_params) - Mailbot.send_on_schedule_public(@conference).deliver_later if send_mail_on_schedule_public + ConferenceScheduleUpdateMailJob.perform_later(@conference) if send_mail_on_schedule_public redirect_to admin_conference_program_path(@conference.short_title), notice: 'The program was successfully updated.' else diff --git a/app/jobs/conference_schedule_update_mail_job.rb b/app/jobs/conference_schedule_update_mail_job.rb new file mode 100644 index 00000000..a6c73eca --- /dev/null +++ b/app/jobs/conference_schedule_update_mail_job.rb @@ -0,0 +1,9 @@ +class ConferenceScheduleUpdateMailJob < ActiveJob::Base + queue_as :default + + def perform(conference) + conference.subscriptions.each do |subscription| + Mailbot.conference_schedule_update_mail(conference, subscription.user).deliver_now + end + end +end diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index d9581ba4..c10160d8 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -62,13 +62,13 @@ class Mailbot < ActionMailer::Base conference.email_settings.venue_updated_body)) end - def send_on_schedule_public(conference) - User.joins(:subscriptions).merge(conference.subscriptions).each do |user| - build_email(conference, - user.email, - conference.email_settings.program_schedule_public_subject, - conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.program_schedule_public_body)) - end + def conference_schedule_update_mail(conference, user) + mail(to: user.email, + from: conference.contact.email, + subject: conference.email_settings.program_schedule_public_subject, + body: conference.email_settings.generate_email_on_conf_updates(conference, + user, + conference.email_settings.program_schedule_public_body)) end def send_on_cfp_dates_updates(conference)