2011-01-14 4 views
39

私はそれを手に入れません。私は思った、バンドルは、宝石間のバージョンの競合を解決するために開発されました。だから私はただrequire "bundler/setup"する必要があり、すべてがうまく、バンドルは、すべての私の宝石とその依存関係の正しいバージョンをロードすることを知っている。今、RVMは複数のRubyを管理するのに最適ですが、私はGemset機能を気にする必要がありますか?ここで何かが恋しい?私の開発をさらに容易にすることができますか?たぶん、あなたの中には私に完璧なヒントを与えることができますRVM + Bundlerワークフローの開発と生産の両方のワークフロー。Bundlerを使用するとRVMのGemset機能が気になるのはなぜですか?

また、RVMが別のRubyへの切り替えを開始するときもわかりません。私は自分のプロジェクトに.rvmrcファイルを持っていることがわかりますが、このディレクトリにcdを入れてスイッチを実行する必要がありますか? 、Passenger.prefpaneのおかげで、統合中のMac OSが大きいため

さらに、私は通常、開発のための旅客を使用しています。 RVMでこれをやってもいいですか、それとももっと良い方法がありますか? Passenger.rvmrcファイルを認識し、正しいGemsetに切り替えますか?

+2

はい、rvmはディレクトリを変更するときに.rvmrcファイルをチェックするシェル関数としてcdを再定義します。 – Sam

答えて

20

Bundlerを使用するとRVMのGemset機能が気になるのはなぜですか?

すべきではありません。

さて、あなたはしたい場合は、ケア、約もちろん、私はより良い「あなたがする必要はありません。」と言う必要がありますすることができます

私はちょうどpodcast interview with one of the Bundler core team membersに耳を傾けました.Bundlerを使用し始めて以来、彼は冗長であるためGemsetsの使用をやめました。あなたがあなたのバンドラバージョンを変更する必要が予想される場合は、間違いなくgemsetsを使用する必要があります

Here's a blog post that discusses the same issue, with some examples.

+2

しかし、現時点では、RVMとバンドラはうまく連携していません。最新の詳細については、http://beginrescueend.com/integration/bundler/を参照してください。今は、宝石を共有する異なるプロジェクトでルビーバージョンを切り替える際に、セグメンテーションフォルトを避けるためにgemsetsを使用しています。 – foz

6

私が従来のコードを扱っているときや、バンドルルートの理由を問わず、他のレール以外のルビープロジェクトをフォークしている場合、gemsetsはすごく素晴らしいものです。私はまた、宝石を開発する際に貴重な宝石を見つける。新しく構築された宝石を切り替えてテストするための複数のテスト環境を用意しています。

旅客は私の知る限り.rvmrcを読み取ることはできません。あなたは私の知る限り、異なるルビーの下で旅客に異なるプロジェクトを実行することはできません。私のデフォルトのレール設定は、グローバルジェムセットでちょうどbundlerrakeです。私はバンドラーがそこから引き継ぎ、あなたが描写したのと同じように、プロジェクトの賢明な残りの部分を管理するようにしました。かなりうまくいく。

+0

これはあなたのプロジェクトごとに独立した宝石セットを持っていることを意味しますか?私はあなたの "デフォルトのレール設定"について話していることを意味します。ある時点では、この設定はおそらくプロジェクト特有の状態に進化するでしょう。あなたはその時までにカスタム宝石を持っていますか?開発マシンでアプリケーションをどのように実行しますか? – t6d

+0

はい、私は全ての私の非レールプロジェクトに独立した宝石セットを持っています。すべての宝石プロジェクトのための要件、私はバンドラを処理させる - 例えば、 'バンドルexecレールサーバー'または 'バンドルexec rake'。したがって、私のGemfilesは、レールプロジェクトが進化するにつれて進化しますが、「レール」ジェムセットは進化しません。 – anshul

1

。そして、あなたはRailsアプリ(wirbleなど)に特に関係のない宝石を管理するためにgemsetsを使うことができます。

関連する問題