2012-01-11 58 views
0

我一直在使用默认的系统ruby版本1.8.7没有RVM的几个rails项目,并没有遇到任何问题。我刚刚安装了RVM和运行rvm requirements后,我得到这样的输出:通过RVM安装与Ruby系统相同版本的Ruby有什么意义?

To use an RVM installed Ruby as default, instead of the system ruby: 

    rvm install 1.8.7 # installs patch 357: closest supported version 
    rvm system ; rvm gemset export system.gems ; rvm 1.8.7 ; rvm gemset import system.gems # migrate your gems 
    rvm alias create default 1.8.7 

我相信了这些命令都安装已经使用RVM安装红宝石下的系统安装红宝石一样的宝石。

我的问题是,我对这些命令的作用是否正确?如果我是对的,为什么这么做很重要,因为如果我想要使用安装了不同版本(如1.9.2)的RVM的RVM,是不是已经将该版本中的宝石与系统的ruby分开了?

回答

3

有一点需要注意的是,如果您使用Ruby系统,那么您将与RVM的Rubies稍有不同 - 例如,您可能需要使用sudo来安装gems。此外,您将无法在系统Ruby中使用许多RVM的功能,如gemsets。

1

嗯,我能想到的一个原因是,即使系统红宝石得到更新,您也不希望系统无法正常工作。

0

我的问题是,我对这些命令的作用是否正确?

你是对的,他们在做什么。第一个命令安装Ruby 1.8.7,第二个命令将安装在您的系统Ruby安装中的所有gem安装在新的RVM Ruby 1.8.7安装中,第三个命令将您的默认版本Ruby设置为RVM Ruby 1.8。 7。

,如果我是正确的,为什么它很重要要做到这一点,因为如果我想用一个RVM安装不同版本的Ruby 1.9.2一样,不会吧,从该版本已经单独宝石系统的红宝石?

第二个命令其实更多的是关于便利性而非必要性。是的,安装在RVM 1.8.7中的gem将完全独立于系统版本的Ruby中安装的gem;然而,如果你没有运行第二条命令,那么你就是RVM 1.8.7,几乎没有gem(只有默认值)。这意味着您需要通过手动安装所需的宝石来启动和运行您的项目。第二个命令可以让你在系统版本的Ruby中安装相同的Gem到RVM 1.8.7版本 - 它不会迁移它们,它只是复制它们。在第二个命令之后,有两组完全相同的gem:一个在系统Ruby中,另一个在RVM 1.8.7 Ruby中。所以,如果你要更新任何红宝石中的宝石,他们会得到更新,但其他版本的宝石将不受影响。

希望这有助于回答你的问题。