5

我在 Rails 上使用带有 ruby​​ 的 RVM,当我这样做时,bundle install它显示的宝石比我做时更多gem list?与 rvm 和它使用哪条路径有关?

捆绑安装

mds@db1:~/staging$ bundle
Using rake (0.9.6) 
Using Ascii85 (1.0.1) 
Using Platform (0.4.0) 
Using open4 (1.3.0) 
Using POpen4 (0.1.4) 
Using activesupport (2.3.17) 
Using rack (1.1.6) 
Using actionpack (2.3.17) 
Using actionmailer (2.3.17) 
Using activerecord (2.3.17) 
Using activeresource (2.3.17) 
Using acts_as_audited (1.1.1) 
Using addressable (2.2.8) 
Using builder (3.0.0) 
Using gyoku (1.0.0) 
Using nokogiri (1.5.6) 
Using akami (1.2.0) 
Using ar-extensions (0.9.5) 
Using cgi_multipart_eof_fix (2.5.0) 
Using chunky_png (1.2.5) 
Using cocaine (0.2.1) 
Using coderay (1.0.9) 
Using fssm (0.2.9) 
Using sass (3.1.18) 
Using compass (0.12.1) 
Using daemons (1.1.9) 
Using warden (0.10.7) 
Using devise (1.0.6) 
Using fastimage (1.2.13) 
Using html_compressor (0.0.3) 
Using rubyzip (0.9.8)
more gems......
Your bundle is complete!
It was installed into ./vendor/bundle

宝石清单

mds@db1:~/staging$ gem list

*** LOCAL GEMS ***

actionmailer (2.3.17)
actionpack (2.3.17)
activerecord (2.3.17)
activeresource (2.3.17)
activesupport (2.3.17)
bundler (1.3.5)
bundler-unload (1.0.1)
daemon_controller (1.1.4)
fastthread (1.0.7)
passenger (3.0.19)
rack (1.5.2, 1.1.6)
rails (2.3.17)
rake (10.1.0)
rubygems-bundler (1.2.2)
rvm (1.11.3.8)
4

4 回答 4

2

当您使用bundle install --deploymentor时会发生这种情况bundle install --path=...,它会生成.bundle/config如下内容:

---
BUNDLE_FROZEN: '1'
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'

它可以由你们中的一位同事或捆绑器/capistrano 集成来完成:

  1. 如果是您的同事,则只需删除并忽略它:

    rm -rf .bundle
    echo '.bundle' >> .gitignore
    
  2. 对于 capistrano rvm-capistrano描述了如何禁用它 => https://github.com/wayneeseguin/rvm-capistrano#disabling-bundle---deployment-when-using-gemsets

于 2013-07-23T13:29:47.243 回答
1

在您的目录的根目录中有一个名为 .bundle 的隐藏目录。删除它,然后再次运行 bundle。

于 2013-07-23T13:12:56.727 回答
1

在做之前gem list确保你使用了应用程序的 gemset:

rvm use application_ruby@application_gemset
gem list

请务必替换application_ruby为您的 ruby​​ 版本字符串和application_gemset您的 rails 应用程序使用的 gemset

于 2013-07-23T12:55:50.817 回答
0

根据bundler 文档,在 ops 的情况下,当前默认值可能已设置为 vendor/bundle,例如通过先前的执行bundle install --path vendor/bundle

进一步的捆绑命令或对 Bundler.setup 或 Bundler.require 的调用将记住此位置

还要检查 $BUNDLE_PATH 的内容,它显示了它的安装位置。注意:它也有可能通过 --deployment 选项安装到供应商/捆绑包。请参阅部署模式3。

正如此处回答的那样,gem list将仅显示使用 --system 选项安装的 gem(请参阅接受的答案和 Caspar 评论);bundle list改为显示安装在应用程序目录中的 gem,即 via (bundle install不带 --system 选项)。

于 2016-03-27T00:36:33.867 回答