module Rollbar::Goalie

Public Instance Methods

render_exception_with_rollbar(env, exception) click to toggle source
# File lib/rollbar/plugins/goalie.rb, line 8
def render_exception_with_rollbar(env, exception)
  exception_data = nil

  begin
    controller = env['action_controller.instance']
    request_data = begin
      controller.rollbar_request_data
    rescue StandardError
      nil
    end
    person_data = begin
      controller.rollbar_person_data
    rescue StandardError
      nil
    end
    exception_data = Rollbar.scope(
      :request => request_data,
      :person => person_data
    ).error(exception, :use_exception_level_filters => true)
  rescue StandardError => e
    message = "[Rollbar] Exception while reporting exception to Rollbar: #{e}"
    Rollbar.log_warning(message)
  end

  # if an exception was reported, save uuid in the env
  # so it can be displayed to the user on the error page
  case exception_data
  when Hash
    env['rollbar.exception_uuid'] = exception_data[:uuid]
    Rollbar.log_info(
      "[Rollbar] Exception uuid saved in env: #{exception_data[:uuid]}"
    )
  when 'disabled'
    Rollbar.log_info(
      '[Rollbar] Exception not reported because Rollbar is disabled'
    )
  when 'ignored'
    Rollbar.log_info(
      '[Rollbar] Exception not reported because it was ignored'
    )
  end

  # now continue as normal
  render_exception_without_rollbar(env, exception)
end