Sha256: 6cfe33367489ca7e8f54bf372e001791e0f3d063435e057359fb8e75d2248bbf
Contents?: true
Size: 1.65 KB
Versions: 1
Compression:
Stored size: 1.65 KB
Contents
module Nadir class Notification def initialize(exception, params = {}) @exception = exception @params = params end def to_params { class: @exception.class.name, message: @exception.message, location: location, backtrace: backtrace.join("\n"), environment: Nadir.config.env, timestamp: Time.current, fingerprint: fingerprint, host: Socket.gethostname, pid: Process.pid, request_params: filter(@params.dig(:request, :params)), request_headers: filter(@params.dig(:request, :headers)), request_remote_ip: @params.dig(:request, :remote_ip), } end private def location @params[:location] || $PROGRAM_NAME end def backtrace @_backtrace ||= begin cleaner = ActiveSupport::BacktraceCleaner.new gem_paths.each { |gem_path| cleaner.add_filter { |line| line.sub(gem_path, '') } } cleaner.add_filter { |line| line.sub(Nadir.config.root.to_s, '') } cleaner.add_filter { |line| line.sub('/', '') } cleaner.clean(@exception.backtrace) end end def fingerprint first_backtrace_line = backtrace.find { |trace| trace !~ /pry|irb/ } checksum = [first_backtrace_line, @exception.class].join('|') Digest::SHA1.hexdigest checksum end def gem_paths @gem_paths ||= Gem.path | [Gem.default_dir] end def filter(params) params_filter.filter params rescue params end def params_filter @params_filter ||= ActionDispatch::Http::ParameterFilter.new(Nadir.config.filtered_params || []) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nadir-1.0.2 | lib/nadir/notification.rb |