打包商在哪里存储gem?

我知道在使用gem install ,gem会被保存在/home/username/.rvm/gems/下,gem的安装位置在gemset下。

但是,如果我使用Bundler并在Gemfile中指定gem,那么当我运行bundle install时,这些gems将被存储在哪里? 如果我已经使用gem install安装了gem,如果我运行bundle install,它会使用以前使用gem install安装的gem install吗?

这取决于。 在通常的开发环境中,当你安装一个“正常”的gem时,它们会被安装在那里,bundler将不会重新安装已经存在的gem。

如果使用--deployment选项运行bundle install,则gem将安装在您的应用程序唯一的位置(您可以将其作为单独的选项传递,但默认为vendor / bundle)

您还可以运行bundle package来存储应用程序在vendor/cache使用的所有.gem文件。 运行bundle install会将供应商/caching中的gem选为其他位置的gem。

如果你想找出一个特定的gem的存储位置,你可以运行bundle show <gem-name> 。 例如:

 user@host$ bundle show rake /var/bundle/ruby/2.1.0/gems/rake-10.4.2 

这里是/usr/local/lib/ruby/gems/2.1.0/gems/ ,这里是: /usr/local/lib/ruby/gems/2.1.0/bundler/gems/