分享 rvm 实用指南

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

今天看到一个群里问一些 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.

写到 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 中,此帖恰似雪中送炭,感谢下。

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