From 2ea7bda639cfad31008b8f9cfbd9b0fbec4458c8 Mon Sep 17 00:00:00 2001 From: Henne Vogelsang Date: Thu, 21 Apr 2016 16:03:09 +0200 Subject: [PATCH] Use ActiveJob to send venue update mails --- app/jobs/conference_venue_update_mail_job.rb | 9 +++++++++ app/mailers/mailbot.rb | 14 +++++++------- app/models/venue.rb | 4 ++-- 3 files changed, 18 insertions(+), 9 deletions(-) create mode 100644 app/jobs/conference_venue_update_mail_job.rb diff --git a/app/jobs/conference_venue_update_mail_job.rb b/app/jobs/conference_venue_update_mail_job.rb new file mode 100644 index 00000000..2aa960d1 --- /dev/null +++ b/app/jobs/conference_venue_update_mail_job.rb @@ -0,0 +1,9 @@ +class ConferenceVenueUpdateMailJob < ActiveJob::Base + queue_as :default + + def perform(conference) + conference.subscriptions.each do |subscription| + Mailbot.conference_venue_update_mail(conference, subscription.user).deliver_now + end + end +end diff --git a/app/mailers/mailbot.rb b/app/mailers/mailbot.rb index 06f24789..d9581ba4 100644 --- a/app/mailers/mailbot.rb +++ b/app/mailers/mailbot.rb @@ -53,13 +53,13 @@ class Mailbot < ActionMailer::Base conference.email_settings.conference_registration_dates_updated_body)) end - def send_email_on_venue_updated(conference) - User.joins(:subscriptions).merge(conference.subscriptions).each do |user| - build_email(conference, - user.email, - conference.email_settings.venue_updated_subject, - conference.email_settings.generate_email_on_conf_updates(conference, user, conference.email_settings.venue_updated_body)) - end + def conference_venue_update_mail(conference, user) + mail(to: user.email, + from: conference.contact.email, + subject: conference.email_settings.venue_updated_subject, + body: conference.email_settings.generate_email_on_conf_updates(conference, + user, + conference.email_settings.venue_updated_body)) end def send_on_schedule_public(conference) diff --git a/app/models/venue.rb b/app/models/venue.rb index ac138c23..2604a0a9 100644 --- a/app/models/venue.rb +++ b/app/models/venue.rb @@ -12,7 +12,7 @@ class Venue < ActiveRecord::Base content_type: [/jpg/, /jpeg/, /png/, /gif/], size: { in: 0..500.kilobytes } - after_update :send_mail_notification + before_save :send_mail_notification def address "#{street}, #{city}, #{country_name}" @@ -30,7 +30,7 @@ class Venue < ActiveRecord::Base private def send_mail_notification - Mailbot.send_email_on_venue_updated(conference).deliver_later if notify_on_venue_changed? + ConferenceVenueUpdateMailJob.perform_later(conference) if notify_on_venue_changed? end def notify_on_venue_changed?