Sha256: 98fd46d0300843dd215af6ed28f0f52a5fee25bb2a1eb095fde0a18952aae3be

Contents?: true

Size: 1.37 KB

Versions: 10

Compression:

Stored size: 1.37 KB

Contents

module Taskinator
  module Queues

    # https://github.com/collectiveidea/delayed_job

    def self.create_delayed_job_adapter(config={})
      DelayedJobAdapter.new(config)
    end

    class DelayedJobAdapter
      def initialize(config={})
        @config = {
          :process_queue => :default,
          :task_queue => :default,
          :job_queue => :default,
        }.merge(config)
      end

      def enqueue_process(process)
        ::Delayed::Job.enqueue ProcessWorker.new(process.uuid), :queue => @config[:process_queue]
      end

      def enqueue_task(task)
        ::Delayed::Job.enqueue TaskWorker.new(task.uuid), :queue => @config[:task_queue]
      end

      def enqueue_job(job)
        # delayed jobs don't define the queue so use the configured queue instead
        ::Delayed::Job.enqueue JobWorker.new(job.uuid), :queue => @config[:job_queue]
      end

      ProcessWorker = Struct.new(:process_uuid) do
        def perform
          Taskinator::ProcessWorker.new(process_uuid).perform
        end
      end

      TaskWorker = Struct.new(:task_uuid) do
        def perform
          Taskinator::TaskWorker.new(task_uuid).perform
        end
      end

      JobWorker = Struct.new(:job_uuid) do
        def perform
          Taskinator::JobWorker.new(job_uuid).perform do |job, args|
            job.new(*args).perform
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
taskinator-0.0.14 lib/taskinator/queues/delayed_job.rb
taskinator-0.0.13 lib/taskinator/queues/delayed_job.rb
taskinator-0.0.12 lib/taskinator/queues/delayed_job.rb
taskinator-0.0.11 lib/taskinator/queues/delayed_job.rb
taskinator-0.0.10 lib/taskinator/queues/delayed_job.rb
taskinator-0.0.9 lib/taskinator/queues/delayed_job.rb
taskinator-0.0.8 lib/taskinator/queues/delayed_job.rb
taskinator-0.0.7 lib/taskinator/queues/delayed_job.rb
taskinator-0.0.5 lib/taskinator/queues/delayed_job.rb
taskinator-0.0.4 lib/taskinator/queues/delayed_job.rb