diff options
Diffstat (limited to 'lib/active_job')
-rw-r--r-- | lib/active_job/enqueuing.rb | 12 | ||||
-rw-r--r-- | lib/active_job/performing.rb | 9 |
2 files changed, 21 insertions, 0 deletions
diff --git a/lib/active_job/enqueuing.rb b/lib/active_job/enqueuing.rb index 4ff7ec7e7f..0f094fb624 100644 --- a/lib/active_job/enqueuing.rb +++ b/lib/active_job/enqueuing.rb @@ -55,5 +55,17 @@ module ActiveJob def initialize(arguments = nil) @arguments = arguments end + + def retry_now + self.class.enqueue *arguments + end + + def retry_in(interval) + self.class.enqueue_in interval, *arguments + end + + def retry_at(timestamp) + self.class.enqueue_at timestamp, *arguments + end end end diff --git a/lib/active_job/performing.rb b/lib/active_job/performing.rb index ef17a39f85..c3f57873e5 100644 --- a/lib/active_job/performing.rb +++ b/lib/active_job/performing.rb @@ -1,13 +1,22 @@ +require 'active_support/rescuable' require 'active_job/arguments' module ActiveJob module Performing + extend ActiveSupport::Concern + + included do + include ActiveSupport::Rescuable + end + def perform_with_hooks(*serialized_args) self.arguments = Arguments.deserialize(serialized_args) run_callbacks :perform do perform *arguments end + rescue => exception + rescue_with_handler(exception) end def perform(*) |