Instead of using geocoder and fetching the info from a 3rd party web service, you could use a local installation of the geoip database from maxmind and the geoip-c gem.
Given that the example use is to track where clicks are coming from, those three sound like dealbreakers.