I want to extract a user country name from visitors' IP addresses.
I could get the IP address with remote_ip
. But what could be
the easiest way to get the country name?
It doesn't have to be super accurate. Any ruby library (gem or plugin) to do this?
I want an simple and easy solution for this.
You can use geoip
gem.
environment.rb
config.gem 'geoip'
Download GeoIP.dat.gz
from http://www.maxmind.com/app/geolitecountry
. unzip the file. The below assumes under #{RAILS_ROOT}/db
dir.
@geoip ||= GeoIP.new("#{RAILS_ROOT}/db/GeoIP.dat")
remote_ip = request.remote_ip
if remote_ip != "127.0.0.1" #todo: check for other local addresses or set default value
location_location = @geoip.country(remote_ip)
if location_location != nil
@model.country = location_location[2]
end
end