Подтвердить что ты не робот

Как найти неиспользуемые драгоценные камни в моем Gemfile

Как найти неиспользуемые драгоценные камни в моем Gemfile, чтобы я мог очищать ссылки, которые больше не используются.

4b9b3361

Ответ 1

Я сомневаюсь, что есть автоматический способ поиска неиспользуемых драгоценных камней в Gemfile.

Для тех, кто создал приложение с течением времени, должно быть легко вручную идентифицировать драгоценные камни, которые по какой-то причине были отброшены по пути.

Для унаследованного приложения, унаследованного от кого-то другого, очень сложно вручную идентифицировать неиспользуемые драгоценные камни. Если для системы имеется обширное тестовое покрытие, это поможет удалить неиспользуемые драгоценные камни методом проб и ошибок, гарантируя при этом, что тесты проходят при каждом изменении в Gemfile.

Ответ 2

Используйте время доступа к файлу linux для просмотра того, что на самом деле используется.

Для этого требуется:

  • жемчужины проекта, выделенные в gemset rvm.
  • gems, установленный на раздел, установленный с параметром atime (strictatime on ubuntu 12.04):

    sudo mount -o remount, strictatime/

  • полный охват тестирования (то есть мы будем полагаться на тестовые прогоны для обновления времени доступа к файлам)

Обратите внимание на время и запустите свои тесты. Затем из вашего гемдира выполните:

ls --time-style long-iso -ltud1 $PWD/*/lib/** | grep "21:44" | sed s/.*gems.// | sed s/.lib.*// | sort -u

Измените 21:44 на время, в течение которого вы проводили тесты.

Ответ 3

Любой драгоценный камень следует рассматривать для удаления, если все тесты проходят в его отсутствие.

Предполагая, что у вас хорошее тестирование - особенно функциональные тесты высокого уровня, вы можете написать script для выборочного удаления одного драгоценного камня за раз. т.е. запустите все ваши тесты N раз, где N - количество драгоценных камней в вашем Gemfile, и каждый тест имеет один недостающий драгоценный камень. Это поможет сорвать драгоценные камни, не потянув их вес.

Ответ 4

Вы можете использовать драгоценный камень gem_bench, чтобы проанализировать ваш Gemfile и определить, какие камни не требуются во время загрузки. Оттуда он просто требует немного анализа, чтобы определить, какие драгоценные камни можно полностью удалить.

Чтобы создать список драгоценных камней, которые можно удалить из времени загрузки:

  • Добавьте gem 'gem_bench', :group => :console в свой Gemfile.
  • Выполнить bundle install
  • Запустите bundle exec rails console с помощью следующей команды:
  • a = GemBench.check({verbose: true})

Ответ 5

Существует команда bundle clean --force для удаления драгоценных камней вне определений Gemfile.lock.

См. packle-clean.

Ответ 6

Запустите свои тесты, а затем:

gem stale

Что делает следующее:

Устаревшая команда перечисляет самое последнее время доступа для всех файлов в установленных вами драгоценных камнях.

Вы можете использовать эту команду для обнаружения драгоценных и драгоценных версий, которые вы больше не используете.