Sha256: 42991146afd9acdb3c9e07a539df62e0fb5328870eef284d6de21960c04ee36a

Contents?: true

Size: 811 Bytes

Versions: 31

Compression:

Stored size: 811 Bytes

Contents

# 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

Version data entries

31 entries across 31 versions & 2 rubygems

Version Path
anycable-core-1.6.0.rc.1 lib/anycable/exceptions_handling.rb
anycable-core-1.5.2 lib/anycable/exceptions_handling.rb
anycable-core-1.5.1 lib/anycable/exceptions_handling.rb
anycable-core-1.5.0 lib/anycable/exceptions_handling.rb
anycable-core-1.4.4 lib/anycable/exceptions_handling.rb
anycable-core-1.5.0.rc.1 lib/anycable/exceptions_handling.rb
anycable-core-1.4.3 lib/anycable/exceptions_handling.rb
anycable-core-1.4.2 lib/anycable/exceptions_handling.rb
anycable-core-1.4.1 lib/anycable/exceptions_handling.rb
anycable-core-1.4.0 lib/anycable/exceptions_handling.rb
anycable-core-1.4.0.rc.3 lib/anycable/exceptions_handling.rb
anycable-core-1.4.0.rc.2 lib/anycable/exceptions_handling.rb
anycable-core-1.4.0.rc.1 lib/anycable/exceptions_handling.rb
anycable-core-1.4.0.pre.rc.1 lib/anycable/exceptions_handling.rb
anycable-core-1.3.1 lib/anycable/exceptions_handling.rb
anycable-core-1.3.0 lib/anycable/exceptions_handling.rb
anycable-core-1.2.5 lib/anycable/exceptions_handling.rb
anycable-core-1.2.4 lib/anycable/exceptions_handling.rb
anycable-core-1.2.3 lib/anycable/exceptions_handling.rb
anycable-core-1.2.2 lib/anycable/exceptions_handling.rb