2012-07-24 57 views
43

我知道在使用gem install时,gem将被存储在/home/username/.rvm/gems/下,在该gemset下安装gem。打包商在哪里存储宝石?

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

+17

'bundle show ' – Chowlett 2012-07-24 16:17:03

+0

谢谢,我完全忘了那个命令。 – maru 2012-07-24 16:24:06

回答

40

这取决于。在通常的开发环境中,他们安装在“正常”安装gem的位置(通过运行gem install foo),并且bundler不会重新安装已存在的gem。这个位置取决于rubygems本身的配置。

如果您运行bundle与--deployment选项,则宝石将被安装在专属于您的应用程序的位置安装(你可以通过这个作为一个单独的选项,但默认为供应商/束)

你也可以运行bundle package以存储您的应用在vendor/cache中使用的所有.gem文件。运行bundle install会将供应商/缓存中的宝石选为其他位置的宝石。

+0

酷!感谢您加入更多的细节,非常感谢。 – maru 2012-07-24 16:25:52

+0

您也可以将安装路径指定为[bundle install](http://gembundler.com/v1.2/bundle_install.html)的参数:'$ bundle install --path vendor/bundle' – webwurst 2013-02-16 23:19:00

+2

我没有理解答案,那么bundle安装的默认安装路径是什么?如果它用于开发。 – 2014-11-03 19:40:38

2

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

+1

我想这只适用于某些操作系统 – 2015-09-17 19:53:34

+2

你知道bundler如何决定哪个目录下的哪个gem? – 2015-11-13 18:10:08

40

如果你想找出一个特定的宝石存储在哪里,你可以运行bundle show <gem-name>。例如:

[email protected]$ bundle show rake 
/var/bundle/ruby/2.1.0/gems/rake-10.4.2 
+0

这是否意味着所有的宝石都安装在你的红宝石上? – Jwan622 2016-04-07 22:34:23