I know that when using gem install
, the gem will be stored under /home/username/.rvm/gems/, under which gemset the gem was installed.
But if I use Bundler and specify the gem in the Gemfile, when I run bundle install, where will those gems be stored? And what if I already installed the gem using gem install
, if I run bundle install, will it use the previous gem installed using gem install
?
If you want to find out where a particular gem is stored you can run
bundle show <gem-name>
. For example:Here
/usr/local/lib/ruby/gems/2.1.0/gems/
and here:/usr/local/lib/ruby/gems/2.1.0/bundler/gems/
.Note that gems can also be installed into the
bundle
folder within your "Gem Path" (see:bundle env
). This happens, for example, with gems installed fromgit
:I assume this is so that custom installations don't conflict with installations from a gem server.
It depends. In the usual development setup they are installed where they would be when you install a gem "normally" (by running
gem install foo
) and bundler won't reinstall gems that are already there. This location depends on how rubygems itself is configured.If you run bundle install with the
--deployment
option then the gems will be installed in a location unique to your app (you can pass this as a separate option but it defaults to vendor/bundle)You can also run
bundle package
to store all the .gem files your app uses invendor/cache
. Runningbundle install
will prefer gems in vendor/cache to gems in other locations.