ruby on rails-为什么捆绑安装在供应商/捆绑中安装gem?

每当我执行~/.bashrc时,所有宝石都将安装在

app_dir/vendor/bundle

路径并消耗磁盘空间负载。 我还尝试在应该通过以下方式安装gem的地方安装gem:

bundle install --no-deployement

但这对我不起作用,请在~/.bashrc上安装宝石。如何使它在所有应用程序中全局安装或在ruby宝石集位置安装? 我也尝试删除.bundle/config,但没有任何更改。

我在用:

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

这是我的~/.bashrc

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

我的~/.bashrc504:

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

并删除vendor/bundle目录。

请帮助我在不是vendor/bundle或默认位置的宝石集中安装宝石。

6个解决方案
85 votes

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

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

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

我必须从主文件夹(rm -rf〜/ .bundle)中删除.bundle。 您可以签出运行bundle env的配置

Iuri G. answered 2019-11-08T10:51:44Z
25 votes

尝试使用安装

bundle install --system

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

从捆绑器手册页

在捆绑安装的调用之间以及Bundler运行时会记住一些选项。

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

编辑:如下面的注释中所述,否则,这会在整个系统中安装gems。 如果您使用rvm等管理不同应用程序的环境,请检查上面提到的@IuriG的答案。

mu 無 answered 2019-11-08T10:52:43Z
9 votes
  1. 使用bundle install查看路径和捆绑包配置

  2. 在此之后,将束路径设置为bundle install,如下所示:

    bundle install

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

  3. 发布此bundle install将不再需要path,并将始终为该应用安装您在该directory(~/.rvm/gems/ruby-2.0.0-p247 in my case中的所有宝石,而不是在app_folder/vendor/bundle

Amandeep Singh Bhamra answered 2019-11-08T10:53:36Z
6 votes

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

Tim Moore answered 2019-11-08T10:54:03Z
1 votes

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

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

对于全局配置文件,请参见~/.bundle/config

这个手册页也可能有用:bundle config

Rav.- answered 2019-11-08T10:54:52Z
1 votes

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

bundle install --system
Rokibul Hasan answered 2019-11-08T10:55:21Z
translate from https://stackoverflow.com:/questions/19961821/why-bundle-install-is-installing-gems-in-vendor-bundle