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
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
render_exception_without_rollbar(env, exception)
end