bundler在哪里存储宝石?

时间:2012-07-24 16:13:58

标签: ruby gem rvm bundler gemset

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

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

5 个答案:

答案 0 :(得分:54)

如果您想知道特定宝石的存储位置,您可以运行bundle show <gem-name>。例如:

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

答案 1 :(得分:48)

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

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

您还可以运行bundle package来存储您的应用在vendor/cache中使用的所有.gem文件。运行bundle install会更喜欢供应商/缓存中的宝石和其他位置的宝石。

答案 2 :(得分:3)

此处/usr/local/lib/ruby/gems/2.1.0/gems/和此处:/usr/local/lib/ruby/gems/2.1.0/bundler/gems/

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:0)

我使用 uid duration 1: 1 5 2: 2 14 3: 3 2 来查看宝石的存放位置。