Каков наилучший способ удаления драгоценных камней из проекта rails3?
Я установил все свои драгоценные камни, используя bundler через Gemfile. Я подумал (ошибочно), что если бы я удалил драгоценный камень из своего Gemfile и запустил "bundle install", чтобы удаленные драгоценные камни были удалены. Я просмотрел файл справки поставщика и, насколько я могу судить, у него нет способа удалить драгоценные камни.
Я просто использую gem uninstall x для всего? Это собирается запутать связку?
Ответы
Ответ 1
Bundler запускается из корневого каталога приложения, поэтому он гарантирует, что все необходимые камни присутствуют, чтобы заставить ваше приложение работать. Если по какой-то причине вам больше не нужен драгоценный камень, вам придется запустить
gem uninstall gem_name
как вы сказали выше. Поэтому каждый раз, когда вы запускаете bundler, он перепроверяет зависимости
EDIT - 24.12.2014
Я вижу, что люди продолжают приходить к этому вопросу, я решил кое-что добавить.
Ответ, который я дал, был для случая, когда вы поддерживаете свои драгоценные камни глобальными. Подумайте о том, как использовать gem manager, например rbenv или rvm, для сохранения наборов драгоценных камней в определенных проектах.
Это означает, что никакие драгоценные камни не будут установлены на глобальном уровне, поэтому, когда вы удаляете один из вашего проекта Gemfile и повторно запущенный пакет, он, очевидно, не будет загружен в ваш проект. Затем вы можете запустить пул clean (с помощью dir проекта), и он удалит из системы все те драгоценные камни, которые когда-то были установлены из вашего Gemfile (в том же каталоге), но в это время больше не указаны там.... длинный рассказ короткий - он удаляет неиспользованные драгоценные камни.
Ответ 2
Это удалит гем, установленный компоновщиком:
bundle exec gem uninstall GEM_NAME
Обратите внимание, что это бросает
ОШИБКА: при выполнении gem... (NoMethodError) неопределенный метод 'delete' для # <Bundler :: SpecSet: 0x00000101142268>
но драгоценный камень на самом деле удален. При следующем запуске bundle install
гем будет переустановлен.
Ответ 3
С более новыми версиями 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)
...
изменить:
Это не рекомендуется, если вы используете глобальный гемсет (т.е. все ваши проекты сохраняют свои драгоценные камни в одном месте).
Есть несколько способов сохранить каждый отдельный камень проекта отдельно:
Ответ 4
Для удаления драгоценного камня необходимо использовать "gem uninstall gem_name".
Обратите внимание, что если вы установили gem-систему (например, sudo bundle install), вам может потребоваться указать двоичный каталог с использованием опции -n, чтобы убедиться, что бинарные файлы, принадлежащие камню, удалены. Например
sudo gem uninstall gem_name -n /usr/lib/ruby/gems/1.9.1/bin
Ответ 5
Мне казалось, что это удалось решить, вручную удалив драгоценный камень единорога через спутник ( "sudo bundler exec gem uninstall unicorn" ), затем переустановить ( "sudo bundle install" ).
Не уверен, почему это произошло, хотя это исправление действительно работает.
Ответ 6
Если вы хотите очистить все свои драгоценные камни и начать более
sudo gem clean
Ответ 7
В Bundler теперь есть команда bundle remove GEM_NAME
(начиная с v1.17.0, 25 октября 2018 года).