summaryrefslogtreecommitdiff
blob: 763fb6fd1088a4982348b5a85a6ebbf25f8b06b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
--- vagrant-1.3.5/plugins/commands/plugin/action/install_gem.rb
+++ vagrant-1.3.5/plugins/commands/plugin/action/install_gem.rb
@@ -1,6 +1,10 @@
 require "rubygems"
 require "rubygems/dependency_installer"
-require "rubygems/format"
+begin
+  require "rubygems/format"
+rescue LoadError
+  # rubygems 2.0
+end
 
 require "log4r"
 
@@ -26,8 +30,13 @@
           if plugin_name =~ /\.gem$/
             # If we're installing from a gem file, determine the name
             # 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
+            version = pkg.spec.version
           end
 
           # Install the gem
--- vagrant-1.3.5/plugins/commands/plugin/action/prune_gems.rb
+++ vagrant-1.3.5/plugins/commands/plugin/action/prune_gems.rb
@@ -126,6 +126,10 @@
 
           if prune_specs.length > 0
             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|
                 uninstaller = Gem::Uninstaller.new(prune_spec.name, {
                   :all         => true,