バンドルを更新すると、古いバージョンのgemがいくつかインストールされます。そのgemの新しいバージョンがインストールされているためです。bundle
実行可能ファイルの下にそのようなコマンドはありませんbundle clean
。これらの古い宝石をどうやって取り除くのですか?
これは私のRailsアプリでスラグのサイズを小さくする試みです。
回答:
Bundler 1.1以降を使用bundle clean
している場合は、想像どおりにを使用できます。これは、使用している場合は冗長ですbundle install --path
(Bundlerは--pathで指定した場所を管理するため、古いgemを削除する責任を負います)が、Bundlerを使用してgemをシステムgemとしてインストールした場合、システムgem bundle clean --force
は削除されませんGemfileで必要です。明白な注意点:GemfileにないシステムGemに依存する他のアプリがある場合は、これを行わないでください!
Pat Shaughnessyは、bundle clean
Bundler 1.1でのその他の新しい説明について説明しています。
RVMを使用している場合は、gemsをgemsetsにインストールできます。このようにして、完全なクリーンアップを実行したい場合は、gemsetを削除するだけで、インストールされているすべてのgemが削除されます。もう1つのオプションは、使用していないgemをアンインストールしてbundle install
コマンドを再実行することです。
bundlerはプロジェクトごとのgemバージョン管理ツールであることを意図しているため、bundle clean
コマンドは提供されません。そうすることは、他のプロジェクトに関連する宝石を削除する可能性もあるので、望ましくありません。つまり、おそらくbundlerは、gemディレクトリの管理に使用するのに不適切なツールです。私の個人的な推奨事項は、RVM宝石セットを使用して、特定のプロジェクトまたはRubyバージョンで宝石をサンドボックス化することです。
私はあなたに宝石をインストールすると思いますvendor/bundle
か?もしそうなら、なぜすべての宝石を削除してクリーンアップしbundle install
ないのですか?
非常に同じ質問への回答を検索しているときに、gem_unusedに遭遇しました。
また、この記事を読むこともできます:http : //chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
ソースコードはGitHubで入手できます:https : //github.com/ apolzon / gem_unused
Gemfileから古いgemを削除するだけです。Herokuについて話している場合(言及していません)、スラッグは新しいリリースごとにコンパイルされ、そのファイルの現在のコンテンツを使用します。
bundle clean --force
は、グローバルgemには触れず、現在のgemsetにあるものだけに触れることに注意してください。したがってbundle clean --force
、と同じ結果が生成され、その後にがrvm gemset empty
続きbundle install
ます。