Каков наилучший способ удалить драгоценные камни из проекта rails3?



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



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

717   6  

6 ответов:

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

    gem uninstall gem_name 

Как вы сказали above.So каждый раз, когда вы запускаете bundler, он будет перепроверять зависимости

EDIT-24.12.2014

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

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

это позволит удалить драгоценный камень, установленный bundler:

bundle exec gem uninstall GEM_NAME

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

ошибка: при выполнении gem ... (NoMethodError) неопределенный метод `Удалить' для #

но драгоценный камень на самом деле удаляется. В следующий раз, когда вы запустите bundle install драгоценный камень будет переустановлен.

С более новыми версиями 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)
...

edit:

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

  1. rvm gemsets (http://rvm.io/gemsets/basics)
  2. bundle install С любым из следующих вариантов: --deployment или --path=<path> (http://bundler.io/v1.3/man/bundle-install.1.html)

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

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

sudo gem uninstall gem_name  -n /usr/lib/ruby/gems/1.9.1/bin

Я, казалось, решил эту проблему, вручную удалив Unicorn gem через bundler ("sudo bundler exec gem uninstall unicorn"), а затем перезагрузив ("sudo bundle install").

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

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

sudo gem clean

Comments

    Ничего не найдено.