aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/lib/active_job/callbacks.rb
diff options
context:
space:
mode:
authorCristian Bica <cristian.bica@gmail.com>2014-08-16 01:31:39 +0300
committerCristian Bica <cristian.bica@gmail.com>2014-08-16 01:31:39 +0300
commitb2cabb7aceac9e2db0a9cc4fea8a4ef50d4ea132 (patch)
tree5541a32c5d313611b22d68bf5e750332ac5ae9d9 /activejob/lib/active_job/callbacks.rb
parent0e4e496a5775adf4d9204aaa38de916f74623ea9 (diff)
downloadrails-b2cabb7aceac9e2db0a9cc4fea8a4ef50d4ea132.tar.gz
rails-b2cabb7aceac9e2db0a9cc4fea8a4ef50d4ea132.tar.bz2
rails-b2cabb7aceac9e2db0a9cc4fea8a4ef50d4ea132.zip
Added docs for AJ::Callbacks; Added AJ to docs build map
Diffstat (limited to 'activejob/lib/active_job/callbacks.rb')
-rw-r--r--activejob/lib/active_job/callbacks.rb112
1 files changed, 108 insertions, 4 deletions
diff --git a/activejob/lib/active_job/callbacks.rb b/activejob/lib/active_job/callbacks.rb
index c69e4a3b55..af92031bc9 100644
--- a/activejob/lib/active_job/callbacks.rb
+++ b/activejob/lib/active_job/callbacks.rb
@@ -1,40 +1,144 @@
require 'active_support/callbacks'
module ActiveJob
+ # = Active Job Callbacks
+ #
+ # Active Job provides hooks during the lifecycle of a job. Callbacks allows you to trigger
+ # logic during the lifecycle of a job. Available callbacks:
+ #
+ # * <tt>before_enqueue</tt>
+ # * <tt>around_enqueue</tt>
+ # * <tt>after_enqueue</tt>
+ # * <tt>before_perform</tt>
+ # * <tt>around_perform</tt>
+ # * <tt>after_perform</tt>
+ #
module Callbacks
extend ActiveSupport::Concern
include ActiveSupport::Callbacks
-
+
included do
define_callbacks :perform
define_callbacks :enqueue
end
-
+
module ClassMethods
+ # Defines a callback that will get called right before the
+ # job's perform method is executed.
+ #
+ # class VideoProcessJob < ActiveJob::Base
+ # queue_as :default
+ #
+ # before_perform do |job|
+ # UserMailer.notify_video_started_processing(job.arguments.first)
+ # end
+ #
+ # def perform(video_id)
+ # Video.find(video_id).process
+ # end
+ # end
+ #
def before_perform(*filters, &blk)
set_callback(:perform, :before, *filters, &blk)
end
+ # Defines a callback that will get called right after the
+ # job's perform method has finished.
+ #
+ # class VideoProcessJob < ActiveJob::Base
+ # queue_as :default
+ #
+ # after_perform do |job|
+ # UserMailer.notify_video_processed(job.arguments.first)
+ # end
+ #
+ # def perform(video_id)
+ # Video.find(video_id).process
+ # end
+ # end
+ #
def after_perform(*filters, &blk)
set_callback(:perform, :after, *filters, &blk)
end
+ # Defines a callback that will get called around the job's perform method.
+ #
+ # class VideoProcessJob < ActiveJob::Base
+ # queue_as :default
+ #
+ # around_perform do |job, block|
+ # UserMailer.notify_video_started_processing(job.arguments.first)
+ # block.call
+ # UserMailer.notify_video_processed(job.arguments.first)
+ # end
+ #
+ # def perform(video_id)
+ # Video.find(video_id).process
+ # end
+ # end
+ #
def around_perform(*filters, &blk)
set_callback(:perform, :around, *filters, &blk)
end
-
+ # Defines a callback that will get called right before the
+ # job is enqueued.
+ #
+ # class VideoProcessJob < ActiveJob::Base
+ # queue_as :default
+ #
+ # before_enqueue do |job|
+ # $statsd.increment "enqueue-video-job.try"
+ # end
+ #
+ # def perform(video_id)
+ # Video.find(video_id).process
+ # end
+ # end
+ #
def before_enqueue(*filters, &blk)
set_callback(:enqueue, :before, *filters, &blk)
end
+ # Defines a callback that will get called right after the
+ # job is enqueued.
+ #
+ # class VideoProcessJob < ActiveJob::Base
+ # queue_as :default
+ #
+ # after_enqueue do |job|
+ # $statsd.increment "enqueue-video-job.success"
+ # end
+ #
+ # def perform(video_id)
+ # Video.find(video_id).process
+ # end
+ # end
+ #
def after_enqueue(*filters, &blk)
set_callback(:enqueue, :after, *filters, &blk)
end
+ # Defines a callback that will get called before and after the
+ # job is enqueued.
+ #
+ # class VideoProcessJob < ActiveJob::Base
+ # queue_as :default
+ #
+ # around_enqueue do |job, block|
+ # $statsd.time "video-job.process" do
+ # block.call
+ # end
+ # end
+ #
+ # def perform(video_id)
+ # Video.find(video_id).process
+ # end
+ # end
+ #
def around_enqueue(*filters, &blk)
set_callback(:enqueue, :around, *filters, &blk)
end
end
end
-end \ No newline at end of file
+end