lib/backgrounder/support/backends.rb
module CarrierWave
module Backgrounder
module Support
module Backends
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
attr_reader :queue_options
def backend(queue_name=nil, args={})
return @backend if @backend
@queue_options = args
@backend = queue_name
end
def enqueue_for_backend(worker, class_name, subject_id, mounted_as)
self.send :"enqueue_#{backend}", worker, class_name, subject_id, mounted_as
end
private
def enqueue_active_job(worker, *args)
worker.perform_later(*args.map(&:to_s))
end
def enqueue_sidekiq(worker, *args)
override_queue_name = worker.sidekiq_options['queue'] == 'default' || worker.sidekiq_options['queue'].nil?
args = sidekiq_queue_options(override_queue_name, 'class' => worker, 'args' => args.map(&:to_s))
worker.client_push(args)
end
private
def sidekiq_queue_options(override_queue_name, args)
if override_queue_name && queue_options[:queue]
args['queue'] = queue_options[:queue]
end
args['retry'] = queue_options[:retry] unless queue_options[:retry].nil?
args['timeout'] = queue_options[:timeout] if queue_options[:timeout]
args['backtrace'] = queue_options[:backtrace] if queue_options[:backtrace]
args
end
end
end
end
end
end