Sha256: c6b24c18507b5ce3f1385d64688d1a496bd4319f3c12bc5cf25dc3519e5b3d86

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

module Tartarus::Rescue
  def self.included(base)
    base.class_eval do
      alias_method_chain :rescue_action, :tartarus
    end
  end
  
  def rescue_action_with_tartarus(exception)
    is_exception = response_code_for_rescue(exception) == :internal_server_error

    if is_exception and Tartarus.logging_enabled?
      Tartarus.log(self, exception)
    end

    rescue_action_without_tartarus(exception)
  end
    
  def normalize_request_data_for_tartarus
    enviroment = request.env.dup
    filtered_params = respond_to?(:filter_parameters) ? filter_parameters(request.parameters) : request.parameters.dup

    request_details = {
      :enviroment => { :process => $$, :server => `hostname -s`.chomp },
      :session => { :variables => enviroment['rack.session'].to_hash, :cookie => enviroment['rack.request.cookie_hash'] },
      :http_details => { 
        :method => request.method.to_s.upcase,
        :url => "#{request.protocol}#{request.env["HTTP_HOST"]}#{request.request_uri}",
        :format => request.format.to_s,
        :parameters => filtered_params
      }
    }

    enviroment.each_pair do |key, value|
      request_details[:enviroment][key.downcase] = value if key.match(/^[A-Z_]*$/)
    end

    return request_details
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tartarus-1.0.3 lib/tartarus/rescue.rb