我是rails的新手,正在学习捆绑器。我知道bundle install
安装了gemfile中指定的所有gem,但它将它们安装在哪里?
它是否永久性地将它们安装在我的计算机上,以便将来的任何项目都可以使用它们?
如果是这样,这意味着我的计算机充满了我需要的一个示例项目的随机gem版本和gem安装,但可能永远不会再使用?
答案 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':
这将允许您安装多个版本的Ruby并创建单独的'gemsets'。当您进入包含项目的目录时,会自动选择ruby版本和gemset设置,并且活动的Ruby版本将会更改。通过这种方式,您可以在项目之间保持宝石分离 - 并同时使用多个Ruby版本,包括JRuby和其他深奥版本。
要找出存储宝石的位置,请输入:
gem environment
进入命令行并在响应中查找INSTALLATION_DIRECTORY条目。