Sha256: fa027018d0275531b6b880823dff2dac5b75d3db360e0c7ac5947f9ead50903b

Contents?: true

Size: 1.38 KB

Versions: 9

Compression:

Stored size: 1.38 KB

Contents

module Dynflow
  module ActiveJob
    module QueueAdapters
      module QueueMethods
        def enqueue(job)
          ::Rails.application.dynflow.world.trigger(JobWrapper, job.serialize).tap do |plan|
            job.provider_job_id = plan.id
          end
        end

        def enqueue_at(job, timestamp)
          ::Rails.application.dynflow.world.delay(JobWrapper, { :start_at => Time.at(timestamp) }, job.serialize).tap do |plan|
            job.provider_job_id = plan.id
          end
        end
      end

      # To use Dynflow, set the queue_adapter config to +:dynflow+.
      #
      #   Rails.application.config.active_job.queue_adapter = :dynflow
      class DynflowAdapter
        # For ActiveJob >= 5
        include QueueMethods

        # For ActiveJob <= 4
        extend QueueMethods
      end

      class JobWrapper < Dynflow::Action
        def queue
          input[:queue].to_sym
        end

        def plan(attributes)
          input[:job_class] = attributes['job_class']
          input[:job_arguments] = attributes['arguments']
          input[:queue] = attributes['queue_name']
          plan_self
        end

        def run
          input[:job_class].constantize.perform_now(*input[:job_arguments])
        end

        def label
          input[:job_class]
        end

        def rescue_strategy
          Action::Rescue::Skip
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
dynflow-1.2.1 lib/dynflow/active_job/queue_adapter.rb
dynflow-1.2.0 lib/dynflow/active_job/queue_adapter.rb
dynflow-1.2.0.pre1 lib/dynflow/active_job/queue_adapter.rb
dynflow-1.1.6 lib/dynflow/active_job/queue_adapter.rb
dynflow-1.1.5 lib/dynflow/active_job/queue_adapter.rb
dynflow-1.1.4 lib/dynflow/active_job/queue_adapter.rb
dynflow-1.1.3 lib/dynflow/active_job/queue_adapter.rb
dynflow-1.1.2 lib/dynflow/active_job/queue_adapter.rb
dynflow-1.1.1 lib/dynflow/active_job/queue_adapter.rb