class Honeybadger::Notice

def initialize(config, opts = {})

Other tags:
    Api: - private
def initialize(config, opts = {})
  @now   = Time.now.utc
  @pid   = Process.pid
  @id    = SecureRandom.uuid
  @stats = Util::Stats.all
  @opts = opts
  @config = config
  @rack_env = opts.fetch(:rack_env, nil)
  @request_sanitizer = Util::Sanitizer.new(filters: params_filters)
  @exception = unwrap_exception(opts[:exception])
  self.error_class = exception_attribute(:error_class, 'Notice') {|exception| exception.class.name }
  self.error_message = exception_attribute(:error_message, 'No message provided') do |exception|
    message = exception.respond_to?(:detailed_message) ?
      exception.detailed_message(highlight: false).sub(" (#{exception.class.name})", '') # Gems like error_highlight append the exception class name
      : exception.message
    "#{exception.class.name}: #{message}"
  end
  self.backtrace = exception_attribute(:backtrace, caller)
  self.cause = opts.key?(:cause) ? opts[:cause] : (exception_cause(@exception) || $!)
  self.context = construct_context_hash(opts, exception)
  self.local_variables = local_variables_from_exception(exception, config)
  self.api_key = opts[:api_key] || config[:api_key]
  self.tags = construct_tags(opts[:tags]) | construct_tags(context[:tags])
  self.url       = opts[:url]        || request_hash[:url]      || nil
  self.action    = opts[:action]     || request_hash[:action]   || nil
  self.component = opts[:controller] || opts[:component]        || request_hash[:component] || nil
  self.params    = opts[:parameters] || opts[:params]           || request_hash[:params] || {}
  self.session   = opts[:session]    || request_hash[:session]  || {}
  self.cgi_data  = opts[:cgi_data]   || request_hash[:cgi_data] || {}
  self.details   = opts[:details]    || {}
  self.session = opts[:session][:data] if opts[:session] && opts[:session][:data]
  self.breadcrumbs = opts[:breadcrumbs] || Breadcrumbs::Collector.new(config)
  # Fingerprint must be calculated last since callback operates on `self`.
  self.fingerprint = fingerprint_from_opts(opts)
end