为什么Bundle Install是在vendor/bundle中安装gem?

Ama*_*mra 57 ruby gem ruby-on-rails bundler rvm

每当我做bundle install所有的宝石安装在

app_dir/vendor/bundle
Run Code Online (Sandbox Code Playgroud)

路径并消耗大量磁盘空间.我也尝试安装宝石,它应该安装,即宝石集,而开发由此:

bundle install --no-deployement
Run Code Online (Sandbox Code Playgroud)

但这对我来说并不适合安装宝石vendor/bundle.如何让它全局安装在所有应用程序或ruby gemsets位置?我也试过删除.bundle/config但没有改变.

我在用:

rvm version: 1.23.14
ruby version: 2.0.0-p247
rails 3.2.13
Run Code Online (Sandbox Code Playgroud)

这是我的~/.bash_profile:

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
eval "$(rbenv init -)"
alias pg='pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log'

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
Run Code Online (Sandbox Code Playgroud)

我的~/.bashrc:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
Run Code Online (Sandbox Code Playgroud)

您可能需要的其他一些信息:

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ which bundle
/Users/aman/.rvm/gems/ruby-2.0.0-p247@global/bin/bundle

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ rbenv which bundle
/Users/aman/.rbenv/versions/2.0.0-p247/bin/bundle

amandeep@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ rbenv which ruby
/Users/aman/.rbenv/versions/2.0.0-p247/bin/ruby

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ rbenv gemset active
rbenv: NO such command `gemset'

aman@Amandeeps-MacBook-Pro ~/Projects/qe (develop)*$ which rails
/Users/aman/.rvm/gems/ruby-2.0.0-p247@global/bin/rails
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个,但没有帮助:

bundle install --system
Run Code Online (Sandbox Code Playgroud)

并删除.bundle目录.

请帮我在gemsets中安装宝石,vendor/bundle或者默认安装宝石.

Iur*_* G. 87

在项目文件夹中,您将拥有.bundle保存配置的目录bundler.尝试删除该文件夹.它应该将您的宝石的安装路径重置回系统范围的设置.

如果您只想编辑安装路径,请.bundle/config使用您喜欢的编辑器打开,以显示路径vendor/bundle.删除该行会将其恢复为默认值,而无需删除您可能拥有的其他配置.

另外,另一种不太常见的情况是您的系统范围设置被搞砸了.根据@NaoiseGolden的说法:

我不得不.bundle从我的主文件夹(rm -rf~/.bundle)中删除.您可以查看正在运行的配置bundle env

  • @Matt在某些时候你用`--deloyment`标志或`--path`标志运行bundle.这导致更改"vendor"的安装路径,并将设置自动保存为`.bundle`.这是最可能的情况. (5认同)
  • 我不得不从我的Home文件夹中删除.bundle(`rm -rf~/.bundle`).您可以查看运行`bundle env`的配置. (4认同)
  • 这解决了我的问题.谢谢 (3认同)
  • @IuriG.是绝对正确的.我回顾了我的bash命令历史,发现由于某种原因(可能是关于某些博客文章或SO问题的建议而不知道我在做什么),我运行了`bundle --path = vendor/bundle`,这导致了`.bundle/config`的创建.这个解决方案(`rm -rf .bundle`)非常简单并且修复了所有内容. (3认同)
  • 解决了它对我来说 - 谢谢! (2认同)

mu *_*u 無 25

尝试安装使用

bundle install --system
Run Code Online (Sandbox Code Playgroud)

我认为最初捆绑安装是使用--pathflag 运行的,捆绑器现在记得那个配置.

从bundler 手册页

在对bundle install的调用和Bundler运行时之间会记住一些选项.

对bundle install的后续调用将gems安装到最初传递给--path的目录中.Bundler运行时将在该位置查找gem.您可以通过运行bundle install --system来恢复此选项.

编辑:正如下面的评论中提到的,以及其他方面,这将安装宝石系统.如果您使用rvm等来管理不同应用程序的环境,请查看上面提到的 @ IuriG的答案.


Ama*_*mra 10

  1. 使用bundle env查看的路径和包构造

  2. 在此设置捆绑路径之后, ~/.rvm/gems/ruby-2.0.0-p247如下所示:

    bundle install --path ~/.rvm/gems/ruby-2.0.0-p247
    
    Run Code Online (Sandbox Code Playgroud)

    这是全局的,您也可以使用自己的自定义路径.

  3. 发布这bundle install将永远不再需要path,并将永远安装你的所有宝石directory(~/.rvm/gems/ruby-2.0.0-p247 in my case)该应用程序不在app_folder/vendor/bundle


Tim*_*ore 6

试试跑步bundle env.这将告诉您路径配置的设置位置.