介绍
Ruby on Rails 是最受希望创建网站和 Web 应用程序的开发人员欢迎的应用程序堆栈之一。 Ruby 编程语言与 Rails 开发框架相结合,可让您快速构建和部署可扩展的应用程序。
您可以使用命令行工具 rbenv 安装 Ruby 和 Rails。 使用 rbenv 为您开发 Ruby on Rails 应用程序提供了一个可靠的环境,并允许您在 Ruby 版本之间切换,让您的整个团队保持在同一个版本上。 rbenv 还支持指定特定于应用程序的 Ruby 版本,允许您更改每个用户的全局 Ruby,以及使用环境变量覆盖 Ruby 版本的选项。
在本教程中,我们将通过 rbenv
和 gem
引导您完成 Ruby 和 Rails 安装过程。 首先,您将安装适当的包来安装 rbenv,然后安装 Ruby。 之后,您将安装 ruby-build
插件,以便您可以安装可用版本的 Ruby。 最后,您将使用 gem
安装 Rails,然后可以使用 Ruby on Rails 开始您的 Web 开发。 我们还将提供有关如何检查 rbenv 版本是否为最新以及如何卸载 Ruby 版本和 rbenv 的步骤。
先决条件
要遵循本教程,您需要:
- 按照Ubuntu 20.04初始服务器设置指南设置一台Ubuntu 20.04服务器,包括sudo非root用户和防火墙。
- 使用官方 PPA 安装的 Node.js,如 How To Install Node.js on Ubuntu 20.04 的 option 2 中所述。 一些 Rails 功能,例如资产管道,依赖于 JavaScript 运行时。 Node.js 提供了这个功能。
第 1 步 – 安装 rbenv 和依赖项
Ruby 依赖于几个可以通过包管理器安装的包。 安装这些之后,您可以安装 rbenv 并使用它来安装 Ruby。
首先,更新您的软件包列表:
sudo apt update
接下来,安装安装 Ruby 所需的依赖项:
sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev
安装依赖项后,您可以安装 rbenv 本身。 使用 curl
将信息从 GitHub 上的 rbenv 存储库传输到目录 ~/.rbenv
中:
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
接下来,将 ~/.rbenv/bin
添加到 $PATH
以便您可以使用 rbenv
命令行实用程序。 通过更改您的 ~/.bashrc
文件来执行此操作,以便它影响未来的登录会话:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
然后,将命令 eval "$(rbenv init -)"
添加到您的 ~/.bashrc
文件中,以便 rbenv 自动加载:
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
接下来,将您对 ~/.bashrc
文件所做的更改应用到当前的 shell 会话:
source ~/.bashrc
通过运行 type
命令验证 rbenv 是否设置正确,这将显示有关 rbenv
命令的更多信息:
type rbenv
您的终端窗口将显示以下内容:
Outputrbenv is a function rbenv () { local command; command="${1:-}"; if [ "$#" -gt 0 ]; then shift; fi; case "$command" in rehash | shell) eval "$(rbenv "sh-$command" "$@")" ;; *) command rbenv "$command" "$@" ;; esac }
接下来,安装 ruby-build 插件。 这个插件增加了rbenv install
命令,使得新版Ruby的安装过程变得不那么复杂。 要安装 ruby-build,首先克隆 ruby-build GitHub 存储库:
git clone https://github.com/rbenv/ruby-build.git
运行此命令后,您的工作目录中将有一个名为 ruby-build
的目录。 在 ruby-build
目录中有一个名为 install.sh
的脚本,您将使用它来实际安装 ruby-build。
在运行此脚本之前,请花点时间查看其内容。 您可以使用以下命令将其内容打印到终端的输出,而不是使用文本编辑器打开文件:
cat ruby-build/install.sh
Output#!/bin/sh # Usage: PREFIX=/usr/local ./install.sh # # Installs ruby-build under $PREFIX. set -e cd "$(dirname "$0")" if [ -z "${PREFIX}" ]; then PREFIX="/usr/local" fi BIN_PATH="${PREFIX}/bin" SHARE_PATH="${PREFIX}/share/ruby-build" mkdir -p "$BIN_PATH" "$SHARE_PATH" install -p bin/* "$BIN_PATH" install -p -m 0644 share/ruby-build/* "$SHARE_PATH"
请注意该文件的第二行读取 # Usage: PREFIX=/usr/local ./install.sh
。 这个注释掉的行解释说,为了执行这个脚本并安装 ruby-build,你必须在脚本前面加上 PREFIX=/usr/local
。 这将创建一个临时的 环境变量 ,它将影响脚本的运行方式。 本质上,这将导致字符串 $PREFIX
在任何时候出现在脚本中时都被替换为 /usr/local
,并最终导致所有必要的 ruby-build 文件安装在 [ X206X] 目录。 这个环境变量只是临时的,一旦脚本终止就会不复存在。
创建此临时环境变量并使用以下命令运行脚本。 请注意,此命令在调用脚本之前包含 sudo
。 这是必要的,因为您必须具有高级权限才能将文件安装到 /usr/local
目录:
PREFIX=/usr/local sudo ./ruby-build/install.sh
此时,您已经安装了 rbenv 和 ruby-build。 接下来让我们安装 Ruby。
第 2 步 – 使用 ruby-build 安装 Ruby
现在安装了 ruby-build
插件,您可以使用单个命令安装您可能需要的任何版本的 Ruby。 首先,列出所有可用的 Ruby 版本:
rbenv install -l
该命令的输出将是您可以选择安装的版本列表:
Output2.6.8 2.7.4 3.0.2 jruby-9.2.19.0 mruby-3.0.0 rbx-5.0 truffleruby-21.2.0.1 truffleruby+graalvm-21.2.0 Only latest stable releases for each Ruby implementation are shown. Use 'rbenv install --list-all / -L' to show all local versions.
现在让我们安装 Ruby 3.0.2:
rbenv install 3.0.2
安装 Ruby 可能是一个漫长的过程,因此请准备好安装需要一些时间才能完成。
安装完成后,使用 global
子命令将其设置为 Ruby 的默认版本:
rbenv global 3.0.2
通过检查其版本号来验证 Ruby 是否已正确安装:
ruby -v
如果您安装了 Ruby 3.0.2 版,此命令将返回如下输出:
Outputruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]
要安装和使用不同版本的 Ruby,请使用不同版本号运行 rbenv
命令,如 rbenv install 2.3.0
后跟 rbenv global 2.3.0
。
您现在至少安装了一个 Ruby 版本并设置了默认 Ruby 版本。 接下来,您将设置 gems 和 Rails。
第 3 步 – 使用宝石
Gems 是 Ruby 库的分发方式。 您使用 gem
命令管理这些 gem,并使用此命令安装 Rails。
安装 gem 时,安装过程会生成本地文档。 这会为每个 gem 的安装过程增加大量时间,因此通过创建一个名为 ~/.gemrc
的文件来关闭本地文档生成,其中包含用于关闭此功能的配置设置:
echo "gem: --no-document" > ~/.gemrc
Bundler 是一个管理项目 gem 依赖关系的工具。 接下来安装 Bundler gem,因为 Rails 依赖于它:
gem install bundler
您将收到以下输出:
OutputFetching bundler-2.2.27.gem Successfully installed bundler-2.2.27 1 gem installed
您可以使用 gem env
命令(子命令 env
是 environment
的缩写)详细了解 gems 的环境和配置。 您可以使用 home
参数来确认 gem 的安装位置,如下所示:
gem env home
您将收到与此类似的输出:
Output/home/sammy/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0
一旦你设置了 gems,你就可以安装 Rails。
第 4 步 – 安装 Rails
要安装 Rails,请使用 gem install
命令和 -v
标志来指定版本。 对于本教程,您将使用版本 6.1.4.1
:
gem install rails -v 6.1.4.1
gem
命令安装您指定的 gem,以及它的任何依赖项。 Rails 是一个复杂的 Web 开发框架,具有许多依赖项,因此该过程需要一些时间才能完成。 最终,您将收到一条消息,说明 Rails 及其依赖项已安装:
Output... Successfully installed rails-6.1.4.1 37 gems installed
注意:如果你想安装不同版本的Rails,你可以通过搜索列出Rails的有效版本,这将输出可能版本的列表。 然后您可以安装特定版本,例如 4.2.7:
gem search '^rails$' --all gem install rails -v 4.2.7
如果您想安装最新版本的 Rails,请在不指定版本的情况下运行命令:
gem install rails
rbenv 通过创建 shims 目录来工作,该目录指向当前启用的 Ruby 版本使用的文件。 通过 rehash
子命令,rbenv 在该目录中维护 shim 以匹配服务器上每个已安装 Ruby 版本的每个 Ruby 命令。 每当您安装新版本的 Ruby 或像 Rails 一样提供命令的 gem 时,您应该运行以下命令:
rbenv rehash
使用以下命令打印 Rails 版本,验证是否已正确安装 Rails:
rails -v
如果安装正确,此命令将返回已安装的 Rails 版本:
OutputRails 6.1.4.1
此时,您可以开始测试您的 Ruby on Rails 安装并开始开发 Web 应用程序。 现在让我们回顾一下如何使 rbenv 保持最新。
第 5 步 – 更新 rbenv
由于您使用 Git 手动安装了 rbenv,因此您可以随时使用 ~/.rbenv
目录中的 git pull
命令将安装升级到最新版本:
cd ~/.rbenv git pull
这将确保您使用的是可用的最新版本的 rbenv。
第 6 步 – 卸载 Ruby 版本
当您下载其他版本的 Ruby 时,您可能会在 ~/.rbenv/versions
目录中积累比您想要的更多的版本。 使用 ruby-build
插件的 uninstall
子命令删除这些以前的版本。
以下命令将卸载 Ruby 版本 3.0.2:
rbenv uninstall 3.0.2
使用 rbenv uninstall
命令,您可以清理旧版本的 Ruby,这样您安装的内容不会超过当前使用的内容。
第 7 步 – 卸载 rbenv
如果您决定不再使用 rbenv,则可以将其从系统中删除。
为此,首先在编辑器中打开 ~/.bashrc
文件。 在本例中,我们将使用 nano
:
nano ~/.bashrc
从文件中查找并删除以下两行:
~/.bashrc
... export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)"
删除这些行后,保存文件并退出编辑器。 如果您使用 nano
,您可以通过按 CTRL + X
然后按 Y
和 ENTER
退出。
然后使用以下命令删除 rbenv 和所有已安装的 Ruby 版本:
rm -rf `rbenv root`
注销并重新登录以将更改应用到您的 shell。
结论
在本教程中,您安装了 rbenv
和 gem
来安装整个 Ruby on Rails 框架。 从这里,您可以开始创建您的 Web 开发应用程序项目。 如果您想了解有关使这些环境更健壮的更多信息,可以查看我们关于 如何在 Ruby 中编码 的系列。