本教程适用于以下操作系统版本
- Ubuntu 24.04(Noble Numbat)
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 20.04(Focal Fossa)
- Ubuntu 18.04(Bionic Beaver)
- Ubuntu 16.04(Xenial Xerus)
本页目录
- 准备工作
- 安装依赖项
- 创建 PostgreSQL 用户
- 安装 Ruby on Rails
- 使用 Ruby on Rails 和 PostgreSQL 创建项目
- 使用脚手架生成应用
- 结论
Ruby on Rails(简称 RoR 或 Rails)是一个采用 MVC(模型-视图-控制器)架构的 Ruby Web 应用框架,并遵循「不要重复自己」(DRY)、「约定优于配置」(CoC)以及活动记录(active records)模式等设计理念。它是一个用于构建企业级 Web 应用的全面(full-stack)Web 框架。
在本教程中,我们将带你在 Ubuntu 24.04 上完成 Ruby on Rails 的安装,创建第一个 Rails 项目,将 PostgreSQL 配置为 Rails 项目的数据库,并使用 `rails` 命令生成一个脚手架。
准备工作
在开始之前,请确保你已具备以下条件:
- 一台 Ubuntu 24.04 服务器。
- 一个具有 sudo 管理员权限的非 root 用户。
安装依赖项
要在你的 Ubuntu 系统上安装 Ruby on Rails,必须先安装 Ruby、Node.js、PostgreSQL(作为数据库可选)、Git 以及其他一些开发包等依赖项。这些软件包都可在 Ubuntu 默认仓库中获取,你可以直接使用 APT 进行安装。
首先,使用以下命令更新你的 Ubuntu 软件仓库:
sudo apt update

现在使用以下命令安装 Ruby on Rails 所需的依赖项。通过该命令,你将安装 Ruby、PostgreSQL、Node.js、git 以及一些开发包。
sudo apt install ruby ruby-dev postgresql libpq-dev nodejs yarnpkg git zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev libffi-dev
输入 Y 以继续安装。

安装完成后,使用以下命令查看 Ruby 和 Node.js 的版本:
ruby -v
node -v
如下图所示,已安装 Ruby 3.2 和 Node.js 18.19。
接下来,运行以下命令将 Yarn 设置为 Node.js 的包管理器。这将创建新的 `yarn` 命令,并会显示 Yarn 的版本号。
sudo ln -s /usr/bin/yarnpkg /usr/bin/yarn
yarnpkg -v

最后,使用以下命令检查 PostgreSQL 服务的状态:
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
PostgreSQL 服务器会在系统启动时自动启动,其状态显示为 `active (exited)`。
创建 PostgreSQL 用户
依赖项安装完成后,你需要为 Rails 项目创建一个新的 PostgreSQL 用户。该用户必须能够登录,并能在 PostgreSQL 中创建新的数据库。
使用以下命令登录 PostgreSQL 服务器。
sudo -u postgres psql
运行以下查询语句,创建一个名为 `appuser`、密码为 `AppuserPassword` 的新 PostgreSQL 用户。该用户将能够在 PostgreSQL 中创建数据库和角色。
CREATE USER appuser WITH PASSWORD 'AppuserPassword';
ALTER USER appuser CREATEDB CREATEROLE;
现在输入 quit 或按下 Ctrl+d 退出 PostgreSQL。

接下来,运行以下命令以 `appuser` 用户身份登录 PostgreSQL。在提示时输入你的密码。
su - postgres
psql -U appuser -h 127.0.0.1 -d postgres
登录后,使用以下命令查看 PostgreSQL 的连接状态:
\conninfo
如下图所示,新用户 `appuser` 可以通过密码认证,经由 localhost 或 127.0.0.1 连接到 PostgreSQL 服务器。

安装 Ruby on Rails
在本节中,你将在用户专属的环境中安装最新版本的 Ruby on Rails。因此,你需要为用户设置默认的 GEM_HOME 目录。
首先,使用以下命令登录到你的用户:
su - user
创建新的 ~/.gem 目录,并通过 ~/.bashrc 文件添加 GEM_HOME 环境变量。这样,所有 Ruby gems 都会被安装到 ~/.gem 目录中。
mkdir -p ~/.gem
echo 'export GEM_HOME=$HOME/.gem' >> $HOME/.bashrc
现在运行以下命令重新加载当前 shell 并检查 GEM_HOME 环境变量。你将看到 GEM_HOME 指向了 ~/.gem 目录。
source ~/.bashrc
echo $GEM_HOME

接下来,运行以下 gem 命令在系统中安装 bundler。
gem install bundler

之后,使用以下 gem 命令安装 Ruby on Rails。你可以安装最新版本的 Ruby on Rails,也可以使用 -v 选项指定特定版本。
gem install rails
gem install rails -v 7.1.0

安装完成后,使用以下命令查看 Ruby on Rails 的版本:
rails --version
rails --help
如下图所示,已安装最新的 Ruby on Rails 7.1.3,你还可以看到 `rails` 命令的基本用法。

使用 Ruby on Rails 和 PostgreSQL 创建项目
现在你已经安装好了 Ruby on Rails。在本节中,你将创建第一个以 PostgreSQL 为默认数据库的 Rails 项目。
运行以下 `rails` 命令创建一个新的 Rails 项目。在本示例中,你将创建一个名为 testapp、默认数据库为 PostgreSQL 的新项目。
rails new testapp -d postgresql
如下图所示,Rails 应用已生成,并且已初始化 git。

现在切换到 ~/testapp 目录,并编辑数据库配置文件 `config/database.yml`。
cd ~/testapp/
nano config/database.yml
按照以下内容修改 development、test 和 production 环境的数据库配置。各环境的数据库将在迁移过程中自动创建。
development: <<: *default database: testapp_development username: appuser password: AppuserPassword host: localhost port: 5432 test: <<: *default database: testapp_test username: appuser password: AppuserPassword host: localhost port: 5432 production: <<: *default database: testapp_production username: appuser password: <%= ENV["TESTAPP_DATABASE_PASSWORD"] %>
完成后,保存文件并退出。
接下来,运行以下 `rails` 命令来设置并迁移数据库。
rails db:setup
rails db:migrate

数据库迁移完成后,使用以下命令运行你的 Rails 项目:
rails server -b 0.0.0.0
如下图所示,你的 Rails 项目正在默认的 3000 端口上运行。

使用 Web 浏览器访问你的服务器 IP 地址 http://192.168.5.30:3000/。如果 Rails 安装成功,你应该会看到如下默认的 Rails 首页:

使用脚手架生成应用
Ruby on Rails 为初学者提供了一种便捷的应用构建方式。你可以利用脚手架(scaffold)生成 Rails 项目的基本结构,其中包括控制器(controller)、模型(model)和视图(view)。
运行以下命令,为一个具有 `name` 和 `url` 两个用户输入项的简单应用 `site` 生成脚手架。
rails g scaffold site name:string url:string
如下所示,Rails 已为你的应用生成了模型、控制器和视图。

脚手架生成后,运行以下命令迁移你的 Rails 数据库。
rails db:migrate
如下图所示,Rails 数据库已迁移完成。

现在使用以下命令运行你的 Rails 项目。
rails server -b 0.0.0.0
最后,访问你的服务器 IP 地址 http://192.168.5.30:3000/sites 进入 `site` 应用。你可以提交新的 name 和 url 数据。提交新数据后,效果如下图所示。

结论
恭喜!你已完成在 Ubuntu 24.04 上安装 Ruby on Rails。你创建了一个以 PostgreSQL 为数据库的 Rails 项目。最后,你还学习了如何使用脚手架功能在 Rails 上生成基础应用。