Sha256: 2a6bec48e65bcdd08a6fb7fcd6a7b2bdbe72acd41da13c92745baa5ef3cefdc9

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

require "yogi_berra/catcher"
require "yogi_berra/backtrace"
require "yogi_berra/notice"
require "yogi_berra/exception_middleware"
require "yogi_berra/data"

if defined?(::Rails.version) && ::Rails.version.to_f >= 3.0
  require "yogi_berra/engine"
else
  require "yogi_berra/rails"
end

module YogiBerra
  class << self
    # Stores the notice exception
    # @see YogiBerra.exceptionize
    # @params exception
    # @params environment
    # @params database
    def exceptionize(exception, environment, database, opts = {})
      notice = build_notice_for(exception, opts)
      if database
        YogiBerra::Data.store!(notice, environment, database)
      else
        Rails.logger.error "[YogiBerra Error] No database connection!"
      end
    end

    private

    def build_notice_for(exception, opts = {})
      exception = unwrap_exception(exception)
      if exception.respond_to?(:to_hash)
        opts = opts.merge(exception.to_hash)
      else
        opts = opts.merge(:exception => exception)
      end
      Notice.new(opts)
    end

    def unwrap_exception(exception)
      if exception.respond_to?(:original_exception)
        exception.original_exception
      elsif exception.respond_to?(:continued_exception)
        exception.continued_exception
      else
        exception
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
yogi_berra-0.0.1 lib/yogi_berra.rb