Каков наилучший способ удаления драгоценных камней из проекта rails3? - PullRequest
95 голосов
/ 12 января 2011

Я установил все свои драгоценные камни, используя упаковщик через Gemfile.Я подумал (по ошибке), что если я удалю драгоценный камень из моего Gemfile и запусту 'bundle install', то удаленные драгоценные камни будут удалены.Я посмотрел на файл справки по компоновщику и, насколько я могу судить, у него нет способа удалить гемы.

Могу ли я просто использовать gem uninstall x для всего?Это может сбить с толку упаковщика?

Ответы [ 7 ]

132 голосов
/ 12 января 2011

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

    gem uninstall gem_name 

как вы указали выше. Так что каждый раз, когда вы запускаете bundler, он перепроверяет зависимости

EDIT - 24.12.2014

Я вижу, что люди продолжают приходить к этому вопросу, я решил добавить немногочто-то.Ответ, который я дал, был для случая, когда вы поддерживаете свои драгоценные камни глобально.Подумайте об использовании менеджера драгоценных камней, такого как rbenv или rvm, для хранения наборов драгоценных камней в определенных проектах.

Это означает, что никакие драгоценные камни не будут установлены на глобальном уровне и, следовательно, при удалении одного из Gemfile вашего проекта и повторном запускеbundle, то он, очевидно, не будет загружен в ваш проект.Затем вы можете запустить bundle clean (с каталогом проекта), и он удалит из системы все те драгоценные камни, которые когда-то были установлены из вашего Gemfile (в том же каталоге), но в данный момент там больше нет в списке ....Короче говоря - он удаляет неиспользованные драгоценные камни.

96 голосов
/ 13 ноября 2011

Это удалит гем, установленный компоновщиком:

bundle exec gem uninstall GEM_NAME

Обратите внимание, что это бросает

ОШИБКА: при выполнении gem ... (NoMethodError) неопределенный метод `delete 'для #

но камень на самом деле удален. При следующем запуске bundle install камень будет переустановлен.

21 голосов
/ 15 октября 2013

В более новых версиях bundler вы можете использовать чистую задачу:

$ bundle help clean
Usage:
    bundle clean

Options:
    [--dry-run=only print out changes, do not actually clean gems]
    [--force=forces clean even if --path is not set]
    [--no-color=Disable colorization in output]
    -V, [--verbose=Enable verbose output mode]

Cleans up unused gems in your bundler directory
$ bundle clean --dry-run --force
Would have removed actionmailer (3.1.12)
Would have removed actionmailer (3.2.0.rc2)
Would have removed actionpack (3.1.12)
Would have removed actionpack (3.2.0.rc2)
Would have removed activemodel (3.1.12)
...

редактирование:

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

  1. rvm наборов камней (http://rvm.io/gemsets/basics)
  2. bundle install с любой из следующих опций: --deployment или --path=<path> (http://bundler.io/v1.3/man/bundle-install.1.html)
1 голос
/ 08 января 2015

Если вы хотите очистить все свои драгоценные камни и начать все сначала

sudo gem clean
1 голос
/ 03 февраля 2014

Кажется, я решил эту проблему, вручную удалив драгоценный камень единорога с помощью bundler («sudo bundler exec gem uninstall unicorn»), а затем восстановил («sudo bundle install»).

Не знаю, почему это произошло, хотя вышеприведенное исправление, похоже, работает.

1 голос
/ 06 января 2012

Вы должны использовать 'gem uninstall gem_name', чтобы удалить драгоценный камень.

Обратите внимание, что если вы установили gem в масштабе всей системы (то есть, установка sudo bundle), то вам может потребоваться указать двоичный каталог с помощью опции -n, чтобы гарантировать удаление двоичных файлов, принадлежащих этому гему. Например

sudo gem uninstall gem_name  -n /usr/lib/ruby/gems/1.9.1/bin
0 голосов
/ 15 апреля 2019

Bundler теперь имеет команду bundle remove GEM_NAME (начиная с v1.17.0, 25 октября 2018 ).

...