RVM 是一个命令行工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换。
https://rvm.io/
如果你打算学习 Ruby / Rails, RVM 是必不可少的工具之一。
这里所有的命令都是再用户权限下操作的,任何命令最好都不要用 sudo.
RVM 安装
1
2
3
|
$ curl -L get.rvm.io | bash -s stable $ source ~/.bashrc $ source ~/.bash_profile |
修改 RVM 的 Ruby 安装源到国内的 淘宝镜像服务器,这样能提高安装速度
1
|
$ sed -i -e 's/ftp\.ruby-lang\.org\/pub\/ruby/ruby\.taobao\.org\/mirrors\/ruby/g' ~/.rvm /config/db |
Ruby 的安装与切换
列出已知的 Ruby 版本
1
|
rvm list known |
安装一个 Ruby 版本
1
|
rvm install 2.2.0 |
这里安装了最新的 2.2.0, rvm list known 列表里面的都可以拿来安装。
切换 Ruby 版本
1
|
rvm use 2.2.0 |
如果想设置为默认版本,这样一来以后新打开的控制台默认的 Ruby 就是这个版本
1
|
rvm use 2.2.0 --default |
查询已经安装的ruby
1
|
rvm list |
卸载一个已安装版本
1
|
rvm remove 1.8.7 |
gemset 的使用
RVM 不仅可以提供一个多 Ruby 版本共存的环境,还可以根据项目管理不同的 gemset.
gemset 可以理解为是一个独立的虚拟 Gem 环境,每一个 gemset 都是相互独立的。
比如你有两个项目,一个是 Rails 2.3 一个是 rails3. gemset 可以帮你便捷的建立两套 Gem 开发环境,并且方便的切换。
gemset 是附加在 Ruby 语言版本下面的,例如你用了 1.9.2, 建立了一个叫 rails3 的 gemset,当切换到 1.8.7 的时候,rails3 这个 gemset 并不存在。
建立 gemset
1
2
|
rvm use 1.8.7 rvm gemset create rails23 |
然后可以设定已建立的 gemset 做为当前环境
use 可以用来切换语言或者 gemset
前提是他们已经被安装(或者建立)。并可以在 list 命令中看到。
1
2
|
rvm use 1.8.7 rvm use 1.8.7@rails23 |
然后所有安装的 Gem 都是安装在这个 gemset 之下。
列出当前 Ruby 的 gemset
1
|
rvm gemset list |
清空 gemset 中的 Gem
如果你想清空一个 gemset 的所有 Gem, 想重新安装所有 Gem,可以这样
1
|
rvm gemset empty 1.8.7@rails23 |
删除一个 gemset
1
|
rvm gemset delete rails2-3 |
项目自动加载 gemset
RVM 还可以自动加载 gemset。
例如我们有一个 Rails 3.1.3 项目,需要 1.9.3 版本 Ruby,整个流程可以这样。
1
2
3
4
|
rvm install 1.9.3 rvm use 1.9.3 rvm gemset create rails313 rvm use 1.9.3@rails313 |
下面进入到项目目录,建立一个 .rvmrc 文件。
在这个文件里可以很简单的加一个命令:
1
|
rvm use 1.9.3@rails313 |
然后无论你当前 Ruby 设置是什么,cd 到这个项目的时候,RVM 会帮你加载 Ruby 1.9.3 和 rails313 gemset.
使用 RVM 快速部署 Nginx + Passenger
首先安装 Passenger
1
|
gem install passenger |
然后使用 passenger-install-nginx-module 来安装 Nginx 和部署。
因为这一步需要 root 权限(因为要编译 Nginx)可以用 rvmsudo 这个东西(这个东西真是个好东西)。
1
|
rvmsudo passenger- install -nginx-module |
然后会让你选择是下载 Nginx 源码自动编译安装,还是自己选择 Nginx 源码位置。
选择 Nginx 手动安装的可以添加别的编译参数,方便自定义编译 Nginx。
然后一路下载安装。默认的安装位置为 /opt/nginx.
然后看看 nginx.conf,都给你配置好了,只需要加上 root 位置(yourapp/public)就可以了。
当我第一次安装完成了,就惊呼,这也太爽了吧。
PS: RVM 是个好东西,做的很智能,(大部分)操作失败后会告诉你原因,然后告诉你需要安装哪些Lib等等,非常适合新手老手使用,简直是居家旅行必备良药。