Sha256: b9322f82e7cf9675030a933e9369719742f4436f4742cccea5b3842997a71414

Contents?: true

Size: 594 Bytes

Versions: 2

Compression:

Stored size: 594 Bytes

Contents

# frozen_string_literal: true
module Schneiderlein
  class FlyCatcher < Struct.new(:app)
    def call(env)
      begin
        app.call(env)
      rescue ActionDispatch::ParamsParser::ParseError => e
        env['rack.schneiderlein.parse_errors'] ||= []
        env['rack.schneiderlein.parse_errors'] << e
        app.call(remove_errors_from(env))
      end
    end

    private

    def remove_errors_from(env)
      env['rack.input']     = StringIO.new
      env['rack.errors']    = StringIO.new
      env['RAW_POST_DATA']  = ''
      env['CONTENT_LENGTH'] = '0'
      env
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
schneiderlein-1.3.1 lib/schneiderlein/fly_catcher.rb
schneiderlein-1.3.0 lib/schneiderlein/fly_catcher.rb