Bundler запускается из корневого каталога вашего приложения, поэтому он обеспечивает наличие всех необходимых драгоценных камней для работы вашего приложения. Если по какой-то причине гем вам больше не нужен, вам придется запустить
gem uninstall gem_name
как вы указали выше, поэтому каждый раз, когда вы запускаете сборщик, он будет перепроверять зависимости
РЕДАКТИРОВАТЬ - 24.12.2014
Я вижу, что люди все время задают этот вопрос. Я решил кое-что добавить. Ответ, который я дал, был для случая, когда вы поддерживаете свои драгоценные камни глобально. Рассмотрите возможность использования диспетчера драгоценных камней, такого как rbenv или rvm, чтобы сохранить набор драгоценных камней в рамках конкретных проектов.
Это означает, что никакие драгоценные камни не будут установлены на глобальном уровне, и поэтому, когда вы удалите один из Gemfile вашего проекта и повторно запустите пакет, он, очевидно, не будет загружен в ваш проект. Затем вы можете запустить пакетную чистку (с каталогом проекта), и он удалит из системы все те драгоценные камни, которые были когда-то установлены из вашего Gemfile (в том же каталоге), но в данный момент больше не перечислены там .... Короче говоря - удаляет неиспользованные драгоценные камни.
gem uninstall pg
из папки проекта приведет к удалению pg из вашего гемсета глобального / системного уровня вместо сборки сборщикаERROR: While executing gem ... (NoMethodError) undefined method `delete' for #<Bundler::SpecSet:0x00000101142268>
В более новых версиях сборщика вы можете использовать задачу очистки:
редактировать:
Это не рекомендуется, если вы используете глобальный гемсет (т. Е. Все ваши проекты хранят свои драгоценные камни в одном месте). Однако есть несколько способов отделить жемчужины каждого проекта:
rvm
гемсеты ( http://rvm.io/gemsets/basics )bundle install
с любым из следующих вариантов:--deployment
или--path=<path>
( http://bundler.io/v1.3/man/bundle-install.1.html )источник
bundle clean --force
удалено кучу драгоценных камней, которые я не использую в моем текущем проекте, но использую в других моих проектах. Я должен был проложить путь? Простоbundle clean
возвращает «Можно использовать чистую сборку, только если установлен --path или --force». Но такой--path
опции даже нет в справке.clean
Задача не имеет смысла , если вы используете глобальную gemset. Но при желании каждый из ваших проектов может иметь отдельные жемчужины. Вы можете сделать это либо с помощью rvm gemsets ( rvm.io/gemsets/basics ), либо указав путь к драгоценным камням с помощью--path
опцииbundle install
( bundler.io/v1.3/man/bundle-install.1.html )Вы должны использовать gem uninstall gem_name, чтобы удалить драгоценный камень.
Обратите внимание, что если вы установили гем для всей системы (например, sudo bundle install), вам может потребоваться указать двоичный каталог с помощью опции -n, чтобы гарантировать удаление двоичных файлов, принадлежащих гему. Например
источник
Мне казалось, что я решил эту проблему, вручную удалив драгоценный камень единорога через связку ("sudo bundler exec gem uninstall unicorn"), а затем перекомпоновав ("sudo bundle install").
Не уверен, почему это произошло, хотя вышеуказанное исправление, похоже, работает.
источник
Если вы хотите очистить все свои драгоценные камни и начать заново
источник
Bundler теперь имеет
bundle remove GEM_NAME
команду (начиная с v1.17.0, 25 октября 2018 г. ).источник