http://rvm.beginrescueend.com/
Ruby Version Manager,Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset)。目前支持Ruby的大多数版本,有1.8.7,1.9.1,1.9.2和Ruby Enterprise Editon,通过RVM可以很方便的在多个Ruby版本中快速切换。RVM同时也支持JRuby
设想当前工作在Ruby 1.9.2 + Rails 3.0下,想体验最新的Rails 开发版,怎么办?Gemset就是为解决这个问题而设计的,它可以为每个Ruby版本生成多个gemsets,各个gemset相互独立,这意味着你可以很方便的切换到某个gemset下去体验一个未正式发布的gem版本,而不会破杯当前的工作环境,完毕后,再切回到工作的gemset下即可。
大多的IDE也都很好的支持了RVM方面,可以自动识别RVM管理的Ruby版本和GemSet,方便你切换Ruby的解析环境。
关于RVM的工作原理,我会另写一篇文章来祥细解释。
使用下面命令对RVM自己进行升级
$ rvm get latest
$ rvm info 1.9.2
See what you get out of rvm notes. you will need to install some stuff before you can compile ruby.
$ aptitude install build-essential bison openssl libreadline5 libreadline5-dev curl git-core zlib1g zlib1g-dev libssl-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libmysqlclient-dev
$ rvm list known #列出RVM所支持的所有Ruby版本的信息
$ rvm install 1.9.2 # 安装 ruby-1.9.2
$ rvm install ree # install Ruby Enterprise Edition (REE)
安装多个版本的Ruby之后,RVM可以很方便的进行切换。使用下条命令可以设置某一版本为当前使用版本。
$ rvm ruby-1.8.7-p160 #切换1.8.7-p160为当前使用版本
$ rvm 1.8.7-p160 #同上面命令一样rvm ruby-1.8.7-p160
$ ruby -v #查看当前Ruby版本
查看当前Ruby的安装位置
$ which ruby
$ rvm list rubies #同上
设置默认使用版本
$ rvm default #通过default可以快速回到默认版本
$ rvm list default #查看当前版本设置信息
$ rvm reset #恢复系统默认设置
创建别名
$ rvm use reed #通过别名迅速切换
$ rvm alias delete reed #删除别名
$ rvm alias list # 查看所有的别名
$ rvm uninstall ruby-1.9.2-p180
很多时候要以管理员权限运行一些东西。
如sudo rake nginx
但sudo 是以root的bash环境的,它里面没有配置rvm怎么办
用rvmsudo代替
You may even have separate named gemsets.
Let's say, for example, that you are testing two versions of a gem with ruby 1.9.2-head. You can install one to the default 1.9.2-head and create a named gemset for the other version and switch between them easily.
一个gemset就是一个目录,是某一个Ruby版本的Gem使用集,通过环境变量配置,使其和。
一个Ruby版本初装时就默认给了一个同名的gemset,也就是说rvm ruyb-1.9.2-p0 命令在执行时,就是使用该环境变量。
那同名gemset和global gemset有什么区别?
ruby@gemsets算什么?
$ rvm 1.9.2@rails3 --create
$ rvm use ruby-1.9.2-p0@rails3 #或者直接使用这种命名,直接指定ruby和gemset的信息。
$ rvm use ruby-1.9.2-p0@rails3 --default #设置默认
$ rvm 1.9.2@rails3 --default
$ rvm gemset list_all
rails3
$ rvm gemdir #所在位置
~/.rvm/gems/ruby-1.9.2-p0@rails3
$ rvm --force gemset delete rails3 #直接删除,没有确定步骤
$ rvm gemset empty rails3
$ rvm --force gemset empty rails3 #直接删除,没有确定步骤
$ rvm gemset export rails3.gems
$ rvm gemset rails 3
$ rvm gemset import rails3
每一个ruby版本都默认创建一个全局的gemset,以ruby_version@global命名,这样基于该ruby版本下所有的gemsets都会包含全局gemset里的gem包。可以起到统一约定的作用,也避免重复创建。
默认安装的global gemset内仅有一个gem包:rake