バンドルを更新した後、古いバージョンのgemがあります。これは、そのgemの新しいバージョンがインストールされているためです。 bundle
実行可能ファイル、つまりbundle clean
の下にはそのようなコマンドはありません。これらの時代遅れの宝石をどのように取り除くのですか?
これは、私のRailsアプリでスラッグのサイズを縮小する試みです。
Bundler 1.1以降を使用している場合、想像したとおりにbundle clean
を使用できます。 bundle install --path
(Bundlerは--pathで指定した場所を管理するため、古いgemを削除する責任があります)を使用している場合、これは冗長ですが、Bundlerを使用してgemをシステムgemとしてインストールした場合はbundle clean --force
は、Gemfileに不要なシステムgemをすべて削除します。驚くほど明らかな警告:Gemfileにないシステムgemに依存する他のアプリがある場合は、これをしないでください!
Pat Shaughnessyには bundle clean
およびbundler 1.1のその他の新しい追加 の説明があります。
RVMを使用している場合、現在のgemsetにrvm gemset empty
を使用できます-このコマンドは、現在のgemsetにインストールされているすべてのgemを削除します(gemset自体はそのままです)。次に、bundle install
を実行して、gemsの実際のバージョンをインストールします。また、rvm gemset empty
の間にrakeやbundlerなどの一般的なgemを削除しないでください(その場合は、gem install
の前にbundle install
を介して手動でインストールしてください)。
RVMを使用している場合、gemsを gemsets にインストールできます。そうすれば、完全なクリーンアップを実行するときに、gemsetを削除するだけで、インストールされているすべてのgemが削除されます。他のオプションは、単に未使用のgemをアンインストールし、bundle install
コマンドを再実行することです。
Bundlerはプロジェクトごとのgemバージョン管理ツールであるため、bundle clean
コマンドは提供しません。そうすることは、他のプロジェクトに関連する宝石も削除する可能性を意味しますが、これは望ましくありません。つまり、おそらくbundlerは、gemディレクトリの管理に使用するのに間違ったツールです。個人的には、RVM gemsetsを使用して、特定のプロジェクトまたはRubyバージョンのgemをサンドボックス化することをお勧めします。
正直なところ、バンドラーの循環依存関係に問題がありました。最善の方法はrm -rf .bundle
です。頭痛を避けて、ハンマーを使用してください。
まったく同じ質問の答えを探しているときに、 gem_unused に出会いました。
この記事もご覧ください: http://chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
ソースコードはGitHubで入手できます。 https://github.com/apolzon/gem_unused
Gemをvendor/bundle
にインストールすると仮定しますか?もしそうなら、なぜすべての宝石を削除してきれいなbundle install
をしないのですか?
古いGemをGemfileから削除するだけです。 Herokuについて話している場合(それについては言及しませんでした)、スラッグは新しいリリースごとにコンパイルされ、そのファイルの現在の内容を使用します。