Каков наилучший способ удаления драгоценных камней из проекта 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