Sha256: 52c3b7fc0c47b3c5e33a8a7a0558b2bb5f108c73ff1c4463819205364c146008

Contents?: true

Size: 564 Bytes

Versions: 3

Compression:

Stored size: 564 Bytes

Contents

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

3 entries across 3 versions & 1 rubygems

Version Path
schneiderlein-1.2.0 lib/schneiderlein/fly_catcher.rb
schneiderlein-1.1.0 lib/schneiderlein/fly_catcher.rb
schneiderlein-1.0.0 lib/schneiderlein/fly_catcher.rb