class ErpTechSvcs::DelayedJobs::DeleteExpiredSessionsJob

Delayed Job to Reset Daily Assignments to Forecast

Public Class Methods

new() click to toggle source
# File lib/erp_tech_svcs/delayed_jobs/delete_expired_sessions_job.rb, line 8
def initialize
  @priority = 1
end
schedule_job(schedule_dt) click to toggle source
# File lib/erp_tech_svcs/delayed_jobs/delete_expired_sessions_job.rb, line 43
def self.schedule_job(schedule_dt)
  Delayed::Job.enqueue(DeleteExpiredSessionsJob.new, @priority, schedule_dt)
end

Public Instance Methods

perform() click to toggle source
# File lib/erp_tech_svcs/delayed_jobs/delete_expired_sessions_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}-delete_expired_sessions_job.log"), "weekly")
  logger.level = Logger::INFO

  time = Benchmark.measure do
    begin
      ActiveRecord::SessionStore::Session.delete_all ['updated_at < ?', ErpTechSvcs::Config.session_expires_in_hours.hours.ago]
    rescue => 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 #benchmark
  
  # Run once per day
  start_time = Time.now + 1.day
  
  Delayed::Job.enqueue(DeleteExpiredSessionsJob.new, @priority, start_time)
  
  # Update job tracker
  JobTracker.job_ran('Delete Expired Sessions', self.class.name, ("(%.4fs)" % time.real), start_time)
end