class ErpTechSvcs::DelayedJobs::NotificationJob

Public Class Methods

new() click to toggle source
# File lib/erp_tech_svcs/delayed_jobs/notification_job.rb, line 8
def initialize
  @priority = 1
end
schedule_job(schedule_at) click to toggle source
# File lib/erp_tech_svcs/delayed_jobs/notification_job.rb, line 44
def self.schedule_job(schedule_at)
  Delayed::Job.enqueue(ErpTechSvcs::DelayedJobs::NotificationJob.new, @priority, schedule_at)
end

Public Instance Methods

perform() click to toggle source
# File lib/erp_tech_svcs/delayed_jobs/notification_job.rb, line 12
def perform
  unless Dir.exists?(File.join(Rails.root, 'log/delayed_jobs'))
    Dir.mkdir(File.join(Rails.root, 'log/delayed_jobs'))
  end

  logger = Logger.new(File.join(Rails.root,"log/delayed_jobs/#{Rails.env}-notifications_job.log"), "weekly")
  logger.level = Logger::INFO

  time = Benchmark.measure do
    begin
      Notification.where('current_state = ?', 'pending').each do |notification|
        notification.deliver_notification
      end

    rescue Exception => ex
      logger.error("#{Time.now}**************************************************")
      logger.error("Job Error: #{ex.message}")
      logger.error("Trace: #{ex.backtrace.join("\n")}")
      logger.error("*************************************************************")

      # email notification
      ExceptionNotifier.notify_exception(ex) if defined? ExceptionNotifier
    end
  end

  start_time = Chronic.parse(ErpTechSvcs::Config.notification_job_delay)
  Delayed::Job.enqueue(ErpTechSvcs::DelayedJobs::NotificationJob.new, @priority, start_time)

  #update job tracker
  JobTracker.job_ran('Notification Job', self.class.name, ("(%.4fs)" % time.real), start_time)
end