如何在Ubuntu16.04上使用rbenv安装RubyonRails
介绍
对于希望创建网站和 Web 应用程序的开发人员来说,Ruby on Rails 是最受欢迎的应用程序堆栈之一。 Ruby 编程语言与 Rails 开发框架相结合,使应用程序开发变得简单。
您可以使用命令行工具 rbenv 轻松安装 Ruby 和 Rails。 使用 rbenv 将为您提供一个可靠的环境来开发您的 Ruby on Rails 应用程序,因为它可以让您轻松切换 Ruby 版本,让您的整个团队保持在同一个版本上。 项目存储库位于 [GitHub] (https://github.com/rbenv/rbenv)。
rbenv 支持指定特定于应用程序的 Ruby 版本,允许您更改每个用户的全局 Ruby,并允许您使用环境变量来覆盖 Ruby 版本。
本教程将带您通过 rbenv 完成 Ruby 和 Rails 安装过程。
- 先决条件
要遵循本教程,您需要:
- One Ubuntu 16.04 server with a [non-root user] (initial-server-setup-with-ubuntu-16-04).
- 使用官方 PPA 安装的 Node.js,如 如何在 Ubuntu 16.04 上安装 Node.js 中所述。 一些 Rails 功能,例如资产管道,依赖于 JavaScript 运行时。 Node.js 提供了这个功能。
- 更新和安装依赖
首先,我们应该更新 apt-get
,因为这是我们将在此会话中第一次使用 apt
。 这将确保更新本地包缓存。
sudo apt-get update
接下来,让我们使用 apt-get
安装 rbenv 和 Ruby 所需的依赖项:
sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
一旦我们安装了所有必需的系统依赖项,我们就可以继续安装 rbenv 本身。
- 安装rbenv
现在我们准备安装 rbenv。 让我们从 git 克隆 rbenv 存储库。 您应该从计划运行 Ruby 的用户帐户完成这些步骤。
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
从这里,您应该将 ~/.rbenv/bin
添加到您的 $PATH
以便您可以使用 rbenv 的命令行实用程序。 还将 ~/.rbenv/bin/rbenv init
添加到您的 ~/.basrc
文件将让您自动加载 rbenv。
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc
接下来,输入 rbenv 源代码:
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 }
为了使用 rbenv install
命令,简化新版本 Ruby 的安装过程,您应该安装 [ruby-build] (https://github.com/rbenv/ruby-build[ X179X]),我们将通过 git 将其安装为 rbenv 的插件:
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
此时,您应该已经安装了 rbenv 和 ruby-build,我们可以继续安装 Ruby。
- 安装红宝石
现在安装了 ruby-build rbenv 插件,我们可以通过一个简单的命令安装我们可能需要的任何版本的 Ruby。 首先,让我们列出所有可用的 Ruby 版本:
rbenv install -l
该命令的输出应该是您可以选择安装的一长串版本。
我们现在将安装特定版本的 Ruby。 请务必记住,安装 Ruby 可能是一个漫长的过程,因此请准备好安装需要一些时间才能完成。
作为示例,让我们安装 Ruby 版本 2.5.0,安装完成后,我们可以使用 global
子命令将其设置为默认版本:
rbenv install 2.5.0 rbenv global 2.5.0
如果您想安装和使用不同的版本,只需使用不同的版本号运行 rbenv
命令,如 rbenv install 2.3.0
和 rbenv global 2.3.0
。
通过检查您的版本号来验证 Ruby 是否已正确安装:
ruby -v
如果您安装了 Ruby 2.5.0 版,则上述命令的输出应如下所示:
Outputruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
您现在至少安装了一个 Ruby 版本并设置了默认 Ruby 版本。 接下来,我们将设置 gems 和 Rails。
- 使用宝石
Gems 是扩展 Ruby 功能的包。 我们将希望通过 gem
命令安装 Rails。
为了减少安装 Rails 的过程,我们将为我们安装的每个 gem 关闭本地文档。 我们还将安装 bundler gem 来管理应用程序依赖项:
echo "gem: --no-document" > ~/.gemrc gem install bundler
您可以使用 gem env
命令(子命令 env
是 environment
的缩写)详细了解 gems 的环境和配置。 您可以使用 home
参数检查 gem 的安装位置,该参数将显示 gem 安装在服务器上的路径。
gem env home
您的输出应如下所示,其中 sammy 是用户名:
/home/sammy/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0
一旦我们设置了 gems,我们就可以继续安装 Rails。
- 安装导轨
作为同一用户,您可以使用 gem install
命令安装最新版本的 Rails:
gem install rails
如果您想安装特定版本的 Rails,您可以通过搜索列出 Rails 的有效版本,这将输出一长串可能的版本。 然后我们可以安装一个特定的版本,比如4.2.7:
gem search '^rails$' --all gem install rails -v 4.2.7
rbenv 通过创建 shims 目录来工作,该目录指向当前启用的 Ruby 版本使用的文件。 通过 rehash
子命令,rbenv 在该目录中维护 shim 以匹配服务器上每个已安装 Ruby 版本的每个 Ruby 命令。 每当您安装新版本的 Ruby 或提供命令的 gem 时,就像 Rails 一样,您应该运行:
rbenv rehash
使用以下命令打印 Rails 版本,验证是否已正确安装 Rails:
rails -v
如果安装正确,您将看到已安装的 Rails 版本:
OutputRails 5.1.5
此时,您可以开始测试您的 Ruby on Rails 安装并开始开发 Web 应用程序。
- 更新rbenv
由于我们使用 git 手动安装了 rbenv,我们可以随时将安装升级到最新版本:
cd ~/.rbenv git pull
这将确保我们使用可用的最新版本的 rbenv。
- 卸载 Ruby 版本
随着您下载更多版本的 Ruby,您可能会在 ~/.rbenv/versions
目录中积累比您想要的更多的版本。
使用 ruby-build 插件通过 uninstall
子命令自动执行删除过程。 例如,输入这个将卸载 Ruby 版本 2.1.3:
rbenv uninstall 2.1.3
使用 rbenv uninstall
命令你可以清理你的 Ruby 版本,这样你安装的就不会比你当前使用的多。
结论
我们在这里介绍了如何安装 rbenv 和 Ruby on Rails 的基础知识,以便您可以使用多个 Ruby 环境。 在接下来的步骤中,您可以了解有关使这些环境更加健壮的更多信息。 For more scalability, centralization, and control in your Ruby on Rails application, you may want to use it with [PostgreSQL] (how-to-use-postgresql-with-your-ruby-on-rails-application-on-ubuntu-14-04) or [MySQL] (how-to-use-mysql-with-your-ruby-on-rails-application-on-ubuntu-14-04) rather than its default sqlite3 database. As your needs grow, you can also learn how to [scale Ruby on Rails applications across multiple servers] (how-to-scale-ruby-on-rails-applications-across-multiple-droplets-part-1).