Sha256: 1f4692aa87f4c0fe2f7198186758935fd4268ee64e3479672143bbfa75bdbda0

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

module Caliper
  module AppError
    def self.create(exception, request_env)
      req = ::Rack::Request.new(request_env)

      remote_ip = request_env["action_dispatch.remote_ip"]
      remote_ip = remote_ip.first if remote_ip.is_a?(Array)

      error_attributes = {
        "message" => exception.message,
        "class_name" => exception.class.name,
        "host" => Socket.gethostname,
        "request_data" => {
          "http_method" => request_env["REQUEST_METHOD"],
          "uri" => request_env["REQUEST_URI"],
          "path" => request_env["PATH_INFO"],
          "remote_ip" => "#{remote_ip}",
          "parameters" => req.params,
          "session_data" => req.session,
          "HTTP_USER_AGENT" => request_env["HTTP_USER_AGENT"],
          "HTTP_HOST" => request_env["HTTP_HOST"],
          "HTTP_X_REAL_IP" => request_env["HTTP_X_REAL_IP"],
          "HTTP_X_FORWARDED_FOR" => request_env["HTTP_X_FORWARDED_FOR"]
        }
      }
      error_attributes["backtrace"] = exception.backtrace.join("\n") if exception.backtrace

      CaliperApi.create_error(
        Yajl::Encoder.encode({"error" => error_attributes})
      )
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
caliper-0.0.1 lib/caliper/app_error.rb