diff --git a/lib/geocoder/lookups/maxmind_local.rb b/lib/geocoder/lookups/maxmind_local.rb index 0fa5d8673cc7b9fd121765f119bf2368f849c9c5..7a744038b144583a99483b761942c3bb298aa15f 100644 --- a/lib/geocoder/lookups/maxmind_local.rb +++ b/lib/geocoder/lookups/maxmind_local.rb @@ -34,10 +34,10 @@ module Geocoder::Lookup result.nil? ? [] : [result.to_hash] elsif configuration[:package] == :city addr = IPAddr.new(query.text).to_i - q = "SELECT l.country, l.region, l.city + q = "SELECT l.country, l.region, l.city, l.latitude, l.longitude FROM maxmind_geolite_city_location l JOIN maxmind_geolite_city_blocks b USING (loc_id) WHERE b.start_ip_num <= #{addr} AND #{addr} <= b.end_ip_num" - format_result(q, [:country_name, :region_name, :city_name]) + format_result(q, [:country_name, :region_name, :city_name, :latitude, :longitude]) elsif configuration[:package] == :country addr = IPAddr.new(query.text).to_i q = "SELECT country, country_code FROM maxmind_geolite_country diff --git a/lib/maxmind_database.rb b/lib/maxmind_database.rb index 1949e8a6e279210353334a2d49ca730ee90bc1b1..60d3a5ae4c46075c60d533fa660655cd51f34d83 100644 --- a/lib/maxmind_database.rb +++ b/lib/maxmind_database.rb @@ -83,7 +83,7 @@ module Geocoder case package when :geolite_city_csv # use the last two in case multiple versions exist - files = Dir.glob(File.join(dir, "GeoLiteCity_*/*.csv"))[-2..-1] + files = Dir.glob(File.join(dir, "GeoLiteCity_*/*.csv"))[-2..-1].sort Hash[*files.zip(["maxmind_geolite_city_blocks", "maxmind_geolite_city_location"]).flatten] when :geolite_country_csv {File.join(dir, "GeoIPCountryWhois.csv") => "maxmind_geolite_country"}