mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
93c9534c98
The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
51 lines
1.4 KiB
Ruby
51 lines
1.4 KiB
Ruby
module ActiveJob
|
|
module QueueName
|
|
extend ActiveSupport::Concern
|
|
|
|
# Includes the ability to override the default queue name and prefix.
|
|
module ClassMethods
|
|
mattr_accessor(:queue_name_prefix)
|
|
mattr_accessor(:default_queue_name) { "default" }
|
|
|
|
# Specifies the name of the queue to process the job on.
|
|
#
|
|
# class PublishToFeedJob < ActiveJob::Base
|
|
# queue_as :feeds
|
|
#
|
|
# def perform(post)
|
|
# post.to_feed!
|
|
# end
|
|
# end
|
|
def queue_as(part_name=nil, &block)
|
|
if block_given?
|
|
self.queue_name = block
|
|
else
|
|
self.queue_name = queue_name_from_part(part_name)
|
|
end
|
|
end
|
|
|
|
def queue_name_from_part(part_name) #:nodoc:
|
|
queue_name = part_name || default_queue_name
|
|
name_parts = [queue_name_prefix.presence, queue_name]
|
|
name_parts.compact.join(queue_name_delimiter)
|
|
end
|
|
end
|
|
|
|
included do
|
|
class_attribute :queue_name, instance_accessor: false
|
|
class_attribute :queue_name_delimiter, instance_accessor: false
|
|
|
|
self.queue_name = default_queue_name
|
|
self.queue_name_delimiter = "_" # set default delimiter to '_'
|
|
end
|
|
|
|
# Returns the name of the queue the job will be run on.
|
|
def queue_name
|
|
if @queue_name.is_a?(Proc)
|
|
@queue_name = self.class.queue_name_from_part(instance_exec(&@queue_name))
|
|
end
|
|
@queue_name
|
|
end
|
|
|
|
end
|
|
end
|