我一直在使用没有RVM的默认系统ruby版本1.8.7用于一些rails项目,并且没有遇到任何问题。我刚刚安装了RVM,在运行rvm requirements
之后我得到了这个输出:
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安装的ruby下安装使用系统ruby安装的相同gem。
我的问题是,我对这些命令的作用是否正确?如果我是对的,为什么这样做很重要,因为如果我想使用RVM安装不同版本的Ruby(如1.9.2),它不会将该版本中的宝石与系统的ruby分开吗?
答案 0 :(得分:3)
首先想到的是,如果你使用系统Ruby,你将使用它与RVM的Rubies略有不同 - 例如,你可能需要使用sudo
来安装宝石。此外,您将无法在系统Ruby中使用许多RVM的功能,例如gemsets。
答案 1 :(得分:1)
我能想到的一个原因是,即使系统ruby得到更新,您也不要担心系统无法正常工作。
答案 2 :(得分:0)
我的问题是,我对这些命令的作用是否正确?
你做对了。第一个命令安装Ruby 1.8.7,第二个命令安装当前安装在新RVM Ruby 1.8.7安装中的系统Ruby安装上的所有gem,第三个命令将您的默认版本的Ruby设置为RVM Ruby 1.8。 7。
如果我是对的,为什么这样做很重要,因为如果我想使用RVM安装不同版本的Ruby(如1.9.2),那么它不会将该版本中的宝石与系统的ruby分开?
第二个命令实际上更多是关于方便性而非必要性。是的,RVM 1.8.7中的gems安装将与系统版本的Ruby中安装的gems完全分开;但是,如果你没有运行第二个命令,你就是RVM 1.8.7几乎没有任何宝石(只有默认值)。这意味着您需要通过并手动安装启动和运行项目所需的宝石。而不是这样做,第二个命令允许您只是将已经安装在系统版本的Ruby中的相同gem安装到RVM 1.8.7版本 - 它不会迁移它们,它只是复制它们。在第二个命令之后,有两组完全相同的宝石:一个在系统Ruby中,一个在RVM 1.8.7 Ruby中。所以,如果你要更新任何一个红宝石中的宝石,它们会更新,但其他版本的宝石不会受到影响。
希望这有助于回答您的问题。