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的文档。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容