{"record":{"id":"b8a382cca0d82d1f","repo":"BoundaryML/baml","slug":"e-request","errorCode":null,"errorMessage":"{e:?}","messagePattern":"\\{e:\\?\\}","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"engine/language_client_ruby/ext/ruby_ffi/src/types/request.rs","lineNumber":45,"sourceCode":"        )\n    }\n\n    pub fn id(&self) -> String {\n        self.inner.id().to_string()\n    }\n\n    pub fn url(&self) -> String {\n        self.inner.url().to_string()\n    }\n\n    pub fn method(&self) -> String {\n        self.inner.method().to_string()\n    }\n\n    pub fn headers(ruby: &Ruby, rb_self: &Self) -> Result<magnus::Value> {\n        // Convert headers to Ruby hash\n        serde_magnus::serialize(&rb_self.inner.headers())\n            .map_err(|e| Error::new(ruby.exception_runtime_error(), format!(\"{e:?}\")))\n    }\n\n    pub fn body(&self) -> HTTPBody {\n        // TODO: Avoid clone.\n        HTTPBody::from(self.inner.body().clone())\n    }\n\n    pub fn define_in_ruby(module: &RModule) -> Result<()> {\n        let cls = module.define_class(\"HTTPRequest\", class::object())?;\n\n        cls.define_method(\"to_s\", method!(HTTPRequest::to_s, 0))?;\n        cls.define_method(\"id\", method!(HTTPRequest::id, 0))?;\n        cls.define_method(\"url\", method!(HTTPRequest::url, 0))?;\n        cls.define_method(\"method\", method!(HTTPRequest::method, 0))?;\n        cls.define_method(\"headers\", method!(HTTPRequest::headers, 0))?;\n        cls.define_method(\"body\", method!(HTTPRequest::body, 0))?;\n\n        Ok(())","sourceCodeStart":27,"sourceCodeEnd":63,"githubUrl":"https://github.com/BoundaryML/baml/blob/bd85ce9dee1463ff04d27efd20531013a4ff46c1/engine/language_client_ruby/ext/ruby_ffi/src/types/request.rs#L27-L63","documentation":"Ruby FFI generic serialization error: converting the HTTP request's headers into a Ruby hash via serde_magnus failed. The {e:?} is the magnus conversion error (e.g. a header value type that has no Ruby representation). This is the catch-all serialization guard for the headers accessor on the Ruby HTTPRequest wrapper.","triggerScenarios":"Calling headers on an FFI HTTPRequest object when the internal header map cannot be serialized into a Ruby value.","commonSituations":"Version mismatch between the Ruby gem and the compiled native extension, or unusual header values (non-UTF8 / non-string-mappable) produced upstream.","solutions":["Rebuild/reinstall the baml gem so native extension and runtime versions match.","Log the debug serde error from the message to find the offending header.","Update to the latest baml release where serialization bugs may be fixed."],"exampleFix":"// before\nh = request.headers # RuntimeError: {e:?}\n// after\nbegin\n  h = request.headers\nrescue RuntimeError => e\n  h = {}\n  logger.warn(\"headers serialization failed: #{e.message}\")\nend","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"begin\n  headers = request.headers\nrescue RuntimeError => e\n  headers = {}\nend","preventionTips":["Align Ruby client gem and Rust runtime versions.","Surface the debug serde message when reporting issues."],"tags":["ruby","ffi","serialization","http-headers"],"backgroundTag":"json-marshal-failed","analyzedSha":"bd85ce9dee1463ff04d27efd20531013a4ff46c1","analyzedAt":"2026-09-12T03:38:25.718Z","contentChangedAt":"2026-09-12T03:38:25.718Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}