module RequestExceptionHandler

The mixin that provides the request_exception by default included into ActionController::Base

Constants

THREAD_LOCAL_NAME

Public Class Methods

included(base) click to toggle source
# File lib/request_exception_handler.rb, line 52
def self.included(base)
  base.prepend_before_filter :check_request_exception
end
logger() click to toggle source

Retrieves the Rails logger.

# File lib/request_exception_handler.rb, line 45
def self.logger
  @@parse_request_parameters_exception_logger ||=
    defined?(Rails.logger) ? Rails.logger :
      defined?(RAILS_DEFAULT_LOGGER) ? RAILS_DEFAULT_LOGGER :
        Logger.new(STDERR)
end
reset_request_exception() click to toggle source

Resets the current request_exception (to nil).

# File lib/request_exception_handler.rb, line 57
def self.reset_request_exception
  store_request_exception nil
end
store_request_exception(exception) click to toggle source

Resets the current request_exception (to nil).

# File lib/request_exception_handler.rb, line 64
def self.store_request_exception(exception)
  Thread.current.thread_variable_set THREAD_LOCAL_NAME, exception
end

Public Instance Methods

check_request_exception() click to toggle source

Checks and raises a request_exception (gets prepended as a before filter).

# File lib/request_exception_handler.rb, line 94
def check_request_exception
  if e = request_exception
    raise e if e.is_a?(Exception)
  end
end
request_exception() click to toggle source

Retrieves and keeps track of the current request exception if any.

# File lib/request_exception_handler.rb, line 69
def request_exception
  return @_request_exception if defined? @_request_exception
  @_request_exception = Thread.current.thread_variable_get(THREAD_LOCAL_NAME)
  RequestExceptionHandler.reset_request_exception
  @_request_exception
end