Sha256: ff48cb35ecfad5984aee384787f3ccb907eef804b1a06d0c490c7116df7a288e

Contents?: true

Size: 722 Bytes

Versions: 3

Compression:

Stored size: 722 Bytes

Contents

class BackgroundTaskJob < Struct.new(:task)
  def queue_name
    "task_#{task.id}"
  end

  def run_at
    task.every.seconds.from_now
  end

  def clear_queue
    Delayed::Job.where(queue: queue_name).destroy_all
  end

  def add_to_queue
    if task.active?
      Delayed::Job.enqueue(self, queue: queue_name, run_at: run_at)
    end
  end

  def reset_queue
    clear_queue
    add_to_queue
  end

  def perform
    task.perform
  end

  def refresh_data
    self.task = Task.where(id: task.id).first
  end

  def after(job)
    refresh_data
    add_to_queue if task
  end

  def self.reset_all_queues
    Delayed::Job.where("queue like 'task_%'").destroy_all
    Task.all.each{|task| new(task).add_to_queue}
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
redis_monitor-0.3.3 lib/engine/app/lib/jobs/background_task_job.rb
redis_monitor-0.3.2 lib/engine/app/lib/jobs/background_task_job.rb
redis_monitor-0.3 lib/engine/app/lib/jobs/background_task_job.rb