Sha256: 8d2bafacc373dc195348b6c0f4d04c1f3079cc56c76cd66f7597fe35e028e86d

Contents?: true

Size: 1.66 KB

Versions: 10

Compression:

Stored size: 1.66 KB

Contents

module Taskinator
  module Queues

    # https://github.com/mperham/sidekiq

    def self.create_sidekiq_adapter(config={})
      SidekiqAdapter.new(config)
    end

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

        ProcessWorker.class_eval do
          sidekiq_options :queue => config[:process_queue]
        end

        TaskWorker.class_eval do
          sidekiq_options :queue => config[:task_queue]
        end

        JobWorker.class_eval do
          sidekiq_options :queue => config[:job_queue]
        end
      end

      def enqueue_process(process)
        ProcessWorker.perform_async(process.uuid)
      end

      def enqueue_task(task)
        TaskWorker.perform_async(task.uuid)
      end

      def enqueue_job(job)
        # get the queue name
        queue = job.job.get_sidekiq_options['queue']
        JobWorker.get_sidekiq_options.merge!('queue' => queue) if queue

        JobWorker.perform_async(job.uuid)
      end

      class ProcessWorker
        include ::Sidekiq::Worker

        def perform(process_uuid)
          Taskinator::ProcessWorker.new(process_uuid).perform
        end
      end

      class TaskWorker
        include ::Sidekiq::Worker

        def perform(task_uuid)
          Taskinator::TaskWorker.new(task_uuid).perform
        end
      end

      class JobWorker
        include ::Sidekiq::Worker

        def perform(job_uuid)
          Taskinator::JobWorker.new(job_uuid).perform do |job, args|
            job.new.perform(*args)
          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/sidekiq.rb
taskinator-0.0.13 lib/taskinator/queues/sidekiq.rb
taskinator-0.0.12 lib/taskinator/queues/sidekiq.rb
taskinator-0.0.11 lib/taskinator/queues/sidekiq.rb
taskinator-0.0.10 lib/taskinator/queues/sidekiq.rb
taskinator-0.0.9 lib/taskinator/queues/sidekiq.rb
taskinator-0.0.8 lib/taskinator/queues/sidekiq.rb
taskinator-0.0.7 lib/taskinator/queues/sidekiq.rb
taskinator-0.0.5 lib/taskinator/queues/sidekiq.rb
taskinator-0.0.4 lib/taskinator/queues/sidekiq.rb