Why Bundle Install is installing gems in vendor/bundle?

53,532

Solution 1

  1. Use bundle env to view paths and bundle configuration

  2. 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.

  3. Post this bundle install will never need path again and will always install all of your gems in that directory(~/.rvm/gems/ruby-2.0.0-p247 in my case) for that app not in app_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 running bundle 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

Share:
53,532
Amandeep Singh Bhamra
Author by

Amandeep Singh Bhamra

Updated on July 05, 2022

Comments

  • Amandeep Singh Bhamra
    Amandeep Singh Bhamra almost 2 years

    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.

  • Anshul Goyal
    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 using gem unistall bundler and gem install bundler?
  • Amandeep Singh Bhamra
    Amandeep Singh Bhamra over 10 years
    I did that too. Even I have installed rvm and ruby again.
  • Amandeep Singh Bhamra
    Amandeep Singh Bhamra over 10 years
    Can u give me some example what is default $BUNDLE_PATH? is it ~/.rvm/gems/ruby-2.0.0-p247 ?
  • Anshul Goyal
    Anshul Goyal over 10 years
    @AmandeepSingh Yes, it should be something similar. Have you used the --binstubs flag earlier?
  • Amandeep Singh Bhamra
    Amandeep Singh Bhamra over 10 years
    No. I haven't used it.
  • Amandeep Singh Bhamra
    Amandeep Singh Bhamra over 10 years
    This 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
    Rubinsh about 10 years
    Solved it for me as well - Thanks!
  • Matt
    Matt almost 10 years
    Likewise 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.
    Iuri G. almost 10 years
    @Matt At some point you ran bundle with --deployment flag or --path flag. That resulted changing install path to vendor and the settings got autosaved to .bundle. That's the most probable scenario.
  • Taylored Web Sites
    Taylored Web Sites over 9 years
    I 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
    Tim Moore over 9 years
    If 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
    Naoise Golden over 9 years
    I had to delete .bundle from my Home folder (rm -rf ~/.bundle). You can check out your configuration running bundle env.
  • Anshul Goyal
    Anshul Goyal about 9 years
    @TayloredWebSites you are right, have added an edit for that. Thanks for pointing out :)
  • sixty4bit
    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
    Goke Obasa almost 8 years
    Thanks! this really helped.
  • kush
    kush over 2 years
    @OP original post: This worked perfectly, thank you. Saved me so much time.
  • smilingfrog
    smilingfrog about 2 years
    #2 has been deprecated. Now use: bundle config set --local path ~/.rvm/gems/ruby-2.0.0-p247