Каков наилучший способ удалить драгоценные камни из проекта rails3?
Я установил все мои драгоценные камни с помощью bundler через Gemfile. Я думал (ошибочно), что если я удалил драгоценный камень из своего Gemfile и запустил "bundle install", то удаленные драгоценные камни будут удалены. Я посмотрел на файл справки bundler и, насколько я могу судить, у него нет способа удалить драгоценные камни.
Я просто использую gem uninstall x для всего? Это может запутать бандлера?
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 (т. е. - все ваши проекты хранят свои драгоценные камни в одном месте). Есть несколько способов сохранить драгоценные камни каждого проекта отдельно, хотя:
rvmgemsets (http://rvm.io/gemsets/basics)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").
Не уверен, почему это произошло, хотя вышеуказанное исправление, похоже, работает.
Comments