From 7059ab35f797c163cd8907abcd7d0830b31e56f7 Mon Sep 17 00:00:00 2001 From: wvengen Date: Wed, 18 Mar 2015 10:48:26 +0100 Subject: Add job priorities to ActiveJob --- activejob/lib/active_job/queue_priority.rb | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 activejob/lib/active_job/queue_priority.rb (limited to 'activejob/lib/active_job/queue_priority.rb') diff --git a/activejob/lib/active_job/queue_priority.rb b/activejob/lib/active_job/queue_priority.rb new file mode 100644 index 0000000000..01d84910ff --- /dev/null +++ b/activejob/lib/active_job/queue_priority.rb @@ -0,0 +1,44 @@ +module ActiveJob + module QueuePriority + extend ActiveSupport::Concern + + # Includes the ability to override the default queue priority. + module ClassMethods + mattr_accessor(:default_priority) + + # Specifies the priority of the queue to create the job with. + # + # class PublishToFeedJob < ActiveJob::Base + # queue_with_priority 50 + # + # def perform(post) + # post.to_feed! + # end + # end + # + # Specify either an argument or a block. + def queue_with_priority(priority=nil, &block) + if block_given? + self.priority = block + else + self.priority = priority + end + end + end + + included do + class_attribute :priority, instance_accessor: false + + self.priority = default_priority + end + + # Returns the priority that the job will be created with + def priority + if @priority.is_a?(Proc) + @priority = instance_exec(&@priority) + end + @priority + end + + end +end -- cgit v1.2.3