La gema GeoKit parece una buena opción para lo que le gustaría hacer.
Extrae las interfaces de varios servicios de geocodificación (Yahoo, Google, etc.) y proporciona el código para los cálculos de distancia.
Puede geocodificar las cremalleras para obtener ubicaciones, acceder a la información de la dirección sobre la ubicación y calcular las distancias entre sus ubicaciones.
Aquí está el inicio rápido, descarado copiado de la página vinculada, sólo para darles una idea de cómo funciona la biblioteca:
irb> require 'rubygems'
irb> require 'geokit'
irb> a=Geokit::Geocoders::YahooGeocoder.geocode '140 Market St, San Francisco, CA'
irb> a.ll
=> 37.79363,-122.396116
irb> b=Geokit::Geocoders::YahooGeocoder.geocode '789 Geary St, San Francisco, CA'
irb> b.ll
=> 37.786217,-122.41619
irb> a.distance_to(b)
=> 1.21120007413626
irb> a.heading_to(b)
=> 244.959832435678
irb(main):006:0> c=a.midpoint_to(b) # what's halfway from a to b?
irb> c.ll
=> "37.7899239257175,-122.406153503469"
irb(main):008:0> d=c.endpoint(90,10) # what's 10 miles to the east of c?
irb> d.ll
=> "37.7897825005142,-122.223214776155"
Perfecto, gracias! – user227837