From 34f410ada776a94107220fc4d9364ee250f52f6f Mon Sep 17 00:00:00 2001 From: Alex Reisner <alex@alexreisner.com> Date: Mon, 7 Mar 2011 22:40:26 -0500 Subject: [PATCH] Cache request location lookup result. --- lib/geocoder/request.rb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/geocoder/request.rb b/lib/geocoder/request.rb index e2b1a9c8..9409074c 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 -- GitLab