Sha256: 569a16b908a391d57a7366a701f4ac5f577bb94290f5a44c085adfb9e4a6c53a

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

module WatCatcher
  class Middleware
    def initialize(app)
      @app = app
      @client = HTTPClient.new
      @backgrounder = ::WatCatcher::Backgrounder.new
    end

    def call(env)
      @app.call(env)
    rescue
      excpt = $!
      @backgrounder.queue do
        request = ::Rack::Request.new(env)
        params = request.params
        session = request.session.as_json
        page_url = request.url

        # Build the clean url (hide the port if it is obvious)
        url = "#{request.scheme}://#{request.host}"
        url << ":#{request.port}" unless [80, 443].include?(request.port)
        url << request.fullpath

        @client.post("http://localhost:3000/wats",
                       "wat[page_url]" => page_url,
                       "wat[request_params]" => params,
                       "wat[session]" => session,
                       "wat[backtrace][]" => excpt.backtrace.to_a,
                       "wat[message]" => excpt.message,
                       "wat[error_class]" => excpt.class.to_s
                    )
      end
      raise
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wat_catcher-0.0.1 lib/wat_catcher/middleware.rb