12

rubygems サイトのドキュメントを読みましたが、同じバージョンが既にインストールされている場合でも、「gem install」コマンドは常に再インストールし、すべてを再コンパイルすると思います..

gem install コマンドを必要なときにのみインストールする方法は?

4

3 に答える 3

29

--conservativeフラグにより​​、gem コマンドが希望どおりに動作するように見えます。

gem install rake --conservative

ドキュメントからgem install --help

--conservative すでにバージョン要件を満たしている gem をアップグレードしようとしないでください

于 2013-05-09T21:48:24.303 に答える
2

プロジェクトの gem インストールを処理するために、 gembundlerのような外部のものを使用したい場合があります。

これに ruby​​gems を直接使用する必要がある場合は、次のようなコマンド

ruby -e "puts `gem install GEMTOINSTALL` if(`gem list --no-versions | grep GEMTOINSTALL`) == ''"

仕事をするでしょう。

于 2013-01-24T14:06:08.160 に答える
1

を使用するのはそのためbundle installです。このコマンドはgemfile、gem を調べます。

この Gemfile にはいくつかのことが書かれています。まず、バンドラーはhttp://rubygems.orgの Gemfile で宣言された gem を探す必要があると述べています。複数の Rubygems ソースを宣言することができ、バンドラーはソースを宣言した順序で gem を探します。

Bundler はrubygems.org(および宣言したその他のソース) に接続し、指定した要件を満たす必要なすべての gem のリストを見つけます。内のすべての gem にはGemfile独自の依存関係があるため (そして、それらのいくつかには独自の依存関係があります)、 で実行bundle installするGemfileとかなりの数の gem がインストールされます。

必要な gem のいずれかが既にインストールされている場合は、Bundlerそれらを使用します。必要な gem をシステムにインストールした後、bundler は、インストールしたすべての gem とバージョンのスナップショットGemfile.lockを に書き込みます。

を実行するbundle installと、bundler は (デフォルトで) gems のシステム リポジトリにgem をインストールします。これは、それらが に表示されることを意味しgem listます。さらに、多数のアプリケーションを開発している場合、アプリケーションごとに共通の gem をダウンロードしてインストールする必要はありません。これは開発には適していますが、展開にはやや問題があります。

展開シナリオでは、展開する Unix ユーザーは、gem をシステムの場所にインストールするためのアクセス権を持っていない場合があります。ユーザーがそうしても (または sudo を使用しても)、アプリケーションを起動するユーザーはそれらにアクセスできない場合があります。

その結果、バンドラー--deploymentには、デプロイメント環境でバンドラーを使用するためのベスト プラクティスをカプセル化するフラグが付属しています。

フラグには、 (開発およびステージングで) 実行したテストが、実際に に配置したコードを反映していることを確認するために、--deployment最新の状態が必要です。アプリケーションをデプロイする前に実行して、最新であることを確認できます。最後に. _ _Gemfile.lockproductionbundle checkGemfile.lockbundle installGemfile

于 2013-01-24T14:25:30.990 に答える