为什么捆绑安装是在供应商/捆绑安装gem?

每当我做bundle install所有的gem得到安装

 app_dir/vendor/bundle 

path并消耗大量的磁盘空间。 我也尝试安装gem,它应该得到安装,即gemsets而开发这个:

 bundle install --no-deployement 

但是这不适合我和安装在vendor/bundlegem。 我怎样才能使它在全球范围内安装所有应用程序或rubygemsets位置? 我也尝试删除.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。

在您的项目文件夹中,您将拥有包含bundlerconfiguration的.bundle目录。 尝试删除该文件夹。 它应该重置您的gem的安装path回到系统范围的设置。

如果你只是想编辑安装path,用你最喜欢的编辑器打开.bundle/config应该显示你的vendor/bundle的path。 删除该行将恢复到默认值,而不会删除其他可能的configuration。

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

我不得不从我的主文件夹(rm -rf〜/ .bundle)删除.bundle 。 你可以检查你的configuration运行bundle env

尝试使用安装

 bundle install --system 

我想最初的bundle安装是用--path标志运行的,bundler现在记住了configuration。

从打包商手册页

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

随后的捆绑安装调用会将gem安装到最初传递给–path的目录中。 Bundler运行时将在该位置寻找gem。 你可以通过运行bundle install –system来恢复这个选项。

编辑 :如下面的评论中所述,否则,这将安装gem系统广泛。 如果你正在使用rvm等来pipe理你的环境,为不同的应用程序,请检查@ IuriG的上述答案 。

使用bundle env查看path和捆绑configuration

在这个设置束path到~/.rvm/gems/ruby-2.0.0-p247像这样:

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

这是全球性的,也可以使用自己的自定义path。

发布这个bundle install将永远不会再需要path ,并将始终安装在该directory(~/.rvm/gems/ruby-2.0.0-p247 in my case )的所有gem不在app_folder/vendor/bundle

尝试运行bundle env 。 这会告诉你pathconfiguration的设置。

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

关于你的问题在你的项目中检查.bundle/config ,因为该项目的bundle的所有configuration都在那里(如果它仍然被删除,你可以创build一个新的)。 你很想添加这一行(或者改变它,如果它已经存在): BUNDLE_DISABLE_SHARED_GEMS: '0'用于共享gem,他们去你的BUNDLE_PATH:设置( BUNDLE_PATH: vendor在我的情况)。

对于全局configuration文件,请在~/.bundle/config查找

此外,这个手册页可能是有用的: 捆绑configuration

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

 bundle install --system