All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Improve gem push workflow security and reliability.
3.0.0 - 2026-03-16
Multipartaccepts acontent_type:keyword to supportmultipart/related,multipart/mixed, and other multipart content types. Defaults tomultipart/form-data. (#1)FormData::File#closefor closing file handles opened from String paths or Pathnames. When a File is created from an existing IO,closeis a no-op. (#27)- Accept any Enumerable (not just Hash or Array) as form data input for both
MultipartandUrlencodedencoders. This enables lazy enumerators and custom collections as input. FormData.ensure_datafor coercing input to an Enumerable of key-value pairs.- Array of pairs input for
Multipart, allowing duplicate parameter names and preserved ordering. - Array of pairs input for
Urlencoded, preserving duplicate keys. - RBS type signatures for all public and private APIs.
sig/directory shipped in the gem for downstream type checking.homepage_uri,source_code_uri,bug_tracker_uri, anddocumentation_urigemspec metadata.
- Default urlencoded encoder replaced with a custom implementation that supports
nested Hashes and Arrays (e.g.,
{foo: {bar: "baz"}}encodes asfoo[bar]=baz). Previously usedURI.encode_www_form. FormData.ensure_hashno longer treatsnilas a special case;nil.to_hreturns{}which is used instead.
- Ruby < 3.2 support.
- Explicit JRuby support.
FormData::File#mime_typedeprecated alias. Use#content_typeinstead.:mime_typeoption inFormData::File#initialize. Use:content_typeinstead.
2.3.0 - 2020-03-08
2.2.0 - 2020-01-09
2.1.1 - 2018-06-01
- Allow overriding urlencoded form data encoder. (#23 by @FabienChaynes)
2.1.0 - 2018-03-05
- Rewind content at the end of
Readable#to_s. (#21 by @janko-m) - Buffer encoding. (#19 by @HoneyryderChuck)
2.0.0 - 2017-10-01
2.0.0.pre2 - 2017-05-11
2.0.0.pre1 - 2017-05-10
1.0.2 - 2017-05-08
- Allow setting Content-Type on non-file parts. (#5 by @abotalov)
- Creation of file parts without filename. (#6 by @abotalov)
1.0.1 - 2015-03-31
- Usage of URI module.
1.0.0 - 2015-01-04
- Gem renamed to
http-form_dataasFormDatais no longer a top-level constant:FormData→HTTP::FormData.
0.1.0 - 2015-01-02
nilsupport toFormData#ensure_hash.
- Moved repo under
httprborganization on GitHub.
0.0.1 - 2014-12-15
- Initial release.