13Апр
определение местоположения пользователя через GeoIP на RoR 3
Posted by lukmus | Category: ruby & ruby on rails | No Comments
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/