diff --git a/lib/geocoder/request.rb b/lib/geocoder/request.rb index e2b1a9c8db28c09083bc41cdbaadd870ef98aae9..9409074c5b96d851f85a3169c2cc3a20571d34e7 100644 --- a/lib/geocoder/request.rb +++ b/lib/geocoder/request.rb @@ -5,12 +5,15 @@ module Geocoder module Request def location - if ip.nil? or ip == "0.0.0.0" or ip.match /^127/ # don't look up loopback - # but return a Geocoder::Result for consistency - Geocoder::Result::Freegeoip.new("ip" => ip) - else - Geocoder.search(ip).first + unless defined?(@location) + if ip.nil? or ip == "0.0.0.0" or ip.match /^127/ # don't look up loopback + # but return a Geocoder::Result for consistency + @location = Geocoder::Result::Freegeoip.new("ip" => ip) + else + @location = Geocoder.search(ip).first + end end + @location end end end