For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Book a demoLog inStart for free
  • Overview
    • Introduction
    • How it works
    • Quickstart
    • Customer showcase
  • Working with SDKs
    • Project structure
    • Adding custom code
    • Migrating to Replay
    • Capabilities
  • Generators
      • Generating an SDK
      • Publishing to RubyGems
      • Configuration
      • Adding custom code
      • Changelog
      • Customer showcase
  • Reference
    • generators.yml
Checking status...
SOC2Soc 2 Type II
© 2026 Fern • Birch Solutions, Inc., a Postman company

Documentation

SDKsDocsAsk FernCLI Reference

API Definitions

OpenAPIAsyncAPIOpenRPCgRPC

Resources

BlogSupportPricing

Company

Brand KitPrivacy PolicyTerms of Service
LogoLogo
Book a demoLog inStart for free
On this page
  • June 1, 2026
  • 1.13.1
  • 1.13.0
  • May 15, 2026
  • 1.12.11
  • May 14, 2026
  • 1.12.10
  • May 13, 2026
  • 1.12.9
  • May 12, 2026
  • 1.12.8
  • 1.12.7
  • 1.12.6
  • May 7, 2026
  • 1.12.5
  • 1.12.4
  • May 5, 2026
  • 1.12.3
  • 1.12.2
  • May 4, 2026
  • 1.12.1
  • 1.12.0
  • April 29, 2026
  • 1.11.1
  • 1.11.0
  • 1.10.0
  • April 27, 2026
  • 1.9.0
GeneratorsRuby

Changelog

June 1, 2026
June 1, 2026

May 15, 2026
May 15, 2026

May 14, 2026
May 14, 2026

May 13, 2026
May 13, 2026

May 12, 2026
May 12, 2026

May 7, 2026
May 7, 2026

May 5, 2026
May 5, 2026

May 4, 2026
May 4, 2026

1.12.1

(fix): Fix duplicate root client generation that caused a lint error.

1.12.0

(feat): Generate CONTRIBUTING.md for Ruby SDKs.


April 29, 2026
April 29, 2026

April 27, 2026
April 27, 2026

Older posts

Next

1.13.1

(fix): Generated model classes now include fields inherited from parent types (Fern extends / OpenAPI allOf). Previously, derived models — including discriminated union variants — only carried their own declared properties and silently dropped fields contributed by their parents, leaving deserialized responses without id, name, and other inherited common fields.

1.13.0

(feat): Add a max_retries: keyword argument to the generated root Client constructor. Consumers can now configure the default retry count once at client construction (e.g. Client.new(max_retries: 5)) instead of relying on the generation-time maxRetries setting in generators.yml. The constructor default still respects the configured value (or 2 when unset), so existing behavior is preserved.

1.12.11

(fix): Dynamic snippets now render path-parameter arguments in IR (URL / SDK signature) order rather than in the order they happen to appear in the input request, so generated examples line up with the actual SDK method signature even when the spec lists path parameters in a different order.

1.12.10

(chore): Bump addressable from 2.8.10 to 2.9.0 in the ruby-v2 SDK generator container to clear CVE-2026-35611 (ReDoS in URI template expansion). Switch the post-install cleanup to gem cleanup so older 2.8.x copies dragged in by rubocop’s dependency graph are dropped from the final image. rexml stays pinned at 3.4.4 (past the 3.3.6 CVE-2024-49761 fix). Also strip the vendored Gemfile.lock files inside cached gems (lint_roller, rbs, typeprof, unicode-emoji) so grype stops reading their pinned rexml / rdoc / addressable versions as installed packages.

1.12.9

(fix): Stop launching WireMock with --global-response-templating in generated wire-test docker-compose.test.yml. Response examples containing literal {{...}} are now served verbatim instead of being passed through WireMock’s Handlebars transformer, which would fail to resolve them as helpers and return 500.

1.12.8

(fix): Fix Layout/EmptyComment RuboCop offense emitted for types with no description. The AST Comment node now skips writing when docs is empty or whitespace-only, so undocumented model classes no longer produce a bare # line above their class definition.

