module Rollbar::Middleware::Rails::ShowExceptions

Public Class Methods

included(base) click to toggle source
# File lib/rollbar/middleware/rails/show_exceptions.rb, line 45
def self.included(base)
  base.send(:alias_method, :call_without_rollbar, :call)
  base.send(:alias_method, :call, :call_with_rollbar)

  base.send(:alias_method, :render_exception_without_rollbar, :render_exception)
  base.send(:alias_method, :render_exception, :render_exception_with_rollbar)
end

Public Instance Methods

call_with_rollbar(env) click to toggle source
# File lib/rollbar/middleware/rails/show_exceptions.rb, line 21
def call_with_rollbar(env)
  call_without_rollbar(env)
rescue ActionController::RoutingError => e
  # won't reach here if show_detailed_exceptions is true
  scope = extract_scope_from(env)

  Rollbar.scoped(scope) do
    report_exception_to_rollbar(env, e)
  end

  raise e
end
extract_scope_from(env) click to toggle source
# File lib/rollbar/middleware/rails/show_exceptions.rb, line 34
def extract_scope_from(env)
  scope = env['rollbar.scope']
  unless scope
    Rollbar.log_warn(
      '[Rollbar] rollbar.scope key has been removed from Rack env.'
    )
  end

  scope || {}
end
render_exception_with_rollbar(env, exception) click to toggle source
# File lib/rollbar/middleware/rails/show_exceptions.rb, line 7
def render_exception_with_rollbar(env, exception)
  key = 'action_dispatch.show_detailed_exceptions'

  if exception.is_a?(ActionController::RoutingError) && env[key]
    scope = extract_scope_from(env)

    Rollbar.scoped(scope) do
      report_exception_to_rollbar(env, exception)
    end
  end

  render_exception_without_rollbar(env, exception)
end