RVM Gemsets和Ruby Gemfile混淆

时间:2015-05-21 21:04:29

标签: ruby gem rvm gemfile

有人请帮助我了解一个ruby应用程序如何管理应用程序的gemfile和rvm gemsets。如果我目前正在使用Gemset,有一堆已安装的宝石,而且我的gemfile中也有宝石,那么Ruby应用程序是使用gemfile中的gem还是应用程序的gemset?

1 个答案:

答案 0 :(得分:4)

要理解这一点,你需要退后一步,了解红宝石宝石的工作原理 让我们从一个没有rvm或Gemfile的系统开始 通过" gem install"安装宝石时它进入系统宝石位置。
每当你编写一个ruby脚本并需要gem时,它就会从那里被拾取。

现在假设你需要为不同的项目使用不同版本的gem。这就是bundler的用武之地。你创建一个Gemfile,当你"捆绑安装" Gemfile中列出的gem将被引入并在该项目的上下文中使用。你需要做"捆绑安装"把它们带进去和之后#34;捆绑exec ruby​​"与gem版本一起运行。您可以拥有多个gem版本并选择要使用的版本。如果您没有通过捆绑包,您将使用系统中的任何内容。

Rvm现在。假设您想要改变"系统"宝石和红宝石版本以有条理的方式。这基本上就是rvm gemset。通过路径间接的魔力,您可以为不同的宝石集安装宝石,并假装它们是系统宝石。

所以gemsets和gemfiles彼此正交。如果您使用宝石文件,宝石将被安装在宝石套装中,但如果您穿过捆绑器,通常不会关心它。

通常你会想要使用Gemfile。