1.12.7

(fix): Fix Layout/EmptyComment RuboCop offense emitted for types with no description. The AST Comment node now skips writing when docs is empty or whitespace-only, so undocumented model classes no longer produce a bare # line above their class definition.

1.12.6

(chore): Patch Ruby SDK generator container CVEs flagged in the AWS ECR / grype scan. Remove the unused erb-4.0.3, net-imap-0.4.21, addressable-2.8.5, rexml-3.2.5, and rexml-3.2.6 gem directories (in addition to the gemspec stubs) and install patched addressable-2.8.10 + rexml-3.4.4, so grype no longer reports the vulnerable versions vendored alongside Ruby 3.3’s default gems and the rubocop dependency graph.

1.12.5

(chore): Bump ruby-v2 model container Ruby base image to ruby:3.3-alpine3.23 (matching the ruby-v2 SDK container) and apply latest Alpine package security updates at build time.

1.12.4

(chore): Remediate container vulnerabilities flagged by the May 2026 Grype scan of the fernapi/fern-ruby-sdk image. Bumps the base image from ruby:3.3-alpine3.20 (EOL) to ruby:3.3-alpine3.23, picking up updated openssl, musl, busybox, zlib, curl, git, c-ares, ada-libs, sqlite-libs, and a Ruby 3.3.11 with newer default gems (resolv, zlib, rexml, uri). Also patches erb and net-imap over the base image (with stale gemspec cleanup so SBOM scanners see the fixed versions), upgrades npm’s bundled vulnerable packages (tar, minimatch, ip-address, picomatch, brace-expansion, @isaacs/brace-expansion, diff), and drops build-base from the runtime image (added as a virtual install-time package and removed after gem install) so binutils CVEs no longer ship in the final image. Reduces grype findings from 78 to 15 (all remaining are upstream Alpine packages with no fix available yet).

1.12.3

(fix): Apply canonical “all user-specified examples, else first autogenerated” selection in the Ruby v2 SDK snippet output path. Aligns the generator’s snippet.json / README example selection with TS-v1 / Python-v1 behavior so dynamic-IR-driven snippets are deterministic across runs.

1.12.2

(fix): Fix circular require in generated barrel file by excluding test/wire files from the main lib require list.

1.11.1

(fix): Strip trailing whitespace from generated comment lines so spec-controlled docstrings no longer trip Layout/TrailingWhitespace after the rubocop -A autocorrect pass was removed in #15202. Caught on the Square nightly baseline benchmark.

1.11.0

(feat): Add retryStatusCodes configuration option ("legacy" | "recommended"). Legacy (default) preserves existing behavior (408, 429, 500, 502, 503, 504, 521, 522, 524). Recommended retries only transient codes (408, 429, 502, 503, 504), excluding 500 Internal Server Error to avoid retrying non-idempotent failures.

1.10.0

(fix): Fix Ruby string interpolation injection vulnerability in TypeLiteral string emitter. Untrusted API spec default values containing #{} are now properly escaped in generated double-quoted Ruby strings.

(feat): Generate fully rubocop-compliant code at emitter level, eliminating all remaining rubocop offenses in generated output so rubocop -A is no longer needed at generation time. Covers Style/IfUnlessModifier (modifier-form detection added to ruby.IfElse AST), Style/RedundantInterpolation (bare .to_s for single-interpolation URL paths and header values), Lint/DuplicateHashKey (dedupe by key in TypeLiteral hash emit and by name in dynamic-snippet keyword arguments), and Layout/FirstHashElementIndentation / Layout/FirstArgumentIndentation (EnforcedStyle: consistent + correct wire-test pagination continuation indent). Rubocop runs as a CI regression gate (check-only, no -A).

1.9.0

(feat): Support x-fern-default as fallback value for parameters in generated Ruby SDKs. When a header, query parameter, or path parameter has a clientDefault value in the IR, the generated Ruby SDK makes that parameter optional with the default value automatically applied.