88

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

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

4

5 回答 5

79

如果您想找出特定 gem 的存储位置,您可以运行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>.

于 2015-09-17T19:55:40.447 回答
63

这取决于。在通常的开发设置中,当您“正常”(通过运行)安装 gem 时,它们会安装在它们所在的位置,gem install foo并且 bundler 不会重新安装已经存在的 gem。该位置取决于 ruby​​gems 本身的配置方式。

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

您还可以运行bundle package以存储您的应用程序使用的所有 .gem 文件vendor/cache。与其他位置的 gem 相比, Runningbundle install会更喜欢 vendor/cache 中的 gem。

于 2012-07-24T16:20:51.680 回答
8

bundle config path用来查看宝石的存储位置。

于 2020-05-27T23:49:28.423 回答
4

这里/usr/local/lib/ruby/gems/2.1.0/gems/和这里:/usr/local/lib/ruby/gems/2.1.0/bundler/gems/

于 2014-09-27T11:03:16.077 回答
2

请注意,gems 也安装bundle在“Gem Path”中的文件夹中(请参阅:bundle env)。例如,在从以下位置安装 gem 时会发生这种情况git

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

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

于 2020-01-29T14:14:31.360 回答