如何在Ubuntu20.04上使用rbenv安装RubyonRails

来自菜鸟教程
跳转至:导航、​搜索

介绍

Ruby on Rails 是最受希望创建网站和 Web 应用程序的开发人员欢迎的应用程序堆栈之一。 Ruby 编程语言与 Rails 开发框架相结合,可让您快速构建和部署可扩展的应用程序。

您可以使用命令行工具 rbenv 安装 Ruby 和 Rails。 使用 rbenv 为您开发 Ruby on Rails 应用程序提供了一个可靠的环境,并允许您在 Ruby 版本之间切换,让您的整个团队保持在同一个版本上。 rbenv 还支持指定特定于应用程序的 Ruby 版本,允许您更改每个用户的全局 Ruby,以及使用环境变量覆盖 Ruby 版本的选项。

在本教程中,我们将通过 rbenvgem 引导您完成 Ruby 和 Rails 安装过程。 首先,您将安装适当的包来安装 rbenv,然后安装 Ruby。 之后,您将安装 ruby-build 插件,以便您可以安装可用版本的 Ruby。 最后,您将使用 gem 安装 Rails,然后可以使用 Ruby on Rails 开始您的 Web 开发。 我们还将提供有关如何检查 rbenv 版本是否为最新以及如何卸载 Ruby 版本和 rbenv 的步骤。

先决条件

要遵循本教程,您需要:

第 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 命令(子命令 envenvironment 的缩写)详细了解 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 然后按 YENTER 退出。

然后使用以下命令删除 rbenv 和所有已安装的 Ruby 版本:

 rm -rf `rbenv root`

注销并重新登录以将更改应用到您的 shell。

结论

在本教程中,您安装了 rbenvgem 来安装整个 Ruby on Rails 框架。 从这里,您可以开始创建您的 Web 开发应用程序项目。 如果您想了解有关使这些环境更健壮的更多信息,可以查看我们关于 如何在 Ruby 中编码 的系列。