Как удалить все камни, установленные с помощью bundle install
в конкретном проекте RoR. Я не хочу удалять драгоценные камни, которые используются другими проектами.
Как удалить все драгоценные камни, установленные с помощью `bundle install`
Ответ 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