介绍
Ruby on Rails是希望创建网站和Web应用程序的开发人员最受欢迎的应用程序之一。 Ruby编程语言与Rails开发框架相结合,使应用程序开发变得简单。
您可以使用命令行工具rbenv轻松安装Ruby和Rails。 使用rbenv将为您开发Ruby on Rails应用程序提供一个坚实的环境,因为它可以让您轻松切换Ruby版本,使您的整个团队保持相同的版本。
rbenv支持指定特定于应用程序的Ruby版本,允许您为每个用户更改全局Ruby,并允许您使用环境变量来覆盖Ruby版本。
本教程将引导您通过rbenv完成Ruby和Rails安装过程。
先决条件
要学习本教程,您需要:
- 一个Ubuntu 18.04服务器按照Ubuntu 18.04初始服务器设置指南设置 ,包括一个sudo非root用户和防火墙。
- 使用官方PPA 安装Node.js ,如如何在Ubuntu 18.04上安装Node.js中所述 。 一些Rails功能(例如Asset Pipeline)依赖于JavaScript运行时。 Node.js提供此功能。
第1步 - 安装rbenv和依赖项
Ruby依赖于几个可以通过包管理器安装的包。 安装完成后,您可以安装rbenv并使用它来安装Ruby,
首先,更新您的包列表:
sudo apt update
接下来,安装安装Ruby所需的依赖项:
sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev
下载依赖项后,您可以自行安装rbenv。 将rbenv存储库从GitHub克隆到~/.rbenv
目录中:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
接下来,将~/.rbenv/bin
添加到$PATH
以便您可以使用rbenv
命令行实用程序。 通过更改~/.bashrc
文件来执行此操作,以便它影响将来的登录会话:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
然后将命令~/.rbenv/bin/rbenv init
到~/.basrc
文件中,以便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的安装过程:
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
此时,您已安装rbenv和ruby-build。 让我们接下来安装Ruby。
第2步 - 使用ruby-build安装Ruby
现在安装了ruby-build
插件,您可以通过简单的命令安装Ruby y可能需要的版本。 首先,让我们列出Ruby的所有可用版本:
rbenv install -l
该命令的输出应该是您可以选择安装的一长串版本。
让我们安装Ruby 2.5.1 :
rbenv install 2.5.1
安装Ruby可能是一个漫长的过程,因此为安装做好准备需要一些时间来完成。
完成安装后,使用global
子命令将其设置为我们的默认Ruby版本:
rbenv global 2.5.1
通过检查其版本号来验证Ruby是否已正确安装:
ruby -v
如果你安装了2.5.1版本的Ruby,你对上面命令的输出应该如下所示:
Outputruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
要安装和使用不同版本的Ruby,请使用不同的版本号运行rbenv
命令,如rbenv install 2.3.0
和rbenv global 2.3.0
。
您现在已经安装了至少一个版本的Ruby,并设置了您的默认Ruby版本。 接下来,我们将设置gems和Rails。
第3步 - 使用Gems
Gems是Ruby库的分布方式。 您可以使用gem
命令来管理这些gem。 我们将使用此命令安装Rails。
安装gem时,安装过程会生成本地文档。 这可能会为每个gem的安装过程增加大量时间,因此通过创建名为~/.gemrc
的文件关闭本地文档生成,该文件包含关闭此功能的配置设置:
echo "gem: --no-document" > ~/.gemrc
Bundler是一个管理项目的gem依赖项的工具。 接下来安装Bundler gem。 因为Rails依赖于它。
gem install bundler
你会看到这样的输出:
OutputFetching: bundler-1.16.2.gem (100%)
Successfully installed bundler-1.16.2
1 gem installed
您可以使用gem env
命令(子命令env
是environment
简称)来了解有关gem的环境和配置的更多信息。 您可以使用home
参数查看gems的安装位置,如下所示:
gem env home
您将看到类似于此的输出:
/home/sammy/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
设置好Gem后,即可安装Rails。
第4步 - 安装Rails
要安装最新版本的Rails,请使用gem install
命令:
gem install rails
gem
命令安装您指定的gem以及每个依赖项。 Rails是一个复杂的Web开发框架,具有许多依赖关系,因此该过程需要一些时间才能完成。 最终,您将看到一条消息,指出已安装Rails。 及其依赖:
Output...
Successfully installed rails-5.2.0
38 gems installed
注意 :如果您想安装特定版本的Rails,可以通过搜索列出Rails的有效版本,这将输出一长串可能的版本。 然后我们可以安装特定版本,例如4.2.7 :
gem search '^rails$' --all
gem install rails -v 4.2.7
rbenv的工作原理是创建一个shims目录,它指向当前启用的Ruby版本使用的文件。 通过rehash
子命令,rbenv在该目录中维护填充程序,以匹配服务器上每个已安装的Ruby版本的每个Ruby命令。 每当你安装新版本的Ruby或提供命令的gem(如Rails)时,你应该运行:
rbenv rehash
使用以下命令打印其版本,验证是否已正确安装Rails:
rails -v
如果安装正确,您将看到已安装的Rails版本:
OutputRails 5.2.0
此时,您可以开始测试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版本2.1.3 :
rbenv uninstall 2.1.3
使用rbenv uninstall
命令可以清除旧版本的Ruby,这样就不会有比当前使用的更多的安装。
第7步 - 卸载rbenv
如果您已经决定不再使用rbenv,则可以将其从系统中删除。
为此,首先在编辑器中打开~/.bashrc
文件:
nano ~/.bashrc
在文件中查找并删除以下两行:
...
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
保存文件并退出编辑器。
然后使用以下命令删除rbenv和所有已安装的Ruby版本:
rm -rf `rbenv root`
注销并重新登录以将更改应用到shell。
结论
在本教程中,您安装了rbenv
和Ruby on Rails。 从这里,您可以了解有关使这些环境更加健壮的更多信息。
探索如何将Ruby on Rails与PostgreSQL或MySQL一起使用,而不是默认的sqlite3数据库,它为您的应用程序提供更多的可伸缩性,集中性和稳定性。 随着您的需求增长,您还可以学习如何跨多个服务器扩展Ruby on Rails应用程序 。