Sha256: b692e19b65aad61a582505c5e6647d4d469fee4ae5c6b122c2907192871a439e

Contents?: true

Size: 785 Bytes

Versions: 4

Compression:

Stored size: 785 Bytes

Contents

require 'active_support/core_ext/marshal'

# Borrowed from:
# https://github.com/jeremy/resque-rails/blob/master/lib/resque/rails/queue.rb
module Sufia
  module Resque
    class Queue
      attr_reader :default_queue_name

      def initialize(default_queue_name)
        @default_queue_name = default_queue_name
      end

      def push(job)
        queue = job.respond_to?(:queue_name) ? job.queue_name : default_queue_name
        begin
          ::Resque.enqueue_to queue, MarshaledJob, Base64.encode64(Marshal.dump(job))
        rescue Redis::CannotConnectError
          logger.error "Redis is down!"
        end
      end
    end

    class MarshaledJob
      def self.perform(marshaled_job)
        Marshal.load(Base64.decode64(marshaled_job)).run
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sufia-1.3.0 lib/sufia/queue/resque.rb
sufia-1.2.0 lib/sufia/queue/resque.rb
sufia-1.1.0 lib/sufia/queue/resque.rb
sufia-1.0.0 lib/sufia/queue/resque.rb