module AppfluxRuby::Rails::ActiveRecord

ActiveRecord < 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 github.com/rails/rails/pull/14488 Detailed description of the

bug and the fix

Constants

KINDS

@return [Array<Symbol>] the hooks that needs fixing

Public Instance Methods

run_callbacks(kind, *args, &block) click to toggle source

Patches default run_callbacks, which is capable of notifying about

exceptions.
Calls superclass method
# File lib/appflux_ruby/rails/active_record.rb, line 20
def run_callbacks(kind, *args, &block)
  # Let the post process handle the exception if it's not a bugged hook.
  return super unless KINDS.include?(kind)

  # Handle the exception ourselves. The 'ex' exception won't be
  # propagated, therefore we must notify it here.
  begin
    super
  rescue Exception => ex
    # TODO: Need to replace with Logger.
    ::AppfluxRuby::BugfluxNotifier.notify(ex)
    raise ex
  end
end