diff options
Diffstat (limited to 'lib/active_job/queue_adapters')
-rw-r--r-- | lib/active_job/queue_adapters/delayed_job_adapter.rb | 9 | ||||
-rw-r--r-- | lib/active_job/queue_adapters/resque_adapter.rb | 25 | ||||
-rw-r--r-- | lib/active_job/queue_adapters/sidekiq_adapter.rb | 11 | ||||
-rw-r--r-- | lib/active_job/queue_adapters/sucker_punch_adapter.rb | 11 |
4 files changed, 48 insertions, 8 deletions
diff --git a/lib/active_job/queue_adapters/delayed_job_adapter.rb b/lib/active_job/queue_adapters/delayed_job_adapter.rb index 4730d97a9a..1db15f1804 100644 --- a/lib/active_job/queue_adapters/delayed_job_adapter.rb +++ b/lib/active_job/queue_adapters/delayed_job_adapter.rb @@ -1,12 +1,17 @@ require 'delayed_job' -require 'active_job/job_wrappers/delayed_job_wrapper' module ActiveJob module QueueAdapters class DelayedJobAdapter class << self def queue(job, *args) - JobWrappers::DelayedJobWrapper.new.delay(queue: job.queue_name).perform(job, *args) + JobWrapper.new.delay(queue: job.queue_name).perform(job, *args) + end + end + + class JobWrapper + def perform(job, *args) + job.perform(*ActiveJob::Parameters.deserialize(args)) end end end diff --git a/lib/active_job/queue_adapters/resque_adapter.rb b/lib/active_job/queue_adapters/resque_adapter.rb index 43a44d2a48..1d1f9ffe83 100644 --- a/lib/active_job/queue_adapters/resque_adapter.rb +++ b/lib/active_job/queue_adapters/resque_adapter.rb @@ -1,12 +1,33 @@ require 'resque' -require 'active_job/job_wrappers/resque_wrapper' +require 'active_support/core_ext/enumerable' +require 'active_support/core_ext/array/access' module ActiveJob module QueueAdapters class ResqueAdapter class << self def queue(job, *args) - Resque.enqueue *JobWrappers::ResqueWrapper.wrap(job, args) + Resque.enqueue *JobWrapper.wrap(job, args) + end + end + + class JobWrapper + class << self + def wrap(job, args) + [ new(job), *args.prepend(job) ] + end + + def perform(job_name, *args) + job_name.constantize.perform(*ActiveJob::Parameters.deserialize(args)) + end + end + + def initialize(job) + @queue = job.queue_name + end + + def to_s + self.class.to_s end end end diff --git a/lib/active_job/queue_adapters/sidekiq_adapter.rb b/lib/active_job/queue_adapters/sidekiq_adapter.rb index 70c4377a23..90af35525a 100644 --- a/lib/active_job/queue_adapters/sidekiq_adapter.rb +++ b/lib/active_job/queue_adapters/sidekiq_adapter.rb @@ -1,12 +1,19 @@ require 'sidekiq' -require 'active_job/job_wrappers/sidekiq_wrapper' module ActiveJob module QueueAdapters class SidekiqAdapter class << self def queue(job, *args) - JobWrappers::SidekiqWrapper.perform_async(job, *args) + JobWrapper.perform_async(job, *args) + end + end + + class JobWrapper + include Sidekiq::Worker + + def perform(job_name, *args) + job_name.constantize.perform(*ActiveJob::Parameters.deserialize(args)) end end end diff --git a/lib/active_job/queue_adapters/sucker_punch_adapter.rb b/lib/active_job/queue_adapters/sucker_punch_adapter.rb index 8191e5a1df..d721a0dcd5 100644 --- a/lib/active_job/queue_adapters/sucker_punch_adapter.rb +++ b/lib/active_job/queue_adapters/sucker_punch_adapter.rb @@ -1,12 +1,19 @@ require 'sucker_punch' -require 'active_job/job_wrappers/sucker_punch_wrapper' module ActiveJob module QueueAdapters class SuckerPunchAdapter class << self def queue(job, *args) - JobWrappers::SuckerPunchWrapper.new.async.perform(job, *args) + JobWrapper.new.async.perform(job, *args) + end + end + + class JobWrapper + include SuckerPunch::Job + + def perform(job_name, *args) + job_name.perform(*ActiveJob::Parameters.deserialize(args)) end end end |