web-dev-qa-db-ja.com

バンドラーは宝石をどこに保存しますか?

gem installを使用すると、gemは/home/username/.rvm/gems/の下に格納され、gemがインストールされたgemsetの下に格納されることを知っています。

しかし、Bundlerを使用してGemfileでgemを指定した場合、bundle installを実行すると、それらのgemはどこに保存されますか? gem installを使用して既にgemをインストールした場合、バンドルインストールを実行すると、gem installを使用してインストールされた以前のgemを使用しますか?

57
gerky

場合によります。通常の開発セットアップでは、gemを「通常」(gem install fooを実行することで)インストールするときの場所にインストールされ、Bundlerは既にあるgemを再インストールしません。この場所は、rubygems自体の構成方法によって異なります。

--deploymentオプションを指定してバンドルインストールを実行すると、gemはアプリに固有の場所にインストールされます(これを別のオプションとして渡すことができますが、デフォルトはベンダー/バンドルです)

bundle packageを実行して、アプリがvendor/cacheで使用するすべての.gemファイルを保存することもできます。 bundle installを実行すると、vendor/cacheのgemが他の場所のgemよりも優先されます。

50

特定のgemが保存されている場所を知りたい場合は、bundle show <gem-name>。例えば:

user@Host$ bundle show rake
/var/bundle/Ruby/2.1.0/gems/rake-10.4.2
57
James Kingsbery

ここに /usr/local/lib/Ruby/gems/2.1.0/gems/ そしてここ: /usr/local/lib/Ruby/gems/2.1.0/bundler/gems/

3
Robert Reiz