我知道在使用gem install
时,gem将存储在/home/username/.rvm/gems/下,gem下安装gem宝宝。
但是如果我使用Bundler并在Gemfile中指定gem,那么当我运行bundle install时,那些gem会被存储在哪里?如果我已经使用gem install
安装了gem,如果我运行bundle install,它会使用先前使用gem install
安装的gem吗?
答案 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
来查看宝石的存放位置。