7

そのため、Rails プロジェクトごとに個別の rvm gemset を作成しました。どちらも同じバージョンの ruby​​ を使用してい1.9.3ます。

これによりbundle install、両方のプロジェクトに新しい一連の gem が完全にインストールされます。他のプロジェクトが、他の gemset にインストールされているまったく同じバージョンの gem を持っているかどうかは問題ではありません。これは予想される動作だと思いますが、ハード ドライブの容量と帯域幅を非効率的に使用しているように思えます。

これらの gem の一部を手動でグローバル gemset に移動できることはわかっていますが、それは面倒で、特定のプロジェクトの依存関係が変更された場合に壊れやすいように思えます。

物事を整理したり、gem バージョンが既にインストールされている場合に rvm を自動検出してそのコピーを使用したりするためのより良い方法はありますか?

または、私が使用すべきRVMのより良い代替手段はありますか。

4

1 に答える 1

5

これは仕様によるものです。Gemsets を使用すると、使用するライブラリを完全に分離できるため、プロジェクト間で偶発的な相互作用が発生することはありません。分離が必要ない場合は、gemset なしでインタープリターを使用できます。

rvm use 1.9.3

すべてのプロジェクトで使用する gem がいくつかある場合は、インタープリターのグローバル gemset に切り替えるだけです。

rvm use 1.9.3@global

gem install共通の gem を削除すると、gemset にいるときにプロジェクトごとに再インストールされることはなくなります。

gemset は、帯域幅や HD スペースの点で明らかに効率的ではありませんが、プロジェクトのすべての依存関係を簡単に吹き飛ばして、bundleいつでも最初からやり直すことができるため、非常に便利です。また、依存関係のバージョンを誤って変更することも完全に排除します。gemset が気に入らない場合は、gemset でバージョンを正しく指定することで、gemsetGemfileなしでこれをかなり進めることができます。

代替手段としては、rbenvが私がチェックする主なものです。

于 2012-06-04T22:28:50.957 に答える