lib/backgrounder/support/backends.rb in carrierwave_backgrounder-0.1.2 vs lib/backgrounder/support/backends.rb in carrierwave_backgrounder-0.1.3
- old
+ new
@@ -23,52 +23,69 @@
backends << :delayed_job if defined? ::Delayed::Job
backends << :resque if defined? ::Resque
backends << :qu if defined? ::Qu
backends << :sidekiq if defined? ::Sidekiq
backends << :qc if defined? ::QC
- backends << :immediate
+ backends
end
end
def enqueue_for_backend(worker, class_name, subject_id, mounted_as)
- case backend
- when :girl_friday
- @girl_friday_queue ||= GirlFriday::WorkQueue.new(queue_options.delete(:queue) || :carrierwave, queue_options) do |msg|
- worker = msg[:worker]
- worker.perform
- end
- @girl_friday_queue << { :worker => worker.new(class_name, subject_id, mounted_as) }
- when :delayed_job
- ::Delayed::Job.enqueue worker.new(class_name, subject_id, mounted_as), :queue => queue_options[:queue]
- when :resque
- worker.instance_variable_set('@queue', queue_options[:queue] || :carrierwave)
- ::Resque.enqueue worker, class_name, subject_id, mounted_as
- when :qu
- worker.instance_variable_set('@queue', queue_options[:queue] || :carrierwave)
- ::Qu.enqueue worker, class_name, subject_id, mounted_as
- when :sidekiq
- worker.sidekiq_options queue_options
- ::Sidekiq::Client.enqueue worker, class_name, subject_id, mounted_as
- when :qc
- ::QC.enqueue "#{worker.name}.perform", class_name, subject_id, mounted_as.to_s
- when :immediate
- worker.new(class_name, subject_id, mounted_as).perform
- end
+ self.send :"enqueue_#{backend}", worker, class_name, subject_id, mounted_as
end
private
def determine_backend
@backend = if available_backends.empty?
warn 'WARNING: No available queue backends found for CarrierWave::Backgrounder. Using the :immediate.'
:immediate
elsif available_backends.size > 1
- raise ::CarrierWave::Backgrounder::ToManyBackendsAvailableError,
- "You have to many backends available: #{available_backends.inspect}. Please specify which one to use in configuration block"
+ raise ::CarrierWave::Backgrounder::TooManyBackendsAvailableError,
+ "You have too many backends available: #{available_backends.inspect}. Please specify which one to use in configuration block"
else
available_backends.first
end
end
+ def enqueue_delayed_job(worker, *args)
+ ::Delayed::Job.enqueue worker.new(*args), :queue => queue_options[:queue]
+ end
+
+ def enqueue_resque(worker, *args)
+ worker.instance_variable_set('@queue', queue_options[:queue] || :carrierwave)
+ ::Resque.enqueue worker, *args
+ end
+
+ def enqueue_sidekiq(worker, *args)
+ sidekiq_client_args = { 'class' => worker, 'args' => args }
+ sidekiq_client_args['queue'] = queue_options[:queue] unless queue_options[:queue].nil?
+ sidekiq_client_args['retry'] = queue_options[:retry] unless queue_options[:retry].nil?
+ sidekiq_client_args['timeout'] = queue_options[:timeout] unless queue_options[:timeout].nil?
+ sidekiq_client_args['backtrace'] = queue_options[:backtrace] unless queue_options[:backtrace].nil?
+ worker.client_push(sidekiq_client_args)
+ end
+
+ def enqueue_girl_friday(worker, *args)
+ @girl_friday_queue ||= GirlFriday::WorkQueue.new(queue_options.delete(:queue) || :carrierwave, queue_options) do |msg|
+ worker = msg[:worker]
+ worker.perform
+ end
+ @girl_friday_queue << { :worker => worker.new(*args) }
+ end
+
+ def enqueue_qu(worker, *args)
+ worker.instance_variable_set('@queue', queue_options[:queue] || :carrierwave)
+ ::Qu.enqueue worker, *args
+ end
+
+ def enqueue_qc(worker, *args)
+ class_name, subject_id, mounted_as = args
+ ::QC.enqueue "#{worker.name}.perform", class_name, subject_id, mounted_as.to_s
+ end
+
+ def enqueue_immediate(worker, *args)
+ worker.new(*args).perform
+ end
end
end
end