Ruby on rails 3 系统ruby/gem与RVM ruby/gem

Ruby on rails 3 系统ruby/gem与RVM ruby/gem,ruby-on-rails-3,rvm,Ruby On Rails 3,Rvm,我安装了RVM,阅读了文档,但不太理解。例如,我有一个rails应用程序,它是在安装RVM之前创建并运行的,它使用系统ruby和系统gem。现在,在安装RVM之后: 我是否需要将这些gem重新安装到RVM中,以便这些gem可以在RVM控制下 如何将应用程序移植为使用RVM gem而不是系统gem RVM是ruby和gem的包装器还是这些ruby和gem的单独存储库?所以,如果我在RVM下安装gem,则gem只存在于RVM中或存在于RVM和系统之间,反之亦然。我是在复制还是RVM和系统自己同步他们

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

  • 我是否需要将这些gem重新安装到RVM中,以便这些gem可以在RVM控制下
  • 如何将应用程序移植为使用RVM gem而不是系统gem
  • RVM是ruby和gem的包装器还是这些ruby和gem的单独存储库?所以,如果我在RVM下安装gem,则gem只存在于RVM中或存在于RVM和系统之间,反之亦然。我是在复制还是RVM和系统自己同步他们的gem/系统
  • 我仍然完全搞不清楚RVM的商品和用途。现在,我以前的所有应用程序都无法正常工作,甚至一开始都不会出现各种错误

    我的环境:MacOSX10.8;轨道3.2.9;TextMate

  • 对。使用,将不会有痛苦
  • 它只需要在RVM环境中运行。无需特殊移植
  • 它旨在通过替换环境变量,如$PATH、$GEM_HOME、$GEM_PATH,为每个项目提供单独的环境
  • 优点:

  • 您可以安装不同的ruby解释器来满足应用程序的需求。假设您正在使用Rails 1.9.3启动一个新项目,但您仍在使用旧的两个Rails,它们使用1.8.7和1.9.1,并且到目前为止还没有被移植
  • 您的宝石不会相互冲突。例如,心理学有特殊的需要。如果你使用它,你必须在你所有的项目中使用它。但是使用RVM,您可以为每个项目创建不同的宝石
  • 将gem目录移动到您具有读写访问权限的地方。这很好,因为它不会强制您使用root权限编译gem
  • 缺点:

  • 我在鱼壳下长期使用RVM时遇到了问题。有两次,几个星期后,整个RVM都疯了,只是坏了。没有详细说明,我删除了整个
    ~/.rvm
    目录。在Bash下从未发生过
  • 我使用RVM的典型工作流程如下:

  • 添加
    ruby“1.9.3”
    或等效文件到我的项目中,以避免使用错误的ruby版本运行它
  • 安装RVM并安装我需要的Rubies,
    RVM安装1.9.3
  • 在给定的项目中,
    rvm使用1.9.3
  • 安装所需的gems
  • 正常使用我的应用程序
  • 请注意,我没有使用宝石。这是因为缺点1。我真的很喜欢鱼壳,没有它我就活不下去了,而bundler一个人给了我一个不错的宝石管理(一个问题:心理)。要使用gemeset,请在3之间执行另外两个步骤。和4.:

    3a。创建一个
    rvm gemset创建gemset1

    3b。使用它
    rvm使用gemset1@1.9.3

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


    请参阅此屏幕广播:了解详细教程。

    当我切换到fish时,我也开始使用rbenv。没有问题,如果您使用Bundler,那么宝石也没有问题。@ukaszNiemier–感谢您的评论,我使用fish+rbenv已经半年了,我对它非常满意。有一些陷阱,但提供的提示有帮助。对否决票有何评论?我与rails合作5年来一直在问这个我需要答案的问题。还是我会因为质疑RVM而被否决?