> This page is for SDK, version Current (default).
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

# 发布到 RubyGems

> 使用 Fern 将 Ruby SDK 发布到 RubyGems。包配置、API 密钥身份验证和版本化发布的完整设置指南。

将您面向公众的 Fern Ruby SDK 发布到 [RubyGems 注册表](https://rubygems.org/)。按照本页面的步骤操作后，您将在 RubyGems 上发布一个带版本的包。

> **Info**
>
> 本页面假设您已经：
>
> * 初始化了 `fern` 文件夹，拥有 Ruby SDK 的 GitHub 仓库，并在 `generators.yml` 中配置了 Ruby 生成器组。请参阅[生成 SDK (Ruby)](/learn/zh/sdks/generators/ruby/quickstart)。

## 配置 `generators.yml`

#### 配置 \`output\` 位置

接下来，将 `generators.yml` 中的输出位置从 `local-file-system`（默认）更改为 `pypi`，以指示 Fern 应该将您的包直接发布到 PyPI 注册表：

```yaml {6-7}
groups: 
  ruby-sdk:
    generators:
      - name: fern-ruby-sdk
        version: 1.40.1
        output:
          location: rubygems

```

#### 添加唯一的包名

您的包名在 RubyGems 仓库中必须是唯一的，否则将您的 SDK 发布到 RubyGems 将会失败。如果您尚未更新包名，请现在更新：

```yaml {8}
groups: 
  ruby-sdk:
    generators:
      - name: fern-ruby-sdk
        version: 1.40.1
        output:
          location: rubygems
          package-name: your-package-name
```

#### 配置 \`clientModuleName\`

`clientModuleName` 选项控制生成的客户端名称。这是客户使用导入您的 SDK 的名称（`import { your-client-name } from 'your-package-name';`）。

```yaml {9-10}
groups: 
  ruby-sdk:
    generators:
      - name: fern-ruby-sdk
        version: 1.40.1
        output:
          location: rubygems
          package-name: your-package-name
        config:
          clientModuleName: YourClientName # must be PascalCase
```

#### 添加仓库位置

将您的 GitHub 仓库路径添加到 `generators.yml`：

```yaml {11-12}
groups: 
  ruby-sdk:
    generators:
      - name: fern-ruby-sdk
        version: 1.40.1
        output:
          location: rubygems
          package-name: your-package-name
        config:
          clientModuleName: YourClientName
        github: 
          repository: your-org/company-ruby
```

## 设置 RubyGems 发布身份验证

#### 登录 RubyGems

登录 [RubyGems](https://rubygems.org/) 或创建新账户。

#### 导航到账户设置

1. 点击您的头像
2. 选择 **Settings**。
3. 向下滚动并点击 **API Keys**。

#### 添加新密钥

当提示[创建新的 API 密钥](https://rubygems.org/profile/api_keys/new)时：

1. 为您的密钥命名。
2. 在 **Scopes** 下，选择 **Push rubygem**
3. 在 **Gem Scope** 下选择 `All Gems`。

> **替换现有 gem**
>
> 如果您要覆盖现有的 gem，您可以选择相关的包而不是输入 `All Gems`。

1. 设置过期日期。
2. 点击 **Create API Key**。

> **Warning**
>
> 保存您的新密钥 - 离开页面后将不会再显示。

![Creating a New API Key](/learn/_fern-files/_img/96a4e05d925b8e47bc26b72e876d40841a734e771c72d6e24b2f41a7a1a1088f.webp)

#### 配置 RubyGems 身份验证令牌

将 `api-key: ${RUBYGEMS_API_KEY}` 添加到 `generators.yml`，告诉 Fern 在发布到 PyPI 注册表时使用 `RUBYGEMS_API_KEY` 环境变量进行身份验证。

**`ruby`**

```yaml title="ruby" {9}
groups: 
  ruby-sdk:
    generators:
      - name: fern-ruby-sdk
        version: 1.40.1
        output:
          location: rubygems
          package-name: your-package-name
          api-key: ${RUBYGEMS_API_KEY}
        config:
          clientModuleName: YourClientName
        github: 
          repository: your-org/company-ruby
```

## 将您的 SDK 发布到 RubyGems

此时，您已准备好为您的 SDK 生成发布版本。

#### 设置 RubyGems 环境变量

在您的本地机器上，将 `RUBYGEMS_API_KEY` 环境变量设置为您之前生成的新 API 密钥：

```bash
export RUBYGEMS_API_KEY=your-actual-rubygems-token
```

#### 生成您的发布版本

重新生成您的 SDK 并将其发布到 RubyGems：

```bash
fern generate --group ruby-sdk --version <version>
```

本地机器输出将验证发布版本已推送到您的仓库并使用您指定的版本进行了标记。重新登录 RubyGems 并导航到 **Releases** 查看您的新发布版本。