Module: ActiveJob::Callbacks::ClassMethods

Defined in:
activejob/lib/active_job/callbacks.rb

Overview

These methods will be included into any Active Job object, adding callbacks for perform and enqueue methods.

Instance Method Summary collapse

Instance Method Details

#after_enqueue(*filters, &blk) ⇒ Object

Defines a callback that will get called right after the job is enqueued.

class VideoProcessJob < ActiveJob::Base
queue_as :default

after_enqueue do |job|
  result = job.successfully_enqueued? ? "success" : "failure"
  $statsd.increment "enqueue-video-job.#{result}"
end

def perform(video_id)
  Video.find(video_id).process
end
end


141
142
143
# File 'activejob/lib/active_job/callbacks.rb', line 141

def after_enqueue(*filters, &blk)
  set_callback(:enqueue, :after, *filters, &blk)
end

#after_perform(*filters, &blk) ⇒ Object

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


69
70
71
# File 'activejob/lib/active_job/callbacks.rb', line 69

def after_perform(*filters, &blk)
  set_callback(:perform, :after, *filters, &blk)
end

#around_enqueue(*filters, &blk) ⇒ Object

Defines a callback that will get called around the enqueuing of the job.

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


162
163
164
# File 'activejob/lib/active_job/callbacks.rb', line 162

def around_enqueue(*filters, &blk)
  set_callback(:enqueue, :around, *filters, &blk)
end

#around_perform(*filters, &blk) ⇒ Object

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

You can access the return value of the job only if the execution wasn't halted.

class VideoProcessJob < ActiveJob::Base
around_perform do |job, block|
  value = block.call
  puts value # => "Hello World!"
end

def perform
  "Hello World!"
end
end


102
103
104
# File 'activejob/lib/active_job/callbacks.rb', line 102

def around_perform(*filters, &blk)
  set_callback(:perform, :around, *filters, &blk)
end

#before_enqueue(*filters, &blk) ⇒ Object

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


121
122
123
# File 'activejob/lib/active_job/callbacks.rb', line 121

def before_enqueue(*filters, &blk)
  set_callback(:enqueue, :before, *filters, &blk)
end

#before_perform(*filters, &blk) ⇒ Object

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


50
51
52
# File 'activejob/lib/active_job/callbacks.rb', line 50

def before_perform(*filters, &blk)
  set_callback(:perform, :before, *filters, &blk)
end