Gemfileで未使用のgemを検索して、使用されなくなった参照をクリーンアップできるようにする方法。
6 に答える
テストを実行してから:
gem stale
次のことを行います。
stale コマンドは、インストールされた gem 内のすべてのファイルの最新のアクセス時間を一覧表示します。
このコマンドを使用して、使用しなくなった gem および gem バージョンを検出できます。
gem がなくてもすべてのテストに合格した場合は、gem を削除することを検討する必要があります。
十分なテスト カバレッジ (特に高レベルの機能テスト) があると仮定すると、一度に 1 つの gem を選択的に削除するスクリプトを作成できます。つまり、すべてのテストを N 回実行します。ここで、N は Gemfile 内の gem の数であり、各テストには欠落している gem が 1 つあります。そうすることで、重量を上げていない宝石を取り除くのに役立ちます。
gem_bench gem を使用してGemfileを分析し、起動時に不要な gem を特定できます。そこから、完全に削除できる宝石を特定するために少し分析が必要です。
起動時に削除できる gem のリストを生成するには:
gem 'gem_bench', :group => :console
Gemfileに追加します。- 走る
bundle install
bundle exec rails console
次のコマンドで実行します。a = GemBench.check({verbose: true})
Gemfileで未使用のgemを自動的に見つける方法があるかどうかは疑問です。
時間をかけてアプリケーションを構築してきた人にとっては、何らかの理由で途中で破棄された宝石を手動で簡単に特定できるはずです。
他の誰かから継承されたレガシーアプリケーションの場合、未使用のgemを手動で識別することは非常に困難な作業です。システムに包括的なテストカバレッジがある場合は、Gemfileを変更するたびにテストに合格することを保証しながら、試行錯誤によって未使用のgemを削除するのに役立ちます。
定義bundle clean --force
外の gem を削除するコマンドがあります。Gemfile.lock
bundle-cleanを参照してください。