4. (2.2) RVM && rbenv

RVM

RVM 一个命令行工具,使用它你能简单的通过命令行进行安装,管理和与多个gem集的Ruby环境工作。这个网站提供了快速安装选项和详细的解释了不同用户安装RVM到系统上的文档。

对于RVM有三种安装模式:

  • 单用户模式
    RVM 安装在特定用户的$HOME目录
  • 多用户
    RVM 能够让系统中的每一个用户使用。服务器管理人员需要这个功能。
  • 混合模式
    RVM 能够让系统中的每一个用户使用,但是它也能为用户的$HOME提供独立的ruby或者gem.

我们假设你会使用单用户模式来安装最新的版本。如果是这样的话,你只需要执行下面的命令来安装 rvm , rbuy 和 rails.

$ \curl -sSL https://get.rvm.io | bash -s stable --ruby --rails

_更多的详细安装选项和安装过程可以在 [RVM 官网](https://rvm.io/rvm/install) 找到._

RVM 是一款强大的工具而不仅仅是管理Ruby的版本。事实上,它已经被开发成一套解决Ruby开发经常遇到问题的工具集合。我强烈推荐你在决定哪一个才是你的理想的环境管理工具前去读一读文档和项目的FAQ(如果你还没有环境的话)。

需要记住的是RVM是一个完整的环境包管理器。就是说会同时管理你的Ruby和Rails版本,不像rbenv,仅仅是一个Ruby管理器。

rbenv

rbenv管理你的Ruby的安装。对于Rails和gem设置的管理,你会依赖于 Bundler。Bundler 是一个Ruby 项目的环境管理器来追踪和安装切确需要的gem和版本。在配置“Hello Rails”应用的时候我们会讲一些关于Bundler的东西。

遗憾的是,你不能同时使用rbenv和RVM;你需要二选一。因此,如果你已经安装了RVM并且想尝试使用rbenv,在此之前,请确保使用你的脚本初始化文件完全卸载RVM以及它的依赖。

rbenv工作原理是拦截Ruby命令使用可执行的垫片(shim)来执行你的PATH。它会决定对指定的应用使用指定的Ruby版本,然后将你的命令传递到指定的Ruby的安装。

垫片(shim)在计算机中是一个小的拦截API调用的类库,改变传递的参数,处理或透明的重定向操作。
rbenv会在你的PATH变量开始出中插入shim的目录:

~/.rbenv/shims:/usr/local/bin:/usr/bin:/bin

rbenv 在每一个已安装的irb,gem(Ruby交互式shell),rake,ruby等软件的版本中会去匹配Ruby命令。
Shim 是用来传递命令的,如果你运行

$ rake

如果安装rbenv的话那么会发生:

  • 1.操作系统会搜索你的PATH来查找一个名叫“rake”的可执行文件
  • 2.操作系统会在你的PATH变量的开始处找到名为 rake 的 rbenv shim,因为所有的 rbenv shim 都在PATH的最前面。
  • 3.操作系统会返回叫 rake 的 shim,然后把这个命令传递给 rbenv,反过来它会转发给相应的Ruby版本。

安装rbenv你需要了解一些 Git 的基本知识,如果你用的 OS X ,你可以使用Homebrew。Homebrew 是 OS X 的一个包管理器,如果你熟悉 Debian 类系统的话它就像是 apt-get.你可以在 http:brew.sh 下载 Homebrew .

假设你在使用 Git,第一步要做的是预先使用下面的命令检查你是否已经创建rbenv目录:

$   mkdir   ~/.rbenv

注意,这里是一个点文件夹。默认一个点文件夹是隐藏的目录不可见的。隐藏的文件夹(或文件)通常是用户的偏好或存放一些实用状态。

现在,使用 git 命令来赋值rbenv的远程仓库:

$   git clone   https://github.com/sstephenson/rbenv.git    ~/.rbenv

然后,把 “~/.rbenv/bin” 添加到你的 PATH 中来访问 rbenv 命令行工具:

$   echo    'export PATH="$HOME/.rbenv/bin:$PATH"'  >>  ~/.bash_profile

如果你使用的 Ubuntu 桌面版,你需要更改你的 "~/.bashrc" 而不是 “~/.bash_profile”. 如果你使用 Zsh ,你需要更改的是 “~/.zsh” 而不是“~/.bash_profile” 。

就像上一步指出的,你应该在 Ubuntu 上使用 “~/.bashrc”,如果是 Zsh 就用 “~/.zshrc”.

最后,你应该重启你的shell来应用PATH变量的改变,开启一个新的tab或者窗口都可以。
检查rbenv 已经安装完成,运行:

$   type    rbenv   #=> "rbenv  is  a   function"

做为一个可选步骤,你可以安装 ruby-build,它是一个 提供 ”rbenv insall “命令的rbenv 插件,会简化安装新版本Ruby的步骤。我推荐安装 ruby-build。这样去做,运行:

$   git clone   https://github.com/sstephenson/ruby-build.git   ~/.rbenv/plugins/ruby-build

ruby-build 完成安装之后。你可以运行 "rbenv install -l" 来查看可用的 Ruby 版本。
安装最新的 Ruby 版本,只需要运行:

$   rbenv   install 2.2.2

现在你已经安装了一个新版本的Ruby,你也许想要设置它。设置一个本地指定应用的Ruby版本,只需要简单的运行:

$   rbenv   local   2.2.2

取消设置本地Ruby版本,运行:

$   rbenv   local   --unset

你可以决定是否设置一个默认的全局的Ruby版本。用下面的命令很容易完成:

$   rbenv   global  2.2.2
$   rbenv   rehash

“rbenv rehash” 命令是用来确保每一次已安装的Ruby版本中在 rbenv 目录 shim 能匹配正确的 Ruby 命令。
最后,做一次系统级的 gem 更新来确保所有你的gem是最新的版本:

$   gem update  --system

请前往thenv仓库查询rbenv的文档。

推荐阅读更多精彩内容