Why Bundle Install is installing gems in vendor/bundle?
Solution 1
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 2
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 runningbundle env
Solution 3
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 4
Try running bundle env
. This will tell you where the path configuration is set.
Solution 5
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
Amandeep Singh Bhamra
Updated on July 05, 2022Comments
-
Amandeep Singh Bhamra almost 2 years
Whenever I do
bundle install
all of the gems get installed atapp_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. -
Anshul Goyal over 10 years@AmandeepSingh Interesting. So what happens if you try specifyiing some other path - example
bundle install --path sample
? My guess is, that wouldn't work either. If that is the case, can you reinstall bundler usinggem unistall bundler
andgem install bundler
? -
Amandeep Singh Bhamra over 10 yearsI did that too. Even I have installed rvm and ruby again.
-
Amandeep Singh Bhamra over 10 yearsCan u give me some example what is default $BUNDLE_PATH? is it ~/.rvm/gems/ruby-2.0.0-p247 ?
-
Anshul Goyal over 10 years@AmandeepSingh Yes, it should be something similar. Have you used the
--binstubs
flag earlier? -
Amandeep Singh Bhamra over 10 yearsNo. I haven't used it.
-
Amandeep Singh Bhamra over 10 yearsThis helped in viewing the path. Now I have changed bundle path to ~/.rvm/gems/ruby-2.0.0-p247 and made it not to install at vendor/bundle
-
Rubinsh about 10 yearsSolved it for me as well - Thanks!
-
Matt almost 10 yearsLikewise solved it for me, but can anyone explain how those settings got set in the first place? They're not in my source control and I sure didn't create them.
-
Iuri G. almost 10 years@Matt At some point you ran bundle with
--deployment
flag or--path
flag. That resulted changing install path tovendor
and the settings got autosaved to.bundle
. That's the most probable scenario. -
Taylored Web Sites over 9 yearsI would not do this, unless you intend for your computer's Ruby to be the version to use in rails. If you do, like I did, I did a rvm reinstall xxx to start fresh.
-
Tim Moore over 9 yearsIf you're trying to install to your system gem location, I recommend not setting it inside bundle config at all. You can just delete the line. Bundler will default to using your
GEM_HOME
. -
Naoise Golden over 9 yearsI had to delete .bundle from my Home folder (
rm -rf ~/.bundle
). You can check out your configuration runningbundle env
. -
Anshul Goyal about 9 years@TayloredWebSites you are right, have added an edit for that. Thanks for pointing out :)
-
sixty4bit almost 9 years@IuriG. is absolutely right. I looked back through my bash command history and found that, for some reason or another (probably following advice on some blog post or SO question without knowing what I was doing), I had run
bundle --path=vendor/bundle
, which resulted in the creation of.bundle/config
. This solution (rm -rf .bundle
) was very simple and fixed everything. -
Goke Obasa almost 8 yearsThanks! this really helped.
-
kush over 2 years@OP original post: This worked perfectly, thank you. Saved me so much time.
-
smilingfrog about 2 years#2 has been deprecated. Now use:
bundle config set --local path ~/.rvm/gems/ruby-2.0.0-p247