System ruby/gem vs RVM ruby/gem



我安装了RVM,阅读了文档,但没有很好地理解它。例如,我有一个rails应用程序,它是在find(在我安装RVM之前)创建并运行的,它使用系统ruby和系统gem。现在在我安装RVM:之后

  1. 我是否需要将这些宝石重新安装到RVM中,以便这些宝石可以在RVM的控制下
  2. 如何移植应用程序以使用RVM-gem而不是系统gem
  3. RVM是ruby和gem的包装器,还是这些ruby和宝石的单独存储库?所以,如果我在RVM下安装了一个gem,那么这个gem只存在于RVM中,或者存在于整个RVM和系统中,反之亦然。我是在复制还是RVM和系统自己同步他们的宝石/系统

我仍然对RVM的商品和用途感到完全困惑。现在,我以前的所有应用程序都不起作用,甚至一开始都没有出现各种错误。

我的环境:Mac OS X 10.8;轨道3.2.9;TextMate

  1. 是。使用bundler就不会有疼痛
  2. 它只需要在RVM环境中运行即可。无需特殊端口
  3. 它旨在通过替换环境变量,如$PATH、$GEM_HOME和$GEM_PATH,为每个项目提供单独的环境

优点:

  1. 您可以安装不同的ruby解释器来满足应用程序的要求。想象一下,您正在使用Rails 1.9.3启动一个新项目,但仍在使用1.8.7和1.9.1的旧项目,到目前为止尚未移植
  2. 你们的宝石不会互相冲突。例如,Psych有特殊需求。如果你使用它,你就必须在你的所有项目中使用它。但是使用RVM,您可以为每个项目创建不同的宝石集
  3. 将gem目录也移动到您具有读写访问权限的目录。这很好,因为不会强迫您使用root权限编译gem

缺点:

  1. 我在鱼壳下长时间使用RVM时遇到了问题。有两次,几周后,整个RVM都疯了,然后就坏了。不详细介绍,我删除了整个~/.rvm目录。在巴什统治下从未发生过

RVM的典型工作流程如下:

  1. ruby "1.9.3"或等效文件添加到我的项目的Gemfiles中,以避免使用错误的Ruby版本运行它
  2. 安装RVM并安装我需要的Rubies,rvm install 1.9.3
  3. 在给定的项目中,rvm use 1.9.3
  4. 安装所需的宝石
  5. 正常使用我的应用程序

请注意,我没有使用宝石集。这是因为缺点1。我真的很喜欢Fish shell,没有它我就活不下去,只有bundler一个人给了我不错的宝石管理(一个问题:Psych)。要使用宝石集,请在3之间再执行两个步骤。和4.:

3a。创建一个rvm gemset create gemset1
3b。使用rvm use gemset1@1.9.3

在处理一些遗留项目时,我总是使用RVM。

请参阅此屏幕广播:http://railscasts.com/episodes/200-rails-3-beta-and-rvm为体面的教程。

最新更新