Ruby configuration

View as Markdown

You can customize the behavior of the Ruby SDK generator in generators.yml:

generators.yml
1groups:
2 ruby-sdk:
3 generators:
4 - name: fern-ruby-sdk
5 version: 1.23.2
6 config:
7 moduleName: YourModuleName
8 enableWireTests: true
9 extraDependencies:
10 faraday: "~> 2.0"
11 oj: "~> 3.0"
12 extraDevDependencies:
13 rspec: "~> 3.0"
14 webmock: "~> 3.0"
auto-generate-idempotency-key
boolean | objectDefaults to false

Overrides the API-wide api.settings.auto-generate-idempotency-key for this SDK. Set true to attach an idempotency-key header to eligible requests (POST and PUT by default) unless the caller provides one, or false to opt this SDK out when auto-generation is enabled API-wide. Pass an object to customize header-name and methods.

clientModuleName
string

Custom name for the client module. This allows you to customize the module name that wraps the generated client class.

customPagerName
string

Custom name for the pager class used in paginated endpoints. By default, the generator creates a standard pager class, but you can customize its name to match your SDK’s naming conventions.

customReadmeSections
array of objects

Add custom sections to the generated README file. Each section requires a title and content.

1config:
2 customReadmeSections:
3 - title: "Custom integration"
4 content: "Instructions for custom integration..."
5 - title: "Advanced usage"
6 content: "Advanced usage examples for {{ packageName }}"

The content supports template variables like {{ packageName }} that are replaced with actual values during generation.

enableWireTests
booleanDefaults to false

When enabled, generates mock server (wire) tests to verify that the SDK sends and receives HTTP requests as expected.

extraDependencies
object
Enterprise feature

This feature is available only for the Enterprise plan. To get started, reach out to support@buildwithfern.com.

Specify additional dependencies to include in the generated SDK’s gemspec. This is useful when you need to add custom gems that your SDK depends on.

extraDevDependencies
object
Enterprise feature

This feature is available only for the Enterprise plan. To get started, reach out to support@buildwithfern.com.

Specify additional development dependencies to include in the generated SDK’s Gemfile. These are dependencies used for development and testing but not required by end users.

maxRetries
number

The default number of retries for failed requests. When not set, the generated SDK uses its own built-in default. SDK users can still override this per-request via request options.

moduleName
string

Custom module name for the generated SDK. This sets the top-level Ruby module that wraps all generated code. By default, the module name is derived from the package name in your publish configuration or your organization name.

1config:
2 moduleName: MyCustomModule

This generates code like:

1module MyCustomModule
2 class Client
3 # ...
4 end
5end
offsetSemantics
'item-index' | 'page-index'

Controls how the offset parameter is interpreted for auto-paginated endpoints.

  • item-index: The offset counts individual items (e.g., offset 20 skips the first 20 items).
  • page-index: The offset counts pages (e.g., offset 3 skips to page 3).
omitFernHeaders
booleanDefaults to false

When enabled, the generated SDK omits the X-Fern-Language, X-Fern-SDK-Name, and X-Fern-SDK-Version headers from HTTP requests.

includePlatformHeaders
booleanDefaults to false

When enabled, the generated SDK sends a single structured User-Agent header of the form {sdkName}/{version} ({os}; {arch}) {runtime}/{runtimeVersion} (for example, my-sdk/0.0.1 (linux; x86_64) Ruby/3.2.0), carrying SDK, operating system, architecture, and runtime information in place of the default User-Agent and discrete platform headers. A configured user-agent template supplies the leading product token. If omitFernHeaders is enabled, no User-Agent or platform headers are sent and this option has no effect.

allowUserAgentAppInfo
booleanDefaults to false

When enabled, the generated client accepts an optional app_info keyword of the shape { name:, version:, comment: }, which appends a {name}/{version} ({comment}) product token to the User-Agent header so an application built on the SDK can identify itself to the API. The application passes a required name plus an optional version and comment; omitted or blank values are dropped from the token. An explicit User-Agent header takes precedence, and omitFernHeaders suppresses the header entirely.

1app_info: { name: "partner-app", version: "3.1.0", comment: "+https://partner.example" }
2# User-Agent: my-sdk/0.0.1 (linux; x86_64) Ruby/3.2.0 partner-app/3.1.0 (+https://partner.example)
requirePaths
array of strings
Enterprise feature

This feature is available only for the Enterprise plan. To get started, reach out to support@buildwithfern.com.

Paths to files that will be auto-loaded when the gem is required. This is useful for including custom integrations or extensions that should be loaded automatically.

1config:
2 requirePaths:
3 - custom_integration
4 - sentry_integration

This will load lib/<gem>/custom_integration.rb and lib/<gem>/sentry_integration.rb when the gem is required.

<ParamField path=“user-agent” type=“string” default=“{packageName}/{version}” required= toc=> Sets a custom User-Agent header template for requests sent by the generated SDK. The template is resolved at generation time and supports the {packageName}, {version}, {language}, {generatorVersion}, {organization}, and {apiName} placeholders.

generators.yml
1config:
2 user-agent: "plantstore-ruby-sdk/{version}"

This sends User-Agent: plantstore-ruby-sdk/0.1.0. With includePlatformHeaders enabled, the resolved value leads the structured header: User-Agent: plantstore-ruby-sdk/0.1.0 (linux; x86_64) Ruby/3.2.0. A value that doesn’t end in a version, such as plantstore/sdk-ruby, is used as-is. The allowUserAgentAppInfo token is appended after either form. <ParamField path=“respectOptionalRequestBody” type=“boolean” default=“false” required= toc=> Lets callers omit the request body on endpoints with an optional request body. A call that omits it sends no body and no Content-Type header, instead of an empty JSON object ({}). Enable this when your API treats a missing body differently from an empty one.

Only applies to request bodies declared as a single named type. Required bodies, inlined request properties, and form-urlencoded bodies are unaffected.</ParamField>