Sha256: a11ef0bd9e0e30870107c27b8fbc09c5327bec44ebc3c5edf9eb51fc2b3e0c5b
Contents?: true
Size: 1.22 KB
Versions: 15
Compression:
Stored size: 1.22 KB
Contents
module Airbrake module Rails ## # Rails <4.2 has a bug with regard to swallowing exceptions in the # +after_commit+ and the +after_rollback+ hooks: it doesn't bubble up # exceptions from there. # # This module makes it possible to report exceptions occurring there. # # @see https://github.com/rails/rails/pull/14488 Detailed description of the # bug and the fix # @see https://goo.gl/348lor Rails 4.2+ implementation (fixed) # @see https://goo.gl/ddFNg7 Rails <4.2 implementation (bugged) module ActiveRecord ## # Patches default +run_callbacks+ with our version, which is capable of # notifying about exceptions. # # rubocop:disable Lint/RescueException def run_callbacks(kind, *args, &block) # Let the post process handle the exception if it's not a bugged hook. return super unless [:commit, :rollback].include?(kind) # Handle the exception ourselves. The 'ex' exception won't be # propagated, therefore we must notify it here. begin super rescue Exception => ex Airbrake.notify(ex) raise ex end end # rubocop:enable Lint/RescueException end end end
Version data entries
15 entries across 15 versions & 2 rubygems