[Feature Request] [ActiveJob] Allow for custom handling of exceptions that are discarded

8 views
Skip to first unread message

aidan...@yahoo.com

unread,
Jan 23, 2018, 5:05:18 PM1/23/18
to Ruby on Rails: Core
Hi,

ActiveJob exception handing can be performed using 'retry_on' and 'discard_on'. To use the default exception handlers you can write:

retry_on(CustomAppException)
 
discard_on(AnotherCustomAppException)

To use custom exception handling with 'retry_on':

retry_on(CustomAppException) do |job, exception|
  ExceptionNotifier.caught(exception)
end

However, you cannot currently use custom exception handling with 'discard_on' as the passed block isn't called. 

discard_on(AnotherCustomAppException) do |job, exception|
  ExceptionNotifier.caught(exception) ### DOES NOT GET CALLED ###
end

Instead you have to write:

retry_on(AnotherCustomAppException, attempts: 1) do |job, exception|
  ExceptionNotifier.caught(exception)
end

or 

rescue_from(AnotherCustomAppException) do |exception|
  ExceptionNotifier.caught(exception)
end

Would be nicer if the blocked passed to 'discard_on' was called and the following worked:

discard_on(AnotherCustomAppException) do |job, exception|
  ExceptionNotifier.caught(exception)
end

I've made this PR with the required changes: https://github.com/rails/rails/pull/30622

Thanks,
Aidan
Reply all
Reply to author
Forward
0 new messages