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
?
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 in vendor/cache
. Running bundle install
will prefer gems in vendor/cache to gems in other locations.
If you want to find out where a particular gem is stored you can run bundle show <gem-name>
. For example:
user@host$ bundle show rake
/var/bundle/ruby/2.1.0/gems/rake-10.4.2
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 from git
:
gem 'my-gem', git: "https://github.com/x/y.git"
I assume this is so that custom installations don't conflict with installations from a gem server.