分享 rvm 实用指南

hisea · 2011年12月23日 · 最后由 douxiance 回复于 2015年09月05日 · 20155 次阅读

今天看到一个群里问一些rvm的问题。 写了一个实用指南。http://hisea.me/p/rvm-guide

rvm是一个命令行工具,可以提供一个便捷的多版本ruby环境的管理和切换。

如果你打算学习ruby/rails, rvm是必不可少的工具之一。

这里所有的命令都是再用户权限下操作的,任何命令最好都不要用sudo.

rvm安装

$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

ruby的安装与切换

  • 列出已知的ruby版本
rvm list known
  • 安装一个ruby版本
rvm install 1.9.3

这里安装了最新的1.9.3, rvm list known列表里面的都可以拿来安装。

  • 使用一个ruby版本
rvm use 1.9.3

如果想设置为默认版本,可以这样

rvm use 1.9.3 --default 
  • 查询已经安装的ruby
rvm list
  • 卸载一个已安装版本
rvm remove 1.9.2

gemset的使用

rvm不仅可以提供一个多ruby版本共存的环境,还可以根据项目管理不同的gemset.

gemset可以理解为是一个独立的虚拟gem环境,每一个gemset都是相互独立的。

比如你有两个项目,一个是rails 2.3 一个是 rails 3. gemset可以帮你便捷的建立两套gem开发环境,并且方便的切换。

gemset是附加在ruby语言版本下面的,例如你用了1.9.2, 建立了一个叫rails3的gemset,当切换到1.8.7的时候,rails3这个gemset并不存在。

  • 建立gemset
rvm use 1.8.7
rvm gemset create rails23
  • 然后可以设定已建立的gemset做为当前环境

use 可以用来切换语言,或者gemset,前提是他们已经被安装(或者建立)。并可以在list命令中看到。

rvm use 1.8.7
rvm use 1.8.7@rails23

然后所有安装的gem都是安装在这个gemset之下。

  • 列出当前ruby的gemset
rvm gemset list
  • 清空gemset中的gem

如果你想清空一个gemset的所有gem,想重新安装所有gem,可以这样

rvm gemset empty 1.8.7@rails23
  • 删除一个gemset
rvm gemset delete rails2-3

项目自动加载gemset

rvm还可以自动加载gemset.

例如我们有一个rails3.1.3项目,需要1.9.3版本ruby.整个流程可以这样。

rvm install 1.9.3
rvm use 1.9.3
rvm gemset create rails313
rvm use 1.9.3@rails313

下面进入到项目目录,建立一个.rvmrc文件。

在这个文件里可以很简单的加一个命令:

rvm use 1.9.3@rails313

然后无论你当前ruby设置是什么,cd到这个项目的时候,rvm会帮你加载 ruby 1.9.3和rails313 gemset.

共收到 13 条回复

写到 WIKI 上面去吧,这么好的东西

有没有能迁移gemset的命令?比如新建一个gemset,我想用以前的安装的gem,不需要再重新安装。。

#2楼 @hooopo 有两个命令rvm gemset export backup.gems导出到文件。然后可以rvm gemset import backup. 我不怎么用这个,这部分工作给bundler了

#4楼 @hisea 这个不错 我也用bundler,不过家里的网是惨不忍睹,bundle install 几乎会卡住。

#5楼 @hooopo 现在有老李的镜像就没这个问题了。HP

#6楼 @jinleileiking 是我家网慢。。和GWF无关 这个也不是很快。。

time gem install json -shttp://ruby.taobao.org
Building native extensions.  This could take a while...
Successfully installed json-1.6.3
1 gem installed

real    0m52.921s
user    0m5.476s
sys 0m0.152s

太及时了,但是有个问题,没有提到,是我昨天在安装rvm出现的,我当时安装完毕rvm后,目录下没有.bashprofile文件,这个时候是需要手工创建的。这点应该安装的时候提示一下。

#3楼 @hisea 已经推荐到了 WIKI 首页

#8楼 @rainkcn 也不一定要建立在.bash_profile底下,寫在.bashrc內也行

rvm是一个ruby和rails届的神器,让人看到bash的强大,wayneeseguin的bash功力深厚。。

最近在练习coding中,此帖恰似雪中送炭,感谢下。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册