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/
.
来源:https://stackoverflow.com/questions/11635042/where-does-bundler-store-gems