diff options
author | rohit <rohit.arondekar@gmail.com> | 2012-03-11 12:13:57 +0530 |
---|---|---|
committer | Andre Arko <andre@arko.net> | 2012-03-10 22:48:37 -0800 |
commit | d49f78b141ef99107facb3bba6728e66783e2919 (patch) | |
tree | bc46de21f4030b8742611698d218e34baa4db8ec | |
parent | 66f42495854446316e5d23168905e8e9bf87e74b (diff) | |
download | bundler-d49f78b141ef99107facb3bba6728e66783e2919.tar.gz |
Fix URI exception by encoding gem names for rubygems dependency API #1672
-rw-r--r-- | lib/bundler/fetcher.rb | 3 | ||||
-rw-r--r-- | spec/install/gems/dependency_api_spec.rb | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/bundler/fetcher.rb b/lib/bundler/fetcher.rb index 16954329ba..e4ed6e0bd3 100644 --- a/lib/bundler/fetcher.rb +++ b/lib/bundler/fetcher.rb @@ -158,7 +158,8 @@ module Bundler # fetch from Gemcutter Dependency Endpoint API def fetch_dependency_remote_specs(gem_names) Bundler.ui.debug "Query Gemcutter Dependency Endpoint API: #{gem_names.join(' ')}" - uri = URI.parse("#{@remote_uri}api/v1/dependencies?gems=#{gem_names.join(",")}") + encoded_gem_names = URI.encode(gem_names.join(",")) + uri = URI.parse("#{@remote_uri}api/v1/dependencies?gems=#{encoded_gem_names}") marshalled_deps = fetch(uri) gem_list = Marshal.load(marshalled_deps) deps_list = [] diff --git a/spec/install/gems/dependency_api_spec.rb b/spec/install/gems/dependency_api_spec.rb index cc4be1301d..a9e4a9d257 100644 --- a/spec/install/gems/dependency_api_spec.rb +++ b/spec/install/gems/dependency_api_spec.rb @@ -14,6 +14,16 @@ describe "gemcutter's dependency API" do should_be_installed "rack 1.0.0" end + it "should URI encode gem names" do + gemfile <<-G + source "#{source_uri}" + gem " sinatra" + G + + bundle :install, :artifice => "endpoint" + out.should include("Could not find gem ' sinatra") + end + it "should handle nested dependencies" do gemfile <<-G source "#{source_uri}" |