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

时间:2013-11-13 18:41:57

标签: ruby-on-rails ruby gem rvm bundler

每当我{/ 1}}所有宝石都安装在

bundle install

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

app_dir/vendor/bundle

但这不适合我并在bundle install --no-deployement 安装宝石。如何让它全局安装在所有应用程序或ruby gemsets位置?我也尝试删除vendor/bundle,但没有任何改变。

我正在使用:

.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或默认位置的宝石中安装宝石。

6 个答案:

答案 0 :(得分:78)

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

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

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

  

我必须从我的主文件夹(rm -rf~ / .bundle)中删除.bundle。您可以查看运行bundle env

的配置

答案 1 :(得分:24)

尝试使用

进行安装
bundle install --system

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

来自捆绑工具man page

  

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

     

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

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

答案 2 :(得分:9)

  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中的app_folder/vendor/bundle内的所有宝石安装<{1}}

答案 3 :(得分:6)

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

答案 4 :(得分:1)

首先,根据您的信息,您似乎已经安装了rvm和rbenv。那是一个very bad idea。你必须删除其中一个(rbenv + bundler对我来说就像一个魅力,没试过rvm)。

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

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

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

答案 5 :(得分:1)

要在系统范围内安装Gem避免路径供应商/包,只需在项目目录

中运行以下命令
bundle install --system