“捆绑安装”会永久地在我的计算机上安装所有必需的宝石吗?

时间:2014-08-05 16:19:43

标签: ruby-on-rails gem rubygems bundler

我是rails的新手,正在学习捆绑器。我知道bundle install安装了gemfile中指定的所有gem,但它将它们安装在哪里?

它是否永久性地将它们安装在我的计算机上,以便将来的任何项目都可以使用它们?

如果是这样,这意味着我的计算机充满了我需要的一个示例项目的随机gem版本和gem安装,但可能永远不会再使用?

2 个答案:

答案 0 :(得分:2)

默认情况下,bundle install将在根级别安装,因此计算机上的所有用户都可以访问这些gem。所以'是'它是永久性的(至少不依赖于你的应用程序,你可以随时删除它们)。

看看man pages for bundler。在这里,您会注意到您可以指定安装到本地目录。

  

将您的依赖项(甚至是已安装到系统宝石中的宝石)安装到系统宝石以外的位置   库。在这种情况下,请将它们安装到vendor / bundle。

     

$ bundle install --path vendor / bundle

     

进一步捆绑命令或调用Bundler.setup或Bundler.require   会记住这个位置。

这样您就可以将宝石安装到应用程序内的位置。因此,当您删除示例应用程序时,还会删除关联的gem。

此外,如果您想查看特定gem的安装位置(假设您要查看其源代码),请键入bundle show <gemname>。这会吐出那条宝石的路径。

答案 1 :(得分:1)

简短的回答是'是'。更长的答案是,有一些技术可以减少或消除与此效应相关的问题。

如果您安装'RVM':

https://rvm.io/

这将允许您安装多个版本的Ruby并创建单独的'gemsets'。当您进入包含项目的目录时,会自动选择ruby版本和gemset设置,并且活动的Ruby版本将会更改。通过这种方式,您可以在项目之间保持宝石分离 - 并同时使用多个Ruby版本,包括JRuby和其他深奥版本。

要找出存储宝石的位置,请输入:

gem environment

进入命令行并在响应中查找INSTALLATION_DIRECTORY条目。