Rubygems is a great system for maintaining libraries for use with Ruby. It makes it simple to upgrade to new versions of Rails, Capistrano, Mongrel, etc. with a single command.
However, if you use a default Rubygems configuration, each time a developer installs a gem they fetch it from a repository on the Internet. This could result in different developers ending up with different versions of a single gem, depending on which was available when they performed the installation. While this might not make a difference in some cases, with gems like Rails (which change radically between versions), it could result in an application working on one machine and not on another.
Another issue is finding the more obscure gems, which reside in non-standard repositories. In this case, configuring the developers' machines for each non-standard repository can be painful, particularly if you use several such repositories.
The simplest way to give developers access to a consistent repository with all the gems they require is to set up your own gem server. There are two methods for doing this:
If you have a machine with all the required gems installed, you can use the built-in
gem_server
command on that machine to serve up its gems to others.You can serve gems out of Apache by manually setting up a gem repository. This gives you more control over which gems are presented to client machines, but is harder to maintain.
Both techniques are covered in the next two sections.