Sha256: 7b2af5c6cef18c56e9b6a77a4938a405d1c883a676d2aa16c4e6501de826bc0e

Contents?: true

Size: 1.05 KB

Versions: 50

Compression:

Stored size: 1.05 KB

Contents

require 'ostruct'

module Qu
  class Payload < OpenStruct
    include Logger

    undef_method(:id) if method_defined?(:id)

    def initialize(options = {})
      super
      self.args ||= []
    end

    def klass
      constantize(super)
    end

    def queue
      (klass.instance_variable_get(:@queue) || 'default').to_s
    end

    def perform
      klass.perform(*args)
      Qu.backend.completed(self)
    rescue Qu::Worker::Abort
      logger.debug "Releasing job #{self}"
      Qu.backend.release(self)
      raise
    rescue Exception => e
      logger.fatal "Job #{self} failed"
      log_exception(e)
      Qu.failure.create(self, e) if Qu.failure
      Qu.backend.failed(self, e)
    end

    def to_s
      "#{id}:#{klass}:#{args.inspect}"
    end

  protected

    def constantize(class_name)
      return unless class_name
      return class_name if class_name.is_a?(Class)
      constant = Object
      class_name.split('::').each do |name|
        constant = constant.const_get(name) || constant.const_missing(name)
      end
      constant
    end

  end
end

Version data entries

50 entries across 50 versions & 2 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.7.4 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.7.3 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.7.2 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.7.1 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.7.0 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.6.9 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.6.8 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.6.7 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.6.6 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.6.5 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.6.4 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.6.3 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.6.2 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.6.1 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.6.0 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.5.17 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.5.16 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.5.15 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb
classiccms-0.5.14 vendor/bundle/gems/qu-0.1.4/lib/qu/payload.rb