Подтвердить что ты не робот

Как удалить все драгоценные камни, установленные с помощью `bundle install`

Как удалить все камни, установленные с помощью bundle install в конкретном проекте RoR. Я не хочу удалять драгоценные камни, которые используются другими проектами.

4b9b3361

Ответ 1

Поскольку мы используем ruby, вы можете сделать что-то вроде этого, я думаю:

bundle list | ruby -e 'ARGF.readlines[1..-1].each {|l| g = l.split(" ");  puts "Removing #{g[1]}"; `gem uninstall --force #{g[1]} -v #{g[2].gsub(/\(|\)/, "")}`; }'

ПРИМЕЧАНИЕ. Только слегка проверенные.

Ответ 2

Нет никакого простого способа удалить все драгоценные камни - не говоря уже об удалении тех, которые находятся в определенном комплекте. Вы можете попробовать некоторые из этих предложений: Удалить все установленные камни в OSX?

Адаптируется к команде bundle show вместо gem list


В будущем попробуйте использовать этот подход:

Если вы устанавливаете свой локальный узел локально, как пример ниже, драгоценные камни не будут установлены в вашей глобальной коллекции gem. Затем вы можете легко удалить папку установки, чтобы удалить все драгоценные камни пакета.

# install gems to project_root/vendor/bundle
bundle install --path vendor/bundle --without test

Параметр пути сохраняется в .bundle/config, как и все остальные, и любые последующие вызовы bundle install будут использовать его, если вы не установите его на что-то еще или не удалите из конфигурации!

Ответ 3

Вы можете использовать (как говорит Тобиас, если вы используете RVM)

rvm gemset empty [gemset]

Непосредственно на gemset, например

rvm gemset empty [email protected]

Ответ 4

Если вы используете rvm, вы можете, конечно, просто удалить и переустановить версию ruby, под которой вы установили драгоценные камни, т.е.

% rvm use
Using /home/ubuntu/.rvm/gems/ruby-2.2.1
% rvm uninstall 2.2.1
ruby-2.2.1 - #removing rubies/ruby-2.2.1..
ruby-2.2.1 - #removing default ruby interpreter.............
% rvm install 2.2.1
Searching for binary rubies, this might take some time.
Found remote file https://rvm_io.global.ssl.fastly.net/binaries/ubuntu/14.0/x86_64/ruby-2.2.1.tar.bz2
Checking requirements for ubuntu.
Requirements installation successful.
ruby-2.2.1 - #configure
ruby-2.2.1 - #download
ruby-2.2.1 - #validate archive
ruby-2.2.1 - #setup 
ruby-2.2.1 - #gemset created /home/ubuntu/.rvm/gems/[email protected]
ruby-2.2.1 - #importing gemset /home/ubuntu/.rvm/gemsets/global.gems..............................
ruby-2.2.1 - #generating global wrappers........
ruby-2.2.1 - #gemset created /home/ubuntu/.rvm/gems/ruby-2.2.1
ruby-2.2.1 - #importing gemsetfile /home/ubuntu/.rvm/gemsets/default.gems evaluated to empty gem list
ruby-2.2.1 - #generating default wrappers........

и теперь у вас есть рубиновая среда, чистая от любых установленных драгоценных камней.

Ответ 5

Найдено решение для удаления всех драгоценных камней, кроме стандартных:

Крит delete_gems.rb с

#!/usr/bin/env ruby
# Remove all gems EXCEPT defaults :)

`gem list -d`.split(/\n\n^(?=\w)/).each do |data|
  match = data.match(/(?<name>([^\s]+)) \((?<versions>.*)\)/)
  name = match[:name]
  versions = match[:versions].split(', ')

  if match = data.match(/^.*\(([\d\.]*),? ?default\): .*$/)
    next if match[1].empty? # it the only version if this match is empty
    versions.delete(match[1] || versions[0])
  end

  versions.each { |v| system "gem uninstall -Ix #{name} -v #{v}" }
end

Запустите этот script:

sudo chmod 1777 delete_gems.rb
./delete_gems.rb

Все драгоценные камни будут удалены, кроме стандартных. Здесь ссылка на оригинальное решение http://zanshin.net/2013/06/10/how-to-delete-all-ruby-gems/

Ответ 6

На самом деле это так просто, как

gem list --no-versions | xargs gem uninstall -a

Если вы не используете RVM/RBENV, вы можете столкнуться с проблемой, когда gem пытается удалить системную библиотеку, которая может выйти из строя. В этом случае вызовите команду uninstall один за другим, чтобы пропустить их.

gem list --no-versions | xargs -n1 gem uninstall -a