определение местоположения пользователя через GeoIP на RoR 3

GeoIP позволяет определить по IP его страну и иногда даже город. Вообщем, это полезная штука, которая часто нужна сайту, особенно если он мультиязычный (или мультиязыковой).

установка

Как обычно, в Gemfile надо добавить

gem 'geoip'

после чего забандлить:

bundle install

БД IP

Теперь надо скачать базы стран и городов, если надо, еще можно скачать базу ASNum (что это такое я не знаю). Распакованные базы надо кинуть, например, в lib.

$ cd lib
$ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
$ wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
$ wget http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz
$ gunzip *.gz
$ ls
assets  GeoIPASNum.dat  GeoIP.dat  GeoLiteCity.dat  tasks

эксплуатация

Глядя из консоли Rails, можно привести такой пример использования:

> geoip=GeoIP.new(Rails.root.join('lib/GeoLiteCity.dat'))
> location=geoip.city('google.com')
 => #<struct GeoIP::City request="google.com",
ip="173.194.32.196", country_code2="US",
country_code3="USA", country_name="United States",
continent_code="NA", region_name="CA",
city_name="Mountain View", postal_code="94043",
latitude=37.41919999999999, longitude=-122.0574,
dma_code=807, area_code=650,
timezone="America/Los_Angeles">
> location.city_name
 => "Mountain View"

ссылки

rubydoc: http://rubydoc.info/gems/geoip/1.0.0/frames
github: https://github.com/cjheath/geoip
информация о базах: http://www.maxmind.com/

No Comments.

Leave a Reply

(обязательно)

(обязательно)