Gemfiles require at least one gem source, in the form of the URL for a RubyGems server. There are shortcuts for the default gem server, so all of these sources are the same.
source :rubygems
source ''
source :rubyforge
source ''
source :gemcutter
source ''

Declare the gems that you need, including version numbers. Specify versions using the same syntax that RubyGems supports for dependencies.
gem 'nokogiri'
gem 'rails', '3.0.0.beta3'
gem 'rack',  '>=1.0'
gem 'thin',  '~>1.1'

If a gem's main file is different than the gem name, specify how to require it.
gem 'rspec', :require => 'spec'
gem 'sqlite3'

Git repositories are also valid gem sources, as long as the repo contains one or more valid gems. Specify what to check out with :tag, :branch, or :ref. The default is the master branch.
gem 'nokogiri', :git => '', :branch => '1.4'

git '', :tag => 'v0.13.4'
gem 'thor'
Learn More: Git
If you are actively developing a gem, perhaps checked out from Github, you can use the gem directly from its directory on your filesystem.
gem 'nokogiri', :path => '~/sw/gems/nokogiri'

Dependencies can be placed into groups, to be ignored at install-time or required all at once.
gem 'wirble', :group => :development
gem 'ruby-debug', :group => [:development, :test]

group :test do
  gem 'rspec'
Learn More: Groups
Edit this document on GitHub if you caught an error or noticed something was missing.