# Ruby On Rails

### 安装 Ruby

Edgegap 为您提供了一个非常直观的平台，可以在需要的任何地方部署无服务器 Web 应用。对于本教程，我们将介绍部署 Ruby on Rails 的步骤。在检查其他内容之前，请确保已安装 Ruby。

如果您在 Linux/UNIX 机器上运行，可以使用机器上预装的包管理器通过终端安装 Ruby。您可以参考 [Ruby 的官方文档](https://www.ruby-lang.org/en/documentation/installation/) 以查找与您的 Linux/UNIX 发行版对应的精确命令。

在 Windows 机器上，您需要 [下载 RubyInstaller](https://rubyinstaller.org) 来获取 Ruby。

安装结束后，您可以使用以下命令检查 Ruby 是否正确安装：

```
ruby -v
```

现在安装了 Ruby，显然您还需要安装 Rails。这相当简单，可以使用以下单个命令完成：

```
gem install rails
```

您可以用类似验证 Ruby 安装的方法轻松确认 Rails 是否已正确安装。

```
rails -v
```

### 要求

要跟随本教程，除 Ruby 和 Ruby on Rails 外，您还需要具备以下内容：

* [Docker Desktop](https://www.docker.com/get-started/)
* [一个 Edgegap 帐户](https://app.edgegap.com/auth/login)
* 访问 [Edgegap 的私有容器仓库](/zh/learn/advanced-features/edgegap-container-registry.md) 或其它像 [Docker 的容器注册表](https://hub.docker.com/)

### 开始使用 Ruby on Rails

要开始使用 Ruby on Rails，您需要为新项目创建一个文件夹，并在该文件夹中运行以下命令：

```
rails new edgegap-ruby-rails-demo
```

安装过程完成后，您需要修改位于 config 文件夹中的 routes.rb 文件。您的 routes 文件应包含以下内容：

```ruby
Rails.application.routes.draw do
  root 'hello_world#index'
end
```

您可能会注意到在项目的 views 文件夹中没有 'hello\_world' 页面。您可以通过生成相应的控制器来轻松创建它。首先，确保您位于运行 `rails new` 命令时 Rails 为您生成的文件夹中。

如果您使用的是 Linux 发行版，请使用以下命令创建 HelloWorld 控制器：

```
rails generate controller HelloWorld index --skip-routes
```

skip-routes 选项可确保此命令不会为该控制器生成新的路由，这正是我们想要的，因为我们已经手动创建了一个路由。

对于 Windows，您需要在命令中添加一些关键字，如下所示：

```
ruby bin/rails generate controller HelloWorld index –skip-routes
```

命令成功执行后，您将在 views 文件夹中看到 HelloWorld 页面。在部署之前，您可能需要修正 HTML 语法以获得正确的部分。该文件应如下所示：

<figure><img src="/files/81691bc50932239a0b94374fa869644f43744373" alt=""><figcaption></figcaption></figure>

完成项目的唯一一步是本地部署您的 Ruby on Rails 应用。再次提醒，不同操作系统下的命令如下：

Linux：

```sh
rails server
```

Windows：

```sh
ruby bin/rails server
```

### 为应用创建容器镜像

为大多数应用创建容器镜像相对简单。您必须创建一个 Dockerfile，然后在 Docker 上运行该文件以创建镜像。Visual Studio Code 是创建 Dockerfile 的好平台，因为默认情况下它不会为我们创建的每个新文件添加扩展名。这正是我们需要的。只需创建一个新文件并将其命名为 Dockerfile。您会看到旁边出现小小的 Docker 图标。现在，您可以将此脚本复制并粘贴到其中以获取主要依赖项。此 Dockerfile 创建的镜像大约为 700 MB。当然，您可以对其进行优化，但这样大小的容器将在 Edgegap 上运行得非常顺畅：

```dockerfile
FROM ruby:3-alpine
WORKDIR /app
COPY . .
RUN apk add --no-cache build-base tzdata nodejs yarn sqlite-dev postgresql-dev mysql-dev
RUN gem install bundler
RUN bundle install
ENV RAILS_ENV=production
RUN bundle exec rails assets:precompile
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]
```

保存 Dockerfile 后，就可以创建镜像了。您可以通过运行以下命令轻松完成：

{% hint style="warning" %}
对于 ARM CPU（Mac M1、M2 等）用户，向 `--platform linux/amd64`  选项添加到您的构建命令中。
{% endhint %}

```sh
docker build -t registry.edgegap.com/<YOUR_REPO>/ruby-rails-demo:<YOUR_VERSION_NUMBER> .
```

最好遵循语义化版本控制放置版本号，但如果您不打算在第一次部署后在 Edgegap 上更新构建，则可以完全省略版本号。不过在此之前，您需要将新创建的 Docker 镜像推送到您选择的镜像仓库。请记住，我们通过 Edgegap Registry 提供私有仓库，为您提供一些使用默认 Docker 仓库可能没有的安全优势。要将镜像推送到我们的仓库，您必须先使用此命令使用您的凭据登录：

```sh
docker login registry.edgegap.com
```

现在，剩下的就是像这样推送您的镜像：

```sh
docker push registry.edgegap.com/<YOUR_REPO>/ruby-rails-demo:<YOUR_VERSION_NUMBER>
```

太好了！现在，您距离在 Edgegap 平台上部署您的 Nuxt 应用只差一步。

### 在 Edgegap 上部署您的应用

在 Edgegap 上部署应用有两种方式。无论哪种方式，您都需要有一个帐户，您可以通过此处的链接免费创建。首先，我们介绍如何通过网站部署容器化的应用。

#### 通过 Edgegap 仪表板部署应用

您需要前往 [Edgegap 平台网站](https://console.edgegap.com/) 并输入您的凭据。登录后，您将被自动重定向到仪表板。如果您刚创建帐户，您会看到立即启动第一个应用的选项。如果没有，只需转到屏幕左侧菜单中的“应用与游戏”选项卡。您会在右上角看到创建新应用的选项：

<figure><img src="/files/4291c2bf39e38ee8e9566364bd81fd1a74ed5731" alt=""><figcaption></figcaption></figure>

点击后，应出现以下表单：

<figure><img src="/files/f68a9ea1b0b0ae7571079b26403db62725ca56aa" alt=""><figcaption></figcaption></figure>

您应填写所有必填字段，完成后，您需要将默认设置中的一些内容进行修改：

* 端口号：该应用需要打开 3000 端口，因此请在创建表单的“端口”部分添加该端口。取消选中验证端口的选项。

填写完表单并提供适当信息后，只需提交，您就可以准备部署。只需选择区域和要模拟的玩家数量即可。

填写完表单并提供适当信息后，只需提交，您就可以准备部署。只需选择区域和要模拟的玩家数量即可。

<figure><img src="/files/0eb0bf84237b8bd870e8cffce14dd65de72d68c3" alt=""><figcaption></figcaption></figure>

确认选择后，您的应用将很快上线。部署完成后您将看到如下内容。您可以通过点击此图中圈出的图标自行访问它。

<figure><img src="/files/7864e9a9456edac39b5a78355be653d8a09b98ec" alt=""><figcaption></figcaption></figure>

这将打开一个新标签，其中包含您 Nuxt 应用的默认登录页面。

#### 通过 Edgegap 的 API 部署应用

虽然我们的 web 仪表板是部署应用最用户友好的方式，但您也可以通过一个非常简单的 API 请求来完成。为此，您可以使用 Postman。重要的是您需要访问仪表板来 [创建 API 令牌](broken://pages/63c51b0385ef1748b3681fe05c8bc45ccab89b94) 通过个人资料中的选项。

一旦您拥有 API 令牌，剩下要做的就是构建一个部署请求，包含您的应用名称、版本、IP 地址、您希望部署的区域，以及作为授权参数的一部分的令牌。您可以在我们的文档中查看完整请求示例。

发送请求后，您应在命令行或 Postman 上看到如下响应：

<figure><img src="/files/56aac671a03e4a67bbb80e3fd61c5775c96bd919" alt=""><figcaption></figcaption></figure>

通过 CLI 部署应用就完成了这些步骤。要确认您的应用已部署，您可以再次前往仪表板并通过点击“活动部署”选项卡查看正在运行的部署。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.edgegap.com/zh/docs/sample-projects/ruby-on-rails.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
