class Jobster::Job

Attributes

id[R]
params[R]

Public Class Methods

new(id, params = {}) click to toggle source
# File lib/jobster/job.rb, line 9
def initialize(id, params = {})
  @id = id
  @params = params.with_indifferent_access
end
parse_args_for_queue(queue, params) click to toggle source
# File lib/jobster/job.rb, line 32
def self.parse_args_for_queue(queue, params)
  queue.is_a?(Hash) ? [:main, queue] : [queue, params]
end
perform(params = {}) click to toggle source
# File lib/jobster/job.rb, line 50
def self.perform(params = {})
  new(nil, params).perform
end
queue(queue = {}, params = {}, &block) click to toggle source
# File lib/jobster/job.rb, line 22
def self.queue(queue = {}, params = {}, &block)
  queue, params = parse_args_for_queue(queue, params)
  self.queue_job(Jobster.exchange, queue, self.name, params, &block)
end
queue_job(exchange, queue_name, class_name, params, options = {}, &block) click to toggle source
# File lib/jobster/job.rb, line 36
def self.queue_job(exchange, queue_name, class_name, params, options = {}, &block)
  job_id = SecureRandom.uuid[0,8]
  job_payload = {'params' => params, 'class_name' => class_name, 'id' => job_id, 'queue' => queue_name}
  publish_opts = {}
  publish_opts[:persistent] = true
  publish_opts[:routing_key] = queue_name
  publish_opts[:expiration] = options[:ttl] * 1000 if options[:ttl]
  block.call(job_id, publish_opts) if block_given?
  a = exchange.publish(job_payload.to_json, publish_opts)
  when_string = (options[:ttl] ? "in #{options[:ttl]}s" : "immediately")
  Jobster.config.logger.info "[#{job_id}] \e[34m#{class_name}\e[0m queued to run #{when_string} on #{queue_name} queue"
  job_id
end
queue_with_delay(delay, queue = {}, params = {}, &block) click to toggle source
# File lib/jobster/job.rb, line 27
def self.queue_with_delay(delay, queue = {}, params = {}, &block)
  queue, params = parse_args_for_queue(queue, params)
  self.queue_job(Jobster.delay_exchange, queue, self.name, params, :ttl => delay, &block)
end

Public Instance Methods

log(text) click to toggle source
# File lib/jobster/job.rb, line 18
def log(text)
  Jobster.config.logger.info "[#{@id}] #{text}"
end
perform() click to toggle source
# File lib/jobster/job.rb, line 14
def perform
  # Override in child jobs
end