Merge pull request #2420 from tmacedo/rubygems_2_compatibility

core: compatibility with rubygems 2.x
This commit is contained in:
Mitchell Hashimoto 2013-11-23 16:44:10 -08:00
commit 63005fc1c6
2 changed files with 15 additions and 2 deletions

View File

@ -1,6 +1,10 @@
require "rubygems" require "rubygems"
require "rubygems/dependency_installer" require "rubygems/dependency_installer"
require "rubygems/format" begin
require "rubygems/format"
rescue LoadError
# rubygems 2.x
end
require "log4r" require "log4r"
@ -26,8 +30,13 @@ module VagrantPlugins
if plugin_name =~ /\.gem$/ if plugin_name =~ /\.gem$/
# If we're installing from a gem file, determine the name # If we're installing from a gem file, determine the name
# based on the spec in the file. # based on the spec in the file.
pkg = Gem::Format.from_file_by_path(plugin_name) pkg = if defined?(Gem::Format)
Gem::Format.from_file_by_path(plugin_name)
else
Gem::Package.new(plugin_name)
end
find_plugin_name = pkg.spec.name find_plugin_name = pkg.spec.name
version = pkg.spec.version
end end
# Install the gem # Install the gem

View File

@ -126,6 +126,10 @@ module VagrantPlugins
if prune_specs.length > 0 if prune_specs.length > 0
env[:gem_helper].with_environment do env[:gem_helper].with_environment do
# due to a bug in rubygems 2.0, we need to load the specifications before removing any
Gem::Specification.to_a
prune_specs.each do |prune_spec| prune_specs.each do |prune_spec|
uninstaller = Gem::Uninstaller.new(prune_spec.name, { uninstaller = Gem::Uninstaller.new(prune_spec.name, {
:all => true, :all => true,