class InfluxDB::Rails::ExceptionPresenter

Attributes

action[R]
backtrace[R]
controller[R]
current_user[R]
custom_data[R]
exception[R]
params[R]
referer[R]
remote_ip[R]
request_url[R]
session_data[R]
user_agent[R]

Public Class Methods

new(ex, params = {}) click to toggle source
# File lib/influxdb/rails/exception_presenter.rb, line 21
def initialize(ex, params = {})
  ex = ex.continued_exception if ex.respond_to?(:continued_exception)
  ex = ex.original_exception if ex.respond_to?(:original_exception)

  @exception    = ex.is_a?(String) ? Exception.new(ex) : ex
  @backtrace    = InfluxDB::Rails::Backtrace.new(@exception.backtrace)
  @dimensions   = {}
  configure_from_params(params)

  @environment_variables = ENV.to_hash || {}
end

Public Instance Methods

context() click to toggle source
# File lib/influxdb/rails/exception_presenter.rb, line 33
def context # rubocop:disable Metrics/MethodLength
  c = {
    application_name:  InfluxDB::Rails.configuration.application_name,
    application_root:  InfluxDB::Rails.configuration.application_root,
    framework:         InfluxDB::Rails.configuration.framework,
    framework_version: InfluxDB::Rails.configuration.framework_version,
    language:          "Ruby",
    language_version:  "#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}",
    custom_data:       @custom_data,
  }

  InfluxDB::Rails.configuration.add_custom_exception_data(self)
  c
end
dimensions() click to toggle source
# File lib/influxdb/rails/exception_presenter.rb, line 48
def dimensions
  {
    class:    @exception.class.to_s,
    method:   "#{@controller}##{@action}",
    filename: File.basename(@backtrace.lines.first.try(:file)),
    server:   Socket.gethostname,
    status:   "open",
  }.merge(@dimensions)
end
request_data() click to toggle source
# File lib/influxdb/rails/exception_presenter.rb, line 65
def request_data
  {
    params:       @params,
    session_data: @session_data,
    controller:   @controller,
    action:       @action,
    request_url:  @request_url,
    referer:      @referer,
    remote_ip:    @remote_ip,
    user_agent:   @user_agent,
  }
end
values() click to toggle source
# File lib/influxdb/rails/exception_presenter.rb, line 58
def values
  {
    exception_message:   @exception.message,
    exception_backtrace: JSON.generate(@backtrace.to_a),
  }
end

Private Instance Methods

configure_from_params(params) click to toggle source
# File lib/influxdb/rails/exception_presenter.rb, line 80
def configure_from_params(params)
  @params       = params[:params]
  @session_data = params[:session_data] || {}
  @current_user = params[:current_user]
  @controller   = params[:controller]
  @action       = params[:action]
  @request_url  = params[:request_url]
  @user_agent   = params[:user_agent]
  @referer      = params[:referer]
  @remote_ip    = params[:remote_ip]
  @custom_data  = params[:custom_data] || {}
end