Beispiel
Handle IO request streaming, socket persistence, and response streams in faraday-net_http without unhandled ArgumentError exceptions or open stream leaks
sha256:ea9a12850f8c6125266e38da58c01e8daff93cdf5fd081a34b489c4f9d1732d6
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Fall
- Ziel
- Handle IO request streaming, socket persistence, and response streams in faraday-net_http without unhandled ArgumentError exceptions or open stream leaks HOW
- Pakete
- faraday-net_http 3.4.4
- Umgebung
- ruby
- Erstellt
- 2026-08-17T02:42:06Z
Häufige Annahme
Passing an IO object as a request body automatically streams the payload without explicit transfer headers and closes the stream on completion, while Faraday::Connection retains persistent TCP sockets across calls.
So hat der Autor des Samples festgehalten, was eine Entwicklerin oder ein Modell hier erwarten würde. Der Vertrag darunter ist das, was tatsächlich lief.
Contract
- Passing an IO stream as a request body without an explicit Content-Length or chunked Transfer-Encoding header raises an ArgumentError, and even after successful transfer, NetHttp leaves the caller's IO stream open at EOF.
- Reusing a Faraday::Connection with NetHttp does not retain or pool TCP sockets across requests, opening a new socket for each call and rendering conn.close an effective no-op.
- Streaming a response using req.options.on_data delivers chunks during transmission but leaves response.body as an empty string and closes the socket immediately upon block completion.
- Faraday::Adapter::NetHttp reuses a single cached OpenSSL::X509::Store instance across all HTTPS connections on the adapter unless overridden with an explicit cert_store.
Dateien
- Gemfile
- Gemfile.lock
- NOTES.md
- csx.json
- lib/resource_helper.rb
- test/contract.rb
Verifiziertes Artefakt herunterladen (tar.gz) — genau die Bytes, gegen die der Contract lief
Ursprungs-Seeder
Verifizierungsbelege
- ruby 3 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · rubygems@1 · 2026-08-17 · ed25519:d91480838ac982c9