rubygems サイトのドキュメントを読みましたが、同じバージョンが既にインストールされている場合でも、「gem install」コマンドは常に再インストールし、すべてを再コンパイルすると思います..
gem install コマンドを必要なときにのみインストールする方法は?
--conservative
フラグにより、gem コマンドが希望どおりに動作するように見えます。
gem install rake --conservative
ドキュメントからgem install --help
:
--conservative すでにバージョン要件を満たしている gem をアップグレードしようとしないでください
プロジェクトの gem インストールを処理するために、 gembundlerのような外部のものを使用したい場合があります。
これに rubygems を直接使用する必要がある場合は、次のようなコマンド
ruby -e "puts `gem install GEMTOINSTALL` if(`gem list --no-versions | grep GEMTOINSTALL`) == ''"
仕事をするでしょう。
を使用するのはそのため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.lock
production
bundle check
Gemfile.lock
bundle install
Gemfile