Ruby 是一种功能强大的编程语言。它是一种解释型、高级且通用的语言,融合了多种编程范式。Ruby 的创造者松本行弘(Yukihiro Matsumoto)融合了他最喜欢的几种编程语言(如 Perl、Ada、Lisp、Eiffel、Smalltalk 等)的各个部分,创造了 Ruby。用他自己的话来说,他旨在让 Ruby “更自然,而非简单”.
Ruby 的流行很大程度上归功于 Ruby on Rails。它是一个构建在 Ruby 之上的强大 Web 框架。它作为众多 Web 应用程序的后端,例如 Airbnb、Spotify、GitHub、SoundCloud 等。Ruby on Rails 的哲学是提供一个直观的框架,以加速构建健壮且高性能的网页。
作为一个 Web 框架,Ruby on Rails 可以与流行的数据库引擎协同工作,例如 SQLite, MySQL/MariaDB 和 PostgreSQL。本指南将展示如何构建一个使用 MySQL 作为其数据库引擎的 Ruby on Rails 应用程序的基础。
前提条件
- 本指南中演示的所有步骤均在 Ubuntu 21.04 上进行。在此处了解更多关于设置 Ubuntu 服务器的信息.
- 我们还将快速演示如何安装和配置 MySQL 服务器。有关更多信息,请参阅这篇关于设置 MySQL.
- 的指南。至于安装和管理 Ruby,我们将使用 rbenv。这是一个旨在帮助管理 Ruby 环境的工具。与 RVM, rbenv 相比,有着其不同之处.
步骤 1:安装和配置 MySQL
MySQL 将作为我们 Ruby on Rails 应用程序的数据库后端。假设您尚未安装和配置 MySQL,请跟随以下步骤。启动终端并更新 APT 缓存:
|
1 |
sudo apt update |
然后,安装 MySQL 组件:
|
1 |
sudo apt install install mysql-server mysql-client libmysqlclient-dev |
安装完成后,运行以下 MySQL 脚本。它将执行快速的安装后配置:
|
1 |
sudo mysql_secure_installation |
该脚本会提出多个问题。完成这些步骤以结束初始配置:
-
附加步骤
以下步骤是可选的,仅在教程后续部分中 Ruby on Rails 无法连接到 MySQL 服务器时才需要执行。它将 MySQL 中的 root 用户设置为使用 mysql_native_password 以允许传统的密码登录。在 Ubuntu 上访问 root 账户:
|
1 |
sudo su |
现在,启动 MySQL root shell,无需密码检查:
|
1 |
mysql -u root --skip-password |
接下来,运行以下查询以更改密码并将 mysql_native_password 设置为身份验证方法:
|
1 2 |
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<password>'; FLUSH PRIVILEGES; |
步骤 2:安装和配置 Ruby 和 Ruby on Rails
我们的数据库服务器已准备好用于生产。我们现在需要安装 Ruby。如前所述,我们将使用 rbenv 作为我们项目的 Ruby 版本管理器。Ruby on Rails 可作为 Ruby gem 获取。
-
安装 rbenv
Ruby 管理器 rbenv 可以直接从 Ubuntu 官方软件包服务器获取。对于其他发行版,请查看官方 rbenv 安装指南.
启动终端并立即安装它:
|
1 |
sudo apt install rbenv |
接下来,我们必须将 rbenv 集成 到默认 shell 中。运行以下 rbenv 命令:
|
1 |
rbenv init |
如输出所示,对于 bash,我们需要在本地 bashrc 文件中包含该行。无需过多赘述, bashrc 文件在每次用户在交互模式下打开新 shell 时都会被加载。在文本编辑器中打开该文件并添加以下文本:
|
1 |
nano ~/.bashrc |
保存文件并关闭编辑器。建议重新启动终端以使更改生效。或者,您可以将 bashrc 文件重新加载到当前 shell 中:
|
1 |
source ~/.bashrc |
接下来,我们将安装一个 rbenv 插件,以提供对 rbenv install 命令的支持。该插件可直接从 rbenv GitHub 仓库获取。运行以下命令:
|
1 2 |
mkdir -p "$(rbenv root)"/plugins git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build |
要测试我们的 rbenv 配置,请运行 rbenv-doctor 脚本:
|
1 |
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash |
它将检查各种组件并报告一切是否正常。
-
安装 Ruby
一旦 rbenv 配置完成,我们就可以安装 Ruby 了。以下命令将列出所有可用的 Ruby 版本:
|
1 |
rbenv install -l |
输出内容会有点长,因此建议将其传递给 more 或 less 以便更好地浏览。该列表还包含各种 Ruby 构建版本。在本指南中,我们将重点关注最新的官方 Ruby 构建版本。在撰写本文时,它是 Ruby v3.0.3。
现在,安装 Ruby:
|
1 |
rbenv install <ruby_version> |
下一个命令将把已安装的 Ruby 声明为适用于所有应用程序的全局版本:
|
1 |
rbenv global <ruby_version> |
验证 Ruby 安装:
|
1 |
ruby --version |
-
安装 Ruby on Rails
该 Web 框架可作为 Ruby 的 gem 获取。虽然 Ruby on Rails 可以直接从 Ubuntu 软件包服务器获取,但将其作为 gem 安装提供了更多的灵活性。
首先,安装 gem Bundler。它是一个解决 gem 依赖关系的工具。Rails 依赖于它:
|
1 |
gem install bundler |
运行下一个命令将把最新稳定版本的 Ruby on Rails 作为 gem 安装:
|
1 |
gem install rails |
如果您想安装特定版本,那么命令结构将如下所示:
|
1 |
gem install rails <rails_version> |
安装好 gem 后,运行以下命令:
|
1 |
rbenv rehash |
Ruby 管理器 rbenv 的工作原理是为指向当前启用的 Ruby 版本文件的 shim 创建专用目录。 rehash 子命令指示 rbenv 在该目录中维护 shim,以匹配服务器上每个已安装 Ruby 版本的每个 Ruby 命令。每当您安装新版本的 Ruby 或提供类似于 Rails 命令的 gem 时,都应该运行它。
验证 Rails 安装:
|
1 |
rails -v |
步骤 3:安装 MySQL gem
要连接到 MySQL 服务器,Rails 需要一个适配器。我们将使用 mysql2 gem 来实现此功能。安装 mysql2 gem:
|
1 |
gem install mysql2 |
步骤 4:创建和配置新的 Rails 应用
-
创建示例应用
到目前为止,我们已经配置了建立 Rails 应用所需的所有组件。以下命令将为该应用创建一个专用目录,并放置所有支持 MySQL 的必要文件:
|
1 |
rails new <app_name> -d mysql |
-
配置 MySQL 连接
现在,我们需要输入必要的 MySQL 信息,以便 Rails 可以连接到数据库并交换数据。默认情况下, Rails 以 root 身份连接到 MySQL。打开 Rails 数据库配置文件:
|
1 2 |
cd <app_dir> nano config/database.yml |
向下滚动到以下部分并输入 MySQL 的 root 密码。然后,保存文件并关闭编辑器。
-
应用数据库更改
如果一切顺利,Rails 现在应该能够连接 to MySQL 并执行必要的数据库操作。以下命令将创建必要的数据库:
|
1 |
rake db:create |
步骤 5:测试配置
启动 Rails 开发服务器:
|
1 |
rails server --绑定=<server_public_ip> |
您应该能够通过以下 URL 访问欢迎页面:
|
1 |
http://<server_public_ip>:3000 |
结语
在本指南中,我们已使用 安装了 Rubyrbenv,安装了 Rails gem,并配置了一个示例 Rails 应用程序以连接到 MySQL 并将其用作数据库引擎。它为可扩展且集中的 Web 应用程序提供了一个很好的骨架。
要了解如何在 Ubuntu 20.04 上使用 RVM 安装 Ruby on Rails,请查看以下教程 在 Ubuntu 20.04 上使用 RVM 安装 Ruby on Rails。要了解如何使用 PostgreSQL 设置 Ruby on Rails,请查看以下教程:使用 PostgreSQL 设置 Ruby on Rails.
祝您使用愉快!






















评论
暂无评论。发表第一条评论吧。