Why Bundle Install is installing gems in vendor/bundle?
Ruby on-RailsRubyGemRvmBundlerRuby on-Rails Problem Overview
Whenever I do bundle install
all of the gems get installed at
app_dir/vendor/bundle
path and consumes loads of disk space. I also tried installing gems where it should get installed i.e gemsets while development by this:
bundle install --no-deployement
but this isn't working for me and installeing gems at vendor/bundle
. How can I make it to be installed globally for all applications or in ruby gemsets location ? I also tried removing .bundle/config
but nothing changed.
I am using:
rvm version: 1.23.14
ruby version: 2.0.0-p247
rails 3.2.13
Here is my ~/.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
My ~/.bashrc
:
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
Some other information that you might need:
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
I tried this also but didn't helped:
bundle install --system
and removing .bundle
directory.
Please help me in installing gems in gemsets not vendor/bundle
or a default place.
Ruby on-Rails Solutions
Solution 1 - Ruby on-Rails
In your project folder you will have .bundle
directory that holds configuration for bundler
. try deleting that folder. it should reset the install path for your gems back to system-wide settings.
In the case you just want to edit the install path, opening .bundle/config
with your favorite editor should show you the path to vendor/bundle
. Removing that line will restore it to defaults without removing other configs you might have.
Also, another less frequent scenario is your system-wide settings being messed up. According to @NaoiseGolden:
> I had to delete .bundle
from my Home folder (rm -rf ~/.bundle). You can check out your configuration running bundle env
Solution 2 - Ruby on-Rails
Try installing using
bundle install --system
I think initially the bundle install was run with --path
flag and bundler now rememebers that confguration.
From the bundler man page
> Some options are remembered between calls to bundle install, and by the Bundler runtime. > > Subsequent calls to bundle install will install gems to the directory originally passed to --path. The Bundler runtime will look for gems in that location. You can revert this option by running bundle install --system.
EDIT: As mentioned in comments below, and also otherwise, this installs the gems system wide. In case you are using rvm etc to manage your environment for different apps, check @IuriG's answer mentioned above.
Solution 3 - Ruby on-Rails
-
Use
bundle env
to view paths and bundle configuration -
After this set bundle path to
~/.rvm/gems/ruby-2.0.0-p247
like this:bundle install --path ~/.rvm/gems/ruby-2.0.0-p247
which is global and also you can use your own custom path.
- Post this
bundle install
will never needpath
again and will always install all of your gems in thatdirectory(~/.rvm/gems/ruby-2.0.0-p247 in my case
) for that app not inapp_folder/vendor/bundle
Solution 4 - Ruby on-Rails
Try running bundle env
. This will tell you where the path configuration is set.
Solution 5 - Ruby on-Rails
First of all, acording to your info, it seems that you have installed both rvm and rbenv. Thats a very bad idea. You have to delete one of them (rbenv + bundler works like a charm for me, didnt try rvm).
In regard to your question check .bundle/config
in your project, as all the configuration for bundle to that project lies there (if its still deleted, you can create a new one). You migh want to add this line (or change it, if its already there): BUNDLE_DISABLE_SHARED_GEMS: '0'
for sharing gems, they go where your BUNDLE_PATH:
is set (BUNDLE_PATH: vendor
in my case).
For the global configuration file look in ~/.bundle/config
Also this man page could be of use: bundle config
Solution 6 - Ruby on-Rails
To Install Gem in system wide avoiding path vendor/bundle, just run the following command in project directory
bundle install --system