mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
6528b01942
fix error message change raise to use rails conventions fix misspells
38 lines
1.4 KiB
Ruby
38 lines
1.4 KiB
Ruby
require 'sucker_punch'
|
|
|
|
module ActiveJob
|
|
module QueueAdapters
|
|
# == Sucker Punch adapter for Active Job
|
|
#
|
|
# Sucker Punch is a single-process Ruby asynchronous processing library.
|
|
# It's girl_friday and DSL sugar on top of Celluloid. With Celluloid's
|
|
# actor pattern, we can do asynchronous processing within a single process.
|
|
# This reduces costs of hosting on a service like Heroku along with the
|
|
# memory footprint of having to maintain additional jobs if hosting on
|
|
# a dedicated server. All queues can run within a single Rails/Sinatra
|
|
# process.
|
|
#
|
|
# Read more about Sucker Punch {here}[https://github.com/brandonhilkert/sucker_punch].
|
|
#
|
|
# To use Sucker Punch set the queue_adapter config to +:sucker_punch+.
|
|
#
|
|
# Rails.application.config.active_job.queue_adapter = :sucker_punch
|
|
class SuckerPunchAdapter
|
|
def enqueue(job) #:nodoc:
|
|
JobWrapper.new.async.perform job.serialize
|
|
end
|
|
|
|
def enqueue_at(job, timestamp) #:nodoc:
|
|
raise NotImplementedError, "This queueing backend does not support scheduling jobs. To see what features are supported go to http://api.rubyonrails.org/classes/ActiveJob/QueueAdapters.html"
|
|
end
|
|
|
|
class JobWrapper #:nodoc:
|
|
include SuckerPunch::Job
|
|
|
|
def perform(job_data)
|
|
Base.execute job_data
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|