lib/anycable/exceptions_handling.rb
# frozen_string_literal: true module AnyCable module ExceptionsHandling # :nodoc: class << self def add_handler(block) handlers << procify(block) end alias_method :<<, :add_handler def notify(exp, method_name, message) handlers.each do |handler| handler.call(exp, method_name, message) rescue => exp AnyCable.logger.error "!!! EXCEPTION HANDLER THREW AN ERROR !!!" AnyCable.logger.error exp AnyCable.logger.error exp.backtrace.join("\n") unless exp.backtrace.nil? end end private def procify(block) return block unless block.lambda? proc { |*args| block.call(*args.take(block.arity)) } end def handlers @handlers ||= [] end end end end