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

如果你打算学习 Ruby / Rails, RVM 是必不可少的工具之一。

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

RVM 安装$gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

$\curl -sSL https://get.rvm.io | bash -s stable

$source ~/.bashrc

$source ~/.bash_profile

修改 RVM 的 Ruby 安装源到 Ruby China 的 Ruby 镜像服务器,这样能提高安装速度

$echo "ruby_url=https://cache.ruby-china.com/pub/ruby" > ~/.rvm/user/db

Ruby 的安装与切换

列出已知的 Ruby 版本

rvm list known

安装一个 Ruby 版本

rvm install2.2.0 --disable-binary

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

切换 Ruby 版本

rvm use 2.2.0

如果想设置为默认版本,这样一来以后新打开的控制台默认的 Ruby 就是这个版本

rvm use 2.2.0 --default

查询已经安装的 ruby

rvm list

卸载一个已安装版本

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 并不存在。

建立 gemsetrvm 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 的 gemsetrvm gemset list

清空 gemset 中的 Gem

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

rvm gemset empty 1.8.7@rails23

删除一个 gemsetrvm gemset delete rails2-3

项目自动加载 gemset

RVM 还可以自动加载 gemset。

例如我们有一个 Rails 3.1.3 项目,需要 1.9.3 版本 Ruby,整个流程可以这样。

rvm install1.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.

使用 RVM 快速部署 Nginx + Passenger

首先安装 Passenger

gem installpassenger

然后使用 passenger-install-nginx-module 来安装 Nginx 和部署。

因为这一步需要 root 权限(因为要编译 Nginx)可以用 rvmsudo 这个东西(这个东西真是个好东西)。

rvmsudo passenger-install-nginx-module

然后会让你选择是下载 Nginx 源码自动编译安装,还是自己选择 Nginx 源码位置。

选择 Nginx 手动安装的可以添加别的编译参数,方便自定义编译 Nginx。

然后一路下载安装。默认的安装位置为 /opt/nginx.

然后看看 nginx.conf,都给你配置好了,只需要加上 root 位置(yourapp/public)就可以了。

当我第一次安装完成了,就惊呼,这也太爽了吧。

PS: RVM 是个好东西,做的很智能,(大部分)操作失败后会告诉你原因,然后告诉你需要安装哪些 Lib 等等,非常适合新手老手使用,简直是居家旅行必备良药。

其他选择

如果你不太喜欢 RVM 的风格,你也可以试试 rbenv, Ruby China 同样有一篇关于它的 Guide: rbenv 实用指南

linux rvm,RVM 实用指南相关推荐

  1. Fedora和Red Hat Enterprise Linux实用指南(第6版)(套装上下册)火热上市!!!!

    亚马逊热卖地址: http://www.amazon.cn/Fedora%E5%92%8CRed-Hat-Enterprise-Linux%E5%AE%9E%E7%94%A8%E6%8C%87%E5% ...

  2. Fedora和Red Hat Enterprise Linux实用指南(第6版)(上、下册)( 入行必读的Linux圣经)

    Fedora和Red Hat Enterprise Linux实用指南(第6版)(上.下册)( 入行必读的Linux圣经) (美)苏贝尔(SobellL,M.G.)著 李洋等译 ISBN 978-7- ...

  3. Fedora和Red Hat Enterprise Linux实用指南(第6版)(上、下册)( 入行必读的Linux圣经)...

    Fedora和Red Hat Enterprise Linux实用指南(第6版)(上.下册)( 入行必读的Linux圣经) (美)苏贝尔(SobellL,M.G.)著 李洋等译 ISBN 978-7- ...

  4. 《黑客秘笈——渗透测试实用指南(第2版)》目录—导读

    版权 黑客秘笈--渗透测试实用指南(第2版) • 著 [美] Peter Kim 译 孙 勇 责任编辑 傅道坤 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 3 ...

  5. git 原理详解及实用指南_如何编写良好的提交消息:实用的Git指南

    git 原理详解及实用指南 To create a useful revision history, teams should first agree on a commit message conv ...

  6. 黑客秘笈-渗透测试实用指南 第三版

    黑客秘笈-渗透测试实用指南 第三版 目录 前言 提示和免责声明 介绍 渗透测试团队与红队 总结 第1章 赛前准备--安装 假定攻破练习 设定你的行动 设置你的外部服务器 红队的核心工具 Metaspl ...

  7. 《Scikit-Learn与TensorFlow机器学习实用指南》第9章 启动并运行TensorFlow

    第9章 启动并运行TensorFlow 来源:ApacheCN<Sklearn 与 TensorFlow 机器学习实用指南>翻译项目 译者:@akonwang @WilsonQu 校对:@ ...

  8. Git初学者:权威的实用指南

    好的,在看到PJ Hyett的这篇文章之后,我决定跳到最后,选择Git . 因此,我需要的是Git的初学者实用指南. "初学者"被定义为知道如何处理其编译器,在某种程度上理解Mak ...

  9. 《黑客秘笈——渗透测试实用指南》—第1章1.1节搭建渗透测试主机

    本节书摘来自异步社区<黑客秘笈--渗透测试实用指南>一书中的第1章1.1节搭建渗透测试主机,作者[美]Peter Kim(彼得 基姆),更多章节内容可以访问云栖社区"异步社区&q ...

  10. Linux 学习数据专题【管理、编程、源码分析】——Linux相关图书选购指南

    编辑推荐--Linux专题  http://www.china-pub.com/main/linux/linux_fengrui.htm Linux相关图书选购指南 本期特约作者 冯锐 (会员名:ph ...

最新文章

  1. signature=c4f11bb5142d9f6ce0876b3cc0d888af,PROVISIONAL SIGNATURE SCHEMES
  2. linux 软件 web管理系统,如何快速安装Webmin(linux系统web管理配置工具)
  3. 笔记-信息系统开发基础-CMMI组织能力成熟度模型-连续式和阶梯式的分组
  4. bucket sort count sort
  5. Kafka(六)Kafka基本客户端命令操作
  6. HBaseConAsia 2019盛会来袭
  7. eoLinker-AMS接口管理系统
  8. Python数值类型
  9. ELK详解(七)——Kibana部署
  10. Android——GSON解析JSON
  11. keil4和烧录软件的基本使用
  12. 采购模板html5,新建采购单.html
  13. mapper扫描问题(Invalid bound statement (not found))
  14. spring原理面试题总结
  15. 判断清浊音 matlab,基于MATLAB的语音信号的清浊音分析.doc
  16. 【蓝桥杯】简单数论4——丢番图方程
  17. 如何让手机1秒打开健康码?
  18. 提高模型泛化能力的几大方法
  19. Office 开发版本号
  20. [C#] Asp.Net 簡易Email寄送 使用Gmail

热门文章

  1. 55. 时间服务器 : NTP 服务器
  2. 6. 移动端Web开发调试之Chrome远程调试(Remote Debugging)
  3. 18. Magento 细节
  4. C++ 对象没有显式初始化
  5. APT攻防整理-攻击方法/工具
  6. Webpack框架知识整理——Modules
  7. wdlinux LAMP
  8. HTML静态网页--图片热点
  9. [Java设计模式]单例模式
  10. Spring的DI(Ioc) - 利用构造器注入