carlhuda/bundler — pull request #2366 by danielsdeleo (2013-03-06 20:10:29+00:00)
Title: Gem Mirror Support (with specs)

This is based on https://github.com/carlhuda/bundler/pull/2062; I rebased that patch on master, made an attempt to refactor the code to match conventions I found elsewhere in the source, and added specs.

### Questions
I found it difficult to write this cleanly given the way the code is currently factored, but it might just be my inexperience with the project. In particular:

* RubygemsMirror class does very little other than provide a static
location to replace URIs with the desired mirror. Should it exist?
* URI normalization is duplicated. Is there a good single location?
* Validation of mirror URIs occurs in Settings, which contains no other
validation code. Is there a more desirable location for this?
* Is there a better solution for case-sensitive URIs?

Finally, the contributing doc doesn't explain what heading to use when you are adding the first feature after a release, so I skipped that to avoid future merge annoyances.