2016-05-28 7 views
0

私はRails Wayの本を読んでいました。また、 "バンドルパッケージ"の実行についても説明します。これはあなたのアプリがベンダー/キャッシュで使うすべての.gemファイルを保存します。バンドルインストールを実行すると、他の場所にある宝石にベンダー/キャッシュ内の宝石が優先されます。私は、RVMを使用していますので、私はRVMでこれをテストした:rvmのバンドルパッケージ

rvm gemset create rent_prototype 
rvm use [email protected]_prototype 
gem install rails 
rvm gemdir 
/home/viggy/.rvm/gems/[email protected]_prototype 
$ cd /home/viggy/.rvm/gems/[email protected]_prototype 
$ ls -l devise-4.1.1 
ls: cannot access devise-4.1.1: No such file or directory 

私はRVMとgemsetを作成し、工夫の宝石がインストールされている場合にチェックの上、それはGemfileではないので、それはありませんでした。今ではバンドルパッケージを使用しています:

$ cd - 
$ bundle package 

Updating files in vendor/cache 
    * rake-11.1.2.gem 
    * i18n-0.7.0.gem 
    * json-1.8.3.gem 
    ... 
$ cd vendor/cache 
$ ls -l devise-4.1.1 
ls: cannot access devise-4.1.1: No such file or directory 

もちろん、ベンダー/キャッシュにもデベロッパの宝石はありません。

それから私は、Gemfileを変更し、追加します。

gem 'devise' 

は、その後、私はbundle installを実行します。工夫がインストールされた場所

今私は確認してください。

$ bundle show devise 
/home/viggy/.rvm/gems/[email protected]_prototype/gems/devise-4.1.1 
$ cd vendor/cache 
$ ls -l devise-4.1.1 
ls: cannot access devise-4.1.1: No such file or directory 

私は宝石をインストールするときに、それはRVMフォルダにインストールされます。それは他の場所へのベンダー/キャッシュを好まない。その場合、rvmを使用しているときに "バンドルパッケージ"の目的は何ですか?

+0

deviseを追加した後にバンドルパッケージを実行しませんでした。それがキャッシュにない理由は何ですか、あなたはインストールを実行しました。 – Doon

答えて

0

私のコメントによると、 devemをgemファイルに追加した後にパッケージを実行しなかったため、ベンダー/キャッシュに含まれていません。バンドルインストールでは、システムに宝石をインストールする必要があります。

bundler website

からパッケージのコマンドが./vendor/cacheにバンドルにあなたの宝石用.gemファイルをコピーします。その後、バンドルインストールを実行すると、 Bundlerはrubygems.orgのものよりもキャッシュ内の宝石を使用します。

また、そのディレクトリをソース コントロールリポジトリにチェックインすると、ソースをチェックアウトする人は 追加の宝石をダウンロードすることなくインストールできます。

rvm gemsetとbundlerは、一連のgem /バージョンを使用/アクティブ化するのと同じ問題を解決します。 bundlerを使うと、rvm gemsetsを使う必要がなくなり、gemfileがそれを処理します。しかし、これは常にそうではありませんでした。

+0

rvmはrubyのバージョンを管理するためだけに使用することをお勧めします。また、gemsetを管理する上で、bundleを使用する必要がありますか? – Donato

+0

私はたくさんの異なったプロジェクトで多くの異なるバージョンのgemがインストールされているので、まだgemsetsを使っています。すべての私のプロジェクトで使用される宝石は、グローバルな宝石セット(バンドルラーやレーキなど)に残っていて、その後は残りのプロジェクトの宝石セットになります。この方法では、私はデフォルトの宝石セットの異なるバージョンの100個の宝石で巻き上げることはありません – Doon