From 0bb1a7b4a943015a8480a0e21ce5b3bd118d62d6 Mon Sep 17 00:00:00 2001 From: Markus Kahl Date: Fri, 6 Mar 2015 13:56:37 +0000 Subject: [PATCH] extract what little common code there was --- .../deliver_work_package_created_job.rb | 12 ++--- .../deliver_work_package_updated_job.rb | 10 +--- app/workers/mail_notification_job.rb | 48 +++++++++++++++++++ 3 files changed, 53 insertions(+), 17 deletions(-) create mode 100644 app/workers/mail_notification_job.rb diff --git a/app/workers/deliver_work_package_created_job.rb b/app/workers/deliver_work_package_created_job.rb index 6f03c23824..ae0ea90f00 100644 --- a/app/workers/deliver_work_package_created_job.rb +++ b/app/workers/deliver_work_package_created_job.rb @@ -28,19 +28,13 @@ #++ class DeliverWorkPackageCreatedJob + include MailNotificationJob + def initialize(user_id, work_package_id) @user_id = user_id @work_package_id = work_package_id end - def perform - notification_mail.deliver - end - - def error(_job, e) - Rails.logger.error "notification of #{user.mail} failed (work package created): #{e}" - end - private def notification_mail @@ -52,6 +46,6 @@ class DeliverWorkPackageCreatedJob end def work_package - @journal ||= WorkPackage.find(@work_package_id) + @work_package ||= WorkPackage.find(@work_package_id) end end diff --git a/app/workers/deliver_work_package_updated_job.rb b/app/workers/deliver_work_package_updated_job.rb index e4d7df45d8..6fdaa8356f 100644 --- a/app/workers/deliver_work_package_updated_job.rb +++ b/app/workers/deliver_work_package_updated_job.rb @@ -28,20 +28,14 @@ #++ class DeliverWorkPackageUpdatedJob + include MailNotificationJob + def initialize(user_id, journal_id, current_user_id) @user_id = user_id @journal_id = journal_id @current_user_id = current_user_id end - def perform - notification_mail.deliver - end - - def error(_job, e) - Rails.logger.error "notification of #{user.mail} failed (work package updated): #{e}" - end - private def notification_mail diff --git a/app/workers/mail_notification_job.rb b/app/workers/mail_notification_job.rb new file mode 100644 index 0000000000..908d79bc5f --- /dev/null +++ b/app/workers/mail_notification_job.rb @@ -0,0 +1,48 @@ +#-- encoding: UTF-8 +#-- copyright +# OpenProject is a project management system. +# Copyright (C) 2012-2015 the OpenProject Foundation (OPF) +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See doc/COPYRIGHT.rdoc for more details. +#++ + +## +# Requires including class to implement #notification_mail. +module MailNotificationJob + def perform + notify + end + + def notify + notification_mail.deliver + rescue ActiveRecord::RecordNotFound => e + # Since we cannot recover from this error we catch it and move on. + Rails.logger.error "Cannot deliver notification (#{self.inspect}) + as required record was not found: #{e}".squish + end + + def error(_job, e) + Rails.logger.error "notification failed (#{self.inspect}): #{e}" + end +end