Sha256: b26b96b38e405da9a5f3340926600b8d0329b874d043a4d9f203325d67bec85a

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

module Rekiq
  class Scheduler
    attr_accessor :worker_name, :queue, :args, :job, :addon, :work_time

    def initialize(worker_name, queue, args, job, addon)
      self.worker_name = worker_name
      self.queue       = queue
      self.args        = args
      self.job         = job
      self.addon       = addon
    end

    def schedule(from = Time.now)
      self.work_time = job.next_work_time(from)

      work_time.nil? ? nil : [schedule_work, work_time]
    end

    def schedule_from_work_time(from)
      self.work_time = job.next_work_time_from_work_time(from)

      work_time.nil? ? nil : [schedule_work, work_time]
    end

  private

    def schedule_work
      client_args = {
          'at'     => work_time.to_f,
          'queue'  => queue,
          'class'  => worker_name,
          'args'   => args,
          'rq:job' => job.to_short_key_hash,
          'rq:at'  => work_time.to_f
        }.tap do |hash|
          hash['rq:addon'] = addon unless addon.nil?
        end

      Sidekiq::Client.push(client_args)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rekiq-0.0.1 lib/rekiq/scheduler.rb