class Procrastinator::Scheduler::UpdateProxy

Provides a more natural syntax for rescheduling tasks

@see Scheduler#reschedule

Public Class Methods

new(queue, identifier:) click to toggle source
# File lib/procrastinator/scheduler.rb, line 90
def initialize(queue, identifier:)
   @queue      = queue
   @identifier = identifier.merge(queue: queue.name.to_sym)
end

Public Instance Methods

at(run_at: nil, expire_at: nil)
Alias for: to
to(run_at: nil, expire_at: nil) click to toggle source
# File lib/procrastinator/scheduler.rb, line 95
def to(run_at: nil, expire_at: nil)
   task = @queue.fetch_task(@identifier)

   raise ArgumentError, 'you must provide at least :run_at or :expire_at' if run_at.nil? && expire_at.nil?

   task.reschedule(expire_at: expire_at) if expire_at
   task.reschedule(run_at: run_at) if run_at

   new_data = task.to_h
   new_data.delete(:queue)
   new_data.delete(:data)
   @queue.update(new_data.delete(:id), new_data)
end
Also aliased as: at