2011-08-14 7 views
0

私はちょうどレールを使い始めていますが、gemfileにgemを追加する必要があるときと、ちょうど"gem install XXX"Gemfileに追加するタイミングとCLI経由でインストールする場合

たとえば、rspecとguard-rspecをインストールする場合。

宝石は、RB-fsevent

インストールし、一部の人々は彼らのgemfileに入れてバンドル:私はいくつかの人々がすることを参照してください。

これは正しい方法で、どちらを選択するかをどのように知っていますか?ありがとう!

答えて

2

アプリケーションで使用するすべてのgemをGemfileに入れてください。

あなたのアプリケーションにのみ役立つすべての宝石は、あなたがGemfileから守ることをお勧めします。

たとえば、画像とデータを保存するにはpaperclipmysql2の宝石が必要です。そのため、それらをGemfileに入れてください。そして、役に立つものをするにはmagic_encodingの宝石が必要です。しかし、あなたがコンソールからまっすぐにそれを作成している限り、あなたのアプリケーションでそれを必要としません。それはあなたのアプリから別にしてください。

コードを書くときにテストフレームワークを使用するので、それらをGemfileに入れます。

passenger gemを使用してアプリをデプロイしますが、コード内で正しく使用する必要はありません.Gemfileに入れないでください。

3

Gemfileは、アプリケーションのすべての依存関係を記録し、管理します。 Gemfileに宝石をリストすると、bundlerはバージョンの競合を分類し、正しいバージョンの宝石がアプリケーションで使用されていることを確認します。

新しい環境でアプリケーションを設定すると(同僚がバージョン管理から変更をプルする場合や本番Webサーバーにデプロイする場合など)、Bundlerはgemファイルを使用して環境が設定されていることを確認できますあなたが開発したのとまったく同じです。

したがって、アプリケーションが依存するもの(アプリケーションから呼び出したコードなど)は、Gemfileに存在する必要があります。これには、テストに使用するライブラリが含まれます(実稼働環境から除外できます)。

アプリケーションの依存関係ではない宝石は、Gemfileに入れる必要はありません。アプリケーションの依存性よりも開発ツールのほうが多い例はguardです。 gemコマンドを使用してインストールできます。

しかし、通常、インストールしたいと思うものは、おそらくGemfileにある必要があります。

ただし、gemコマンドでインストールするかどうかは関係ありません。後でそれをあなたのGemfileに置くことができ、Bundlerは何をすべきかを考え出します。

関連する問題