捆绑器在哪里存储宝石?


75

我知道使用时gem install,gem将存储在/home/username/.rvm/gems/下,在该gemset下安装了gem。

但是,如果我使用Bundler并在Gemfile中指定了gem,那么当我运行bundle install时,这些gem将存储在哪里?如果我已经使用来安装gem gem install,如果我运行bundle install,它将使用以前使用来安装gemgem install吗?


26
bundle show <gemname>
Chowlett

谢谢,我完全忘记了该命令。
gerky 2012年

Bundler现在说“ [[弃用]bundle info <gemname>代替bundle show <gemname>”。
nyanpasu64

Answers:


58

这取决于。在通常的开发设置中,它们是按“正常”(通过运行gem install foo)安装gem的方式安装的,而bundler不会重新安装已经存在的gem。此位置取决于rubygems本身的配置方式。

如果使用--deployment选项运行bundle install,则gems将安装在应用程序唯一的位置(您可以将其作为单独的选项传递,但默认为供应商/捆绑包)

您还可以运行bundle package以存储您的应用程序使用的所有.gem文件vendor/cache。运行bundle install将首选供应商/缓存中的宝石,而不是其他位置的宝石。


凉!感谢您添加更多详细信息,非常感谢。
gerky 2012年

您也可以将安装路径指定为捆绑安装的参数:$ bundle install --path vendor/bundle
webwurst 2013年

6
我不明白答案,所以捆绑安装的默认安装路径是什么?如果用于开发中。

在开发中,它将按照实际安装的方式安装它们gem install(取决于GEM_HOME,GEM_PATH等)
Frederick Cheung

那么,默认情况下,它将在系统范围内(而不是特定于项目的)位置安装所有gems吗?
大卫

70

如果要查找特定宝石的存储位置,可以运行bundle info <gem-name>。例如:

user@host$ bundle info rake
/var/bundle/ruby/2.1.0/gems/rake-10.4.2

对于较旧版本的rake,命令可能是 bundle show <gem_name>.


这是否意味着所有宝石都已安装在您的红宝石上?
Jwan622 '16

1
请注意,建议bundle show GEM弃用bundle info GEM
Greg,


1

请注意,宝石也已安装到bundle“宝石路径”内的文件夹中(请参阅:)bundle env。例如,发生这种情况的原因是git

gem 'my-gem', git: "https://github.com/x/y.git"

我认为这样做是为了使自定义安装不会与来自gem服务器的安装冲突。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.