繁体   English   中英

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

[英]Why Bundle Install is installing gems in vendor/bundle?

每当我进行bundle install所有的宝石都安装在

app_dir/vendor/bundle

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

bundle install --no-deployement

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

我在用:

rvm version: 1.23.14
ruby version: 2.0.0-p247
rails 3.2.13

这是我的~/.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

我的~/.bashrc

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

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

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

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

bundle install --system

并删除.bundle目录。

请帮我在gemsets而不是vendor/bundle或默认位置安装gem。

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

在您只想编辑安装路径的情况下,使用您喜欢的编辑器打开.bundle/config应该会显示vendor/bundle的路径。 删除该行会将其恢复为默认值而不删除您可能拥有的其他配置。

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

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

尝试安装使用

bundle install --system

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

从bundler 手册页

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

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

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

  1. 使用bundle env查看路径和捆绑配置

  2. 在这个设置捆绑路径到~/.rvm/gems/ruby-2.0.0-p247像这样:

     bundle install --path ~/.rvm/gems/ruby-2.0.0-p247 

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

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

尝试运行bundle env 这将告诉您路径配置的设置位置。

首先,根据您的信息,您似乎已经安装了rvm和rbenv。 这是一个非常糟糕的主意 你必须删除其中一个(rbenv + bundler对我来说就像一个魅力,没有尝试rvm)。

关于你的问题检查项目中的.bundle/config ,因为捆绑到该项目的所有配置都在那里(如果它仍然被删除,你可以创建一个新的)。 你想要添加这一行(或者更改它,如果它已经存在): BUNDLE_DISABLE_SHARED_GEMS: '0'用于共享宝石,它们会在你的BUNDLE_PATH:设置的位置( BUNDLE_PATH: vendor在我的情况下)。

对于全局配置文件,请查看~/.bundle/config

此手册页也可以使用: bundle config

要在系统范围内安装Gem避免路径供应商/包,只需在项目目录中运行以下命令即可

bundle install --system

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM