diff --git a/lib/puppet/provider/rvm_gem/gem.rb b/lib/puppet/provider/rvm_gem/gem.rb index 704c20b0..bad412dc 100644 --- a/lib/puppet/provider/rvm_gem/gem.rb +++ b/lib/puppet/provider/rvm_gem/gem.rb @@ -27,6 +27,9 @@ def gemlist(hash) command << "--local" else command << "--remote" + if resource[:source] && source_uri(resource[:source]).scheme =~ /^http/ + command << '--source' << resource[:source].to_s + end end if name = hash[:justme] @@ -76,7 +79,6 @@ def self.gemsplit(desc) end end - def install(useversion = true) command = gembinary + ['install'] command << "-v" << resource[:ensure] if (! resource[:ensure].is_a? Symbol) and useversion @@ -89,12 +91,7 @@ def install(useversion = true) end if source = resource[:source] - begin - uri = URI.parse(source) - rescue => detail - fail "Invalid source '#{uri}': #{detail}" - end - + uri = source_uri(source) case uri.scheme when nil # no URI scheme => interpret the source as a local file @@ -123,6 +120,15 @@ def install(useversion = true) self.fail "Could not install: #{output.chomp}" if output.include?("ERROR") end + def source_uri(source) + begin + uri = URI.parse(source) + rescue => detail + fail "Invalid source '#{uri}': #{detail}" + end + uri + end + def latest # This always gets the latest version available. hash = gemlist(:justme => resource[:name